Wraps the existing manually-run Vikunja instance on PIHA in the standard service layout. No deploy — definition only, for review. - services/vikunja/: docker-compose.yml (vikunja + postgres:16-alpine), service.yaml, README, healthcheck, config.yml (OIDC, secret-free), .env.example. Real .env stays gitignored. - Pins EXISTING named volumes (vikunja_vikunja_db, vikunja_vikunja_files) so DB + uploaded files survive cutover. - extra_hosts forgejo.okit.pl=192.168.31.5 (npm on PIHA) so OIDC discovery resolves over LAN instead of flaky public DNS. - OIDC client secret injected via env (VIKUNJA_AUTH_OPENID_PROVIDERS_ FORGEJO_CLIENTSECRET); config.yml keeps trailing-slash authurl/redirecturl. - Registers vikunja in hosts/piha/services.yaml + inventory/topology.yaml, plus hosts/piha/runtime/vikunja override (advisory mem_limits). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1 KiB
YAML
32 lines
1 KiB
YAML
service:
|
|
name: vikunja
|
|
owner_node: piha
|
|
exposure: private # reachable on Tailscale; public via npm reverse proxy
|
|
dependencies:
|
|
- forgejo # OIDC identity provider (forgejo.okit.pl)
|
|
ports:
|
|
- container: 3456
|
|
host: 3456
|
|
protocol: tcp
|
|
healthcheck:
|
|
type: http
|
|
endpoint: http://localhost:3456/api/v1/info
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
restart_policy: unless-stopped
|
|
persistence:
|
|
# Data lives in pre-existing Docker named volumes — do NOT move/rename.
|
|
paths:
|
|
- vikunja_vikunja_db # postgres data -> /var/lib/postgresql/data
|
|
- vikunja_vikunja_files # uploads -> /app/vikunja/files
|
|
runtime:
|
|
config_files:
|
|
- config.yml # OIDC provider metadata (secret-free, in git)
|
|
- .env # secrets (gitignored, supplied per node)
|
|
env_vars:
|
|
- POSTGRES_PASSWORD
|
|
- VIKUNJA_DATABASE_PASSWORD
|
|
- VIKUNJA_SERVICE_JWTSECRET
|
|
- VIKUNJA_AUTH_OPENID_PROVIDERS_FORGEJO_CLIENTSECRET
|