init: ts-shiori — official ghcr.io/go-shiori/shiori:v1.7.0

Bookmark manager (Go, single binary). Single container, SQLite in a
named volume. Default admin (shiori/gopher) is auto-created on first run.

Known issue: Shiori v1.7.0's SPA wizard detection panics with HTTP 500
on the first /api/bookmarks request when no session exists. The setup
wizard does NOT appear on first visit — log in with the default
credentials above and change the password immediately.

Port 8080 inside the sidecar namespace. Optional SHIORI_HTTP_SECRET_KEY
env var would persist sessions across restarts (not enabled by default).
This commit is contained in:
peskyadmin
2026-08-02 23:37:50 -04:00
parent e71e6f8bf5
commit 7eee40203a
5 changed files with 54 additions and 89 deletions

View File

@@ -1,11 +1,11 @@
# ==========================================
# REQUIRED: Tailscale sidecar (all ts-* services)
# ts-shiori — Tailscale sidecar + Shiori bookmark manager
# ==========================================
services:
{{service}}-ts:
shiori-ts:
image: tailscale/tailscale:latest
hostname: {{service}}
container_name: {{service}}-ts
hostname: shiori
container_name: shiori-ts
environment:
- TS_AUTHKEY=${TS_AUTHKEY}
- TS_LOGIN_SERVER=${TS_LOGIN_SERVER}
@@ -21,47 +21,20 @@ services:
restart: unless-stopped
# ==========================================
# REFERENCE: Example database (REMOVE this section if your service
# uses SQLite or has no database requirement)
# Shiori app (single container, SQLite)
# Uses the official ghcr.io/go-shiori/shiori image.
# SQLite by default; data stored in a named volume.
# ==========================================
db:
image: postgres:15
shiori:
image: ghcr.io/go-shiori/shiori:v1.7.0
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DB}
- SHIORI_DIR=/srv/shiori
volumes:
- {{service}}-db-data:/var/lib/postgresql/data
- shiori-data:/srv/shiori
depends_on:
- {{service}}-ts
network_mode: service:{{service}}-ts
restart: unless-stopped
# ==========================================
# REQUIRED: Your service container
# Customize the image, env vars, and volumes for your specific app
# ==========================================
{{service}}:
image: {{service}}/{{service}}:latest
environment:
# Database (remove these lines if your service has no database)
{{SERVICE}}_DATABASE_TYPE: postgres
{{SERVICE}}_DATABASE_HOST: 127.0.0.1
{{SERVICE}}_DATABASE_USER: ${POSTGRES_USER}
{{SERVICE}}_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
{{SERVICE}}_DATABASE_DATABASE: ${POSTGRES_DB}
# Service configuration (customize these for your app)
{{SERVICE}}_SERVICE_JWTSECRET: ${{{SERVICE}}_SERVICE_JWTSECRET}
{{SERVICE}}_SERVICE_PUBLICURL: ${{{SERVICE}}_SERVICE_PUBLICURL}
{{SERVICE}}_SERVICE_FRONTENDURL: ${{{SERVICE}}_SERVICE_FRONTENDURL}
# Add or remove more app-specific env vars here as needed
volumes:
- ./{{service}}/files:/app/files
depends_on:
- {{service}}-ts
network_mode: service:{{service}}-ts
- shiori-ts
network_mode: service:shiori-ts
restart: unless-stopped
volumes:
{{service}}-db-data:
shiori-data: