- test_status: verified - Add prominent gotcha: USE NAMED VOLUMES, not bind mounts macOS Docker Desktop has gRPC-FUSE UID remapping that breaks chown calls inside containers. Bind mount chown permissions cannot be resolved cleanly. Named volumes work identically on macOS and Linux without any permission workarounds.
496 lines
13 KiB
YAML
496 lines
13 KiB
YAML
---
|
|
# ts-CATALOG: canonical deployment characteristics for all DAM ts-* services.
|
|
# Read by skill:ts-app-deploy to make smart, per-app decisions about
|
|
# compose configuration (which DB service to include, what port to use,
|
|
# what env vars to set, etc.).
|
|
|
|
schema_version: 1
|
|
|
|
# Allowed enum values for each categorization field.
|
|
# Keep these in sync if you add new categories.
|
|
enums:
|
|
db:
|
|
- none
|
|
- sqlite
|
|
- postgres
|
|
- mysql
|
|
- mariadb
|
|
architecture:
|
|
- single
|
|
- app_db
|
|
- app_db_cache
|
|
- multi_service
|
|
first_run:
|
|
- setup_wizard
|
|
- auto
|
|
- seeded
|
|
- none
|
|
test_status:
|
|
- untested
|
|
- in_progress
|
|
- verified
|
|
- broken
|
|
|
|
apps:
|
|
# ============================================================
|
|
# VERIFIED (end-to-end tested on the Mac mini)
|
|
# ============================================================
|
|
|
|
- service: vikunja
|
|
display_name: Vikunja
|
|
image: vikunja/vikunja
|
|
image_tag: "0.24"
|
|
port: 3456
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: verified
|
|
test_date: 2026-08-02
|
|
repo: https://gitea.damconsulting.llc/dam/ts-vikunja
|
|
notes: |
|
|
- PUBLICURL/FRONTENDURL must match access URL or 404 on root.
|
|
- DB host must be 127.0.0.1 (not "db") due to network_mode namespace sharing.
|
|
- DB password and JWT secret required.
|
|
- When using Headscale, hardcode the hostname in serve.headscale.json.
|
|
|
|
# ============================================================
|
|
# CATEGORIZED (educated guess from known docs/patterns).
|
|
# Marked "untested" until verified on the Mac mini.
|
|
# ============================================================
|
|
|
|
- service: adguard
|
|
display_name: AdGuard Home
|
|
image: adguard/adguardhome
|
|
image_tag: latest
|
|
port: 3000
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-adguard
|
|
|
|
- service: appflowy
|
|
display_name: AppFlowy
|
|
image: appflowyio/appflowy_cloud
|
|
image_tag: latest
|
|
port: 8000
|
|
db: postgres
|
|
architecture: multi_service
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-appflowy
|
|
notes: |
|
|
Has its own appflowy_server + gotrue components. Consider single postgres.
|
|
|
|
- service: authentik
|
|
display_name: Authentik
|
|
image: ghcr.io/goauthentik/server
|
|
image_tag: latest
|
|
port: 9000
|
|
db: postgres
|
|
architecture: app_db_cache
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-authentik
|
|
notes: |
|
|
Needs Redis in addition to Postgres. Check for worker/redis services.
|
|
|
|
- service: babybuddy
|
|
display_name: Baby Buddy
|
|
image: linuxserver/babybuddy
|
|
image_tag: latest
|
|
port: 8000
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-babybuddy
|
|
|
|
- service: bookstack
|
|
display_name: BookStack
|
|
image: linuxserver/bookstack
|
|
image_tag: latest
|
|
port: 80
|
|
db: mariadb
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-bookstack
|
|
|
|
- service: calibre-web
|
|
display_name: Calibre-Web
|
|
image: linuxserver/calibre-web
|
|
image_tag: latest
|
|
port: 8083
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-calibre-web
|
|
notes: |
|
|
Expects an existing Calibre library mounted as a volume.
|
|
|
|
- service: focalboard
|
|
display_name: Focalboard
|
|
image: mattermost/focalboard
|
|
image_tag: latest
|
|
port: 8000
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-focalboard
|
|
|
|
- service: freshrss
|
|
display_name: FreshRSS
|
|
image: linuxserver/freshrss
|
|
image_tag: latest
|
|
port: 80
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-freshrss
|
|
|
|
- service: gitea
|
|
display_name: Gitea
|
|
image: gitea/gitea
|
|
image_tag: latest
|
|
port: 3000
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-gitea
|
|
|
|
- service: grafana
|
|
display_name: Grafana
|
|
image: grafana/grafana
|
|
image_tag: latest
|
|
port: 3000
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-grafana
|
|
|
|
- service: harbor
|
|
display_name: Harbor
|
|
image: goharbor/harbor-core
|
|
image_tag: latest
|
|
port: 8080
|
|
db: postgres
|
|
architecture: app_db_cache
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-harbor
|
|
notes: |
|
|
Complex multi-service app. Likely needs separate chart or compose fragment.
|
|
|
|
- service: home-assistant
|
|
display_name: Home Assistant
|
|
image: homeassistant/home-assistant
|
|
image_tag: latest
|
|
port: 8123
|
|
db: none
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-home-assistant
|
|
|
|
- service: homepage
|
|
display_name: Homepage
|
|
image: ghcr.io/gethomepage/homepage
|
|
image_tag: latest
|
|
port: 3000
|
|
db: none
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-homepage
|
|
|
|
- service: immich
|
|
display_name: Immich
|
|
image: ghcr.io/immich-app/immich-server
|
|
image_tag: release
|
|
port: 2283
|
|
db: postgres
|
|
architecture: multi_service
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-immich
|
|
notes: |
|
|
Heavy: needs postgres + redis + machine-learning service + large media volume.
|
|
|
|
- service: invoiceplane
|
|
display_name: InvoicePlane
|
|
image: invoiceplane/invoiceplane
|
|
image_tag: latest
|
|
port: 80
|
|
db: mysql
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-invoiceplane
|
|
|
|
- service: jellyfin
|
|
display_name: Jellyfin
|
|
image: jellyfin/jellyfin
|
|
image_tag: latest
|
|
port: 8096
|
|
db: none
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-jellyfin
|
|
notes: |
|
|
Optionally benefits from GPU passthrough for hardware transcoding.
|
|
|
|
- service: kavita
|
|
display_name: Kavita
|
|
image: kiza19/kavita
|
|
image_tag: latest
|
|
port: 5000
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-kavita
|
|
|
|
- service: lidarr
|
|
display_name: Lidarr
|
|
image: hotio/lidarr
|
|
image_tag: latest
|
|
port: 8686
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-lidarr
|
|
|
|
- service: linkwarden
|
|
display_name: Linkwarden
|
|
image: ghcr.io/linkwarden/linkwarden
|
|
image_tag: latest
|
|
port: 3000
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-linkwarden
|
|
|
|
- service: mealie
|
|
display_name: Mealie
|
|
image: ghcr.io/mealie-recipes/mealie
|
|
image_tag: latest
|
|
port: 9000
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-mealie
|
|
|
|
- service: netdata
|
|
display_name: Netdata
|
|
image: netdata/netdata
|
|
image_tag: latest
|
|
port: 19999
|
|
db: none
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-netdata
|
|
|
|
- service: nextcloud-all-in-one
|
|
display_name: Nextcloud AIO
|
|
image: nextcloud/all-in-one
|
|
image_tag: latest
|
|
port: 11000
|
|
db: mariadb
|
|
architecture: multi_service
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-nextcloud-all-in-one
|
|
notes: |
|
|
AIO manages its own DB internally. Be careful exposing ports.
|
|
|
|
- service: node-red
|
|
display_name: Node-RED
|
|
image: nodered/node-red
|
|
image_tag: latest
|
|
port: 1880
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-node-red
|
|
|
|
- service: overseerr
|
|
display_name: Overseerr
|
|
image: hotio/overseerr
|
|
image_tag: latest
|
|
port: 5055
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-overseerr
|
|
|
|
- service: paperless-ngx
|
|
display_name: Paperless-ngx
|
|
image: ghcr.io/paperless-ngx/paperless-ngx
|
|
image_tag: latest
|
|
port: 8000
|
|
db: postgres
|
|
architecture: multi_service
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-paperless-ngx
|
|
notes: |
|
|
Needs Postgres + Redis broker (Celery). Heavy document storage.
|
|
|
|
- service: photoprism
|
|
display_name: Photoprism
|
|
image: photoprism/photoprism
|
|
image_tag: latest
|
|
port: 2342
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-photoprism
|
|
|
|
- service: prowlarr
|
|
display_name: Prowlarr
|
|
image: hotio/prowlarr
|
|
image_tag: latest
|
|
port: 9696
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-prowlarr
|
|
|
|
- service: radarr
|
|
display_name: Radarr
|
|
image: hotio/radarr
|
|
image_tag: latest
|
|
port: 7878
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-radarr
|
|
|
|
- service: searchxng
|
|
display_name: SearXNG
|
|
image: searxng/searxng
|
|
image_tag: latest
|
|
port: 8080
|
|
db: none
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-searchxng
|
|
|
|
- service: shiori
|
|
display_name: Shiori
|
|
image: ghcr.io/go-shiori/shiori
|
|
image_tag: latest
|
|
port: 8080
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-shiori
|
|
|
|
- service: sonarr
|
|
display_name: Sonarr
|
|
image: hotio/sonarr
|
|
image_tag: latest
|
|
port: 8989
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-sonarr
|
|
|
|
- service: stirling-pdf
|
|
display_name: Stirling PDF
|
|
image: stirlingtools/stirling-pdf
|
|
image_tag: latest
|
|
port: 8080
|
|
db: none
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-stirling-pdf
|
|
|
|
- service: tautulli
|
|
display_name: Tautulli
|
|
image: hotio/tautulli
|
|
image_tag: latest
|
|
port: 8181
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: auto
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-tautulli
|
|
|
|
- service: trilium-notes
|
|
display_name: Trilium Notes
|
|
image: zadam/trilium
|
|
image_tag: latest
|
|
port: 8080
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-trilium-notes
|
|
|
|
- service: uptime-kuma
|
|
display_name: Uptime Kuma
|
|
image: louislam/uptime-kuma
|
|
image_tag: "1"
|
|
port: 3001
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: verified
|
|
test_date: 2026-08-02
|
|
repo: https://gitea.damconsulting.llc/dam/ts-uptime-kuma
|
|
notes: |
|
|
Single container, SQLite-backed. No external DB needed.
|
|
Drop the db service entirely.
|
|
Data volume path is /app/data/uptime-kuma (NOT /data).
|
|
Only net_admin needed (not sys_module).
|
|
USE NAMED VOLUMES (NOT BIND MOUNTS) FOR DATA - macOS Docker Desktop
|
|
has gRPC-FUSE UID remapping that breaks chown inside containers.
|
|
Named volumes work identically on macOS + Linux.
|
|
TS_EXTRA_ARGS=--login-server=${TS_LOGIN_SERVER} required for Headscale.
|
|
tailscale/config volume mount required for serve.json.
|
|
|
|
- service: vaultwarden
|
|
display_name: Vaultwarden
|
|
image: vaultwarden/server
|
|
image_tag: latest
|
|
port: 80
|
|
db: sqlite
|
|
architecture: single
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-vaultwarden
|
|
notes: |
|
|
WebSocket support required for live notifications. Use a single container.
|
|
|
|
- service: woodpecker
|
|
display_name: Woodpecker CI
|
|
image: woodpeckerci/woodpecker-server
|
|
image_tag: latest
|
|
port: 8000
|
|
db: postgres
|
|
architecture: app_db
|
|
first_run: setup_wizard
|
|
test_status: untested
|
|
repo: https://gitea.damconsulting.llc/dam/ts-woodpecker
|