Nowy serwis services/narty27 — nginx:alpine serwujacy jeden self-contained plik viz.html z named volume narty27_content (:ro). Port 8240 to nastepny wolny w bloku 82x0 na PIHA (8210 paperless, 8220 nextcloud, 8230 kb-query). Content jest personal: zyje wylacznie w volume narty27_narty27_content i w zrodle na SOLARII (~/narty-2027/saalbach-kb/viz.html). Nigdy w repo, bez backup joba, bez bindu pod /opt/homelab/data. Procedura aktualizacji w README uzywa kontenera-pomocnika (alpine z volume rw), NIE `docker cp` — przy mount :ro docker cp zwraca "mounted volume is marked read-only", zarowno dla dzialajacego jak i zatrzymanego kontenera (zweryfikowane empirycznie 2026-07-31). Zapisywane sa dwie kopie tego samego pliku: viz.html (nazwa kanoniczna) + index.html (zeby golny root dzialal). Walidacja: docker compose config OK (volume rozwija sie do narty27_narty27_content), YAML parse OK, bash -n healthcheck.sh OK. Bez zywego deployu. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
27 lines
990 B
YAML
27 lines
990 B
YAML
service:
|
|
name: narty27
|
|
owner_node: piha
|
|
role: static-html-host # single self-contained viz.html (narty 2027 / Saalbach KB export)
|
|
exposure: private # LAN/Tailscale only; no npm vhost, no public ingress
|
|
dependencies: [] # nginx serving a local volume — nothing else required
|
|
ports:
|
|
- container: 80
|
|
host: 8240
|
|
protocol: tcp
|
|
healthcheck:
|
|
type: http
|
|
endpoint: http://192.168.31.5:8240/viz.html # PIHA LAN IP; content must be loaded first (see README)
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
restart_policy: unless-stopped
|
|
persistence:
|
|
# Docker named volume narty27_narty27_content (compose project prefix), NOT
|
|
# a bind under /opt/homelab/data. Content is personal, lives only here, and
|
|
# is deliberately outside the repo — see README.md.
|
|
paths:
|
|
- narty27_narty27_content
|
|
runtime:
|
|
config_files: [] # no .env — the port bind is static, no secrets
|
|
env_vars: []
|