Both the deploy workflow (.env generation) and docker-compose were
missing the local instance env vars, so entrypoint.sh never had them
to write into settings.json.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
extra_hosts is incompatible with network_mode: service:... — move it to the
Tailscale sidecar container whose network namespace is shared with outline-sync-ui.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
outline-sync runs on domverse-berlin and connects to Outline on domverse.de
via Tailscale. Docker DNS does not cross hosts, so map the hostname via
extra_hosts to the Tailscale IP 100.104.53.109.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dockerfile: ARG/ENV APP_VERSION, copies VERSION file
- compose: passes build arg, removes runtime env var
- webui: reads VERSION file as fallback if env not set
- deploy: explicit build step with --build-arg
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add VERSION file (starts at 0.1.0)
- Deploy workflow bumps patch on every push, commits back [skip ci]
- APP_VERSION passed into container via env
- Version shown in page header next to title
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add TS_EXTRA_ARGS=--accept-routes so sidecar uses VPS-advertised subnet
- Use direct container IP (172.29.0.13) instead of unresolvable hostname
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace hardcoded IP 172.29.0.7 with container hostname 'outline'
- Fix network name from 'domverse' to 'domnet' (actual external network)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ts-outline-sync sidecar joins Tailscale and shares network namespace
with the app container (network_mode: service:ts-*)
- Traefik labels on sidecar; app container has no direct network exposure
- OUTLINE_URL now uses internal Docker IP 172.29.0.7:3000 via Tailscale
subnet route (domverse.de advertises 172.29.0.0/16)
- Add TAILSCALE_PRD.md documenting the full setup and admin checklist
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch from domnet → domverse (runs on domverse-berlin.eu)
- OUTLINE_URL defaults to https://outline.domverse.de (public API)
- Traefik labels match domverse-berlin.eu pattern
- Revert workflow to direct docker compose (no SSH needed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
settings.json is gitignored (contains token). entrypoint.sh writes it
from OUTLINE_URL / OUTLINE_TOKEN env vars on container start.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>