# Runbooks
Step-by-step for common problems.
## “All the sites are down”
1. Check pi4 (`.2`) — is it powered and on the network? (`ping 10.0.0.2`) 2. SSH in (`root`) and run `systemctl status caddy`. If it's not running: `systemctl start caddy`. 3. The health-check cron should already be restarting it; if not, check `/usr/local/bin/caddy-health-check.sh`. 4. If pi4 is up but sites still 502, check the individual service host (see “How it's wired”).
## “One site is down (502)”
1. Find which host serves it (see “Portals & sites” or `infra/inventory.yaml`). 2. SSH to that host and check its container/service:
- Docker: `docker ps -a | grep ` → `docker start ` if exited.
- systemd: `systemctl status ` → `systemctl restart `.
3. Check the edge log for the exact error: `journalctl -u caddy -n 50` on pi4.
## Edge failover (pi4 dead, LAN only)
- LAN clients should auto-fail to mini1 (`.4`) via dual-A DNS after the TTL expires. - Public traffic has no failover yet — it needs pi4 back.
## Reboot order (after a full power outage)
1. Router → wait for it to come up. 2. pi4 (`.2`) — DNS + edge first. 3. mini1 (`.4`) — DHCP + standby edge. 4. mini2 (`.5`), macpro (`.3`), windows (`.7`), pi5 (`.13`). 5. Family devices last.
## “A container won't start”
1. `docker logs ` — read the actual error. 2. Common causes: permission on a bind mount (chown to the container uid), a missing tmpfs dir (recreate + chown), or a config typo. 3. Log the fix to the Gotchas page so it's not re-solved twice.
