homelab-codex-ws/kb/runbooks/narty27-deploy.md
oskar 3292ab54e2 feat(kb): SPLIT service+runbook — 10 serwisow -> 20 dokumentow
Wzorzec mechaniczny: sekcje deploy/verify/install/testy wycinane do
kb/runbooks/<serwis>-*.md, reszta zostaje dokumentem type: service.
Wzajemne `links` w obie strony. Tresc sekcji nietknieta — przenoszone
doslownie, dodany wylacznie naglowek H1 nowego runbooka.

kb-query, paperless-worker, planner-agent, ha-diag-agent, ollama-piha,
narty27, home-assistant, ha-mcp, job-gmail-header-backfill, job-mail-body-ingest.

Weryfikacja: dla kazdego pliku multizbior niepustych linii
(main + runbook) == oryginal z HEAD. Zero zgubionych, zero dodanych.

Recon szacowal 13 splitow service+runbook; faktycznie 2-typowych jest 10,
pozostale 5 (paperless, nextcloud, gokapi, fleet-prometheus, deploy-runner)
sa 3-typowe i ida osobno jako splity wielotypowe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:53:57 +02:00

1.8 KiB

okf type visibility status updated links
0.1 runbook private active 2026-07-31
../services/narty27.md

narty27 — uruchomienie i operacje

Updating the content (from SOLARIA)

# 1. Ship the file to PIHA
scp ~/narty-2027/saalbach-kb/viz.html piha:/tmp/viz.html

# 2. Write BOTH copies into the volume via a throwaway helper container
ssh piha 'docker run --rm \
    -v narty27_narty27_content:/content \
    -v /tmp:/src:ro \
    alpine sh -c "cp /src/viz.html /content/viz.html && cp /src/viz.html /content/index.html"'

# 3. Drop the staging copy
ssh piha 'rm -f /tmp/viz.html'

# 4. Verify (no container restart needed — nginx serves from disk per request)
curl -sf -o /dev/null -w '%{http_code}\n' http://192.168.31.5:8240/viz.html
curl -sf -o /dev/null -w '%{http_code}\n' http://192.168.31.5:8240/

Why a helper container and not docker cp: the volume is mounted :ro into the nginx container, and docker cp writes through the container's mount namespace — it fails with mounted volume is marked read-only, for both running and stopped containers (verified 2026-07-31). The helper container mounts the same volume read-write and bypasses nginx entirely.

First start

nginx:alpine seeds an empty named volume with its own default index.html and 50x.html on first run, so the root will show the nginx welcome page until step 2 above overwrites index.html. Until then /viz.html 404s and the container healthcheck reports unhealthy — this is expected, not a failure.

Operations

docker compose -f services/narty27/docker-compose.yml up -d   # on PIHA
./healthcheck.sh                                              # container + both paths
docker volume ls | grep narty27                               # narty27_narty27_content