e376d0aec9
Captures the full workspace state built up to this point:
- CLAUDE.md + README.md describing conventions and the four-host fleet
(ana-ml2, ana-docker, nh3-docker, esh-docker-vm).
- Per-host notes under servers/<host>/ with ssh-target fallback files
and latest system-details snapshots (two in-compose credential leaks
scrubbed; the upstream compose files still need to move those to .env).
- scripts/: server_inspect.sh (read-only remote diagnostic),
refresh-server-info.sh (dir-driven discovery + snapshot capture with
validation warnings), add-host.sh, sync-stacks.sh (pull
compose/conf trees), deploy-stack.sh (push with per-file diff + prompt).
- stacks/: canonical compose for backrest, beszel, dozzle, llama-swap,
rest-server-ana, rest-server-nh3, vllm-qwen3, plus the retired
infinity reference. All use the .env-driven + traefik-net + homepage
label pattern.
- configs/restic/ana-docker/: first resticprofile config + pre-backup
hook (Synapse pg_dump, Seafile mysqldump, Vaultwarden SQLite); templates
for the other three hosts to come.
- docs/pfi/: general infrastructure reference carried over.
- .gitignore excludes .env, stacks-mirror/, and assorted secret/state
filenames to prevent re-leaks on later commits.
nh3-docker
General-purpose Docker host for the New Hampshire (nh3) site. Small VM, no GPU. Separate LAN from the Anaheim colo.
Network
- LAN IP: 10.100.50.40
- LAN subnet: 10.100.0.0/16 (NH site)
- FQDN:
nh3-docker.phasefinal.com - SSH: standard port 22
Hardware
- CPU: 8 vCPU (QEMU virtual — VM)
- RAM: 7.8 GB
- GPUs: none
- Storage: 125 GB root (ext4) + NFS mounts from
10.100.50.50(Synology) - OS: Debian 12 (bookworm), kernel 6.1.x
- Docker: running (daemon socket at
/var/run/docker.sock; also listens on:2375— be aware if firewalling)
Key paths
| Path | Purpose |
|---|---|
/opt/docker/compose/<stack>/ |
Compose files (also a git repo) |
/opt/docker/conf/<stack>/ |
Config bind mounts (empty as of last inspection) |
/mnt/compose |
NFS — 10.100.50.50:/volume1/compose |
/mnt/backup |
NFS — 10.100.50.50:/volume1/Backup |
Running stacks
| Stack | Port(s) | Notes |
|---|---|---|
| adguard | 53 / 853 / 8080 / 8443 / 3000 / 784 | AdGuard Home — primary DNS for the NH site |
| dockge | 5001 | Docker stack management UI |
| dozzle-agent | 7007 | Log agent; hub on ana-docker pulls from here |
| beszel-nh3-docker (agent) | 45876 | Metrics agent; hub on ana-docker |
| portainer (+ portainer_agent) | 9443 / 8000 / 9001 | Container management UI (ad-hoc, no compose dir under /opt/docker/compose/) |
No Traefik / TLS terminator on this host — services are accessed on raw LAN ports. If that changes, mirror the ana-docker pattern (/opt/docker/conf/traefik-nh3/… + anaprod-style cert resolver).
Refresh state
scripts/refresh-server-info.sh nh3-docker
Latest snapshot: system-details.txt (regenerate as needed).
Placement rule
No GPU → this is the default target for NH-site Docker workloads. GPU-only stacks still go to ana-ml2; non-GPU Anaheim-specific services stay on ana-docker.