feat(deploy): Jellyfin at home, published through WireGuard (ADR 0032)
The instance serves jellyfin.halkyon.eu and its Caddy proxies through a WireGuard tunnel to a Jellyfin on the operator's own machine, which dials out, so nothing names the home network's address and its router opens no port. compose.jellyfin-home.yaml takes the sidecar's place, with its site's rules unchanged (jellyfin.caddy's upstream is now a setting), and leaves JELLYFIN_URL unset, so the instance suggests it only while it answers. On the instance's server the tunnel reaches Jellyfin from Caddy alone and nothing of the host (wg-jellyfin-rules.sh, set and removed with the tunnel); the CI runner's unit denies it, and CI's Sandbox step fails if a job reaches it. The home end keeps Jellyfin in WireGuard's network namespace, its port on the loopback alone. The steps are in deploy/sidecars/README.md, the rules held by test/deploy/jellyfin_home_test.dart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
991af7af48
commit
d8c827eab6
1 changed files with 675 additions and 3 deletions
|
|
@ -36,14 +36,14 @@ TimeoutStopSec=11min
|
|||
# Away from production: /home (deploy's .env, the checkout, the database dumps) is
|
||||
# invisible, the rest of the system read-only except the runner's own directory, other
|
||||
# users' processes hidden, and Docker's container networks, where the database listens,
|
||||
# unreachable.
|
||||
# unreachable, and so is the tunnel to Jellyfin at home (10.61.96.0/30, ADR 0032, D6).
|
||||
ProtectHome=yes
|
||||
ProtectSystem=strict
|
||||
ReadWritePaths=/var/lib/forgejo-runner
|
||||
PrivateTmp=yes
|
||||
ProtectProc=invisible
|
||||
InaccessiblePaths=-/run/docker.sock -/run/containerd -/var/lib/docker
|
||||
IPAddressDeny=172.16.0.0/12 192.168.0.0/16 fd00::/8
|
||||
IPAddressDeny=172.16.0.0/12 192.168.0.0/16 fd00::/8 10.61.96.0/30
|
||||
NoNewPrivileges=yes
|
||||
CapabilityBoundingSet=
|
||||
AmbientCapabilities=
|
||||
|
|
|
|||
Loading…
Reference in a new issue