New Service Onboarding Runbook¶
Follow this runbook every time a new service is added to the homelab. No service goes live without completing this checklist.
Pre-Deployment Checklist¶
- Service has a defined purpose
- Port confirmed not in use:
ss -tulnp | grep <PORT> - Docker Compose file created in
~/stacks/apps/<service-name>/ -
.envfile created for secrets — never hardcoded in compose file - Backup path identified
- Reverse proxy entry planned (NPM)
- DNS entry planned (Pi-hole)
- Uptime Kuma monitor planned
Step 1 — Create the Compose File¶
Minimum template:
services:
<service-name>:
image: <image>:latest
container_name: <service-name>
restart: unless-stopped
ports:
- "<host-port>:<container-port>"
volumes:
- <service-name>_data:/data
env_file:
- .env
volumes:
<service-name>_data:
Step 2 — Create the .env File¶
Step 3 — Deploy¶
Step 4 — Reverse Proxy (Nginx Proxy Manager)¶
- NPM → Proxy Hosts → Add Proxy Host
- Domain:
<service>.home.lab - Forward:
host01→<container-port>
Step 5 — DNS Record (Pi-hole)¶
- Pi-hole → Local DNS → DNS Records → Add
- Domain:
<service>.home.lab→ IP:192.168.20.x
Step 6 — Uptime Kuma Monitor¶
- Add Monitor → HTTP(s)
- URL:
http://<service>.home.lab - Interval: 60s
Step 7 — Update Documentation¶
- Add to Inventory
- Add to Docker Stacks if non-trivial
- Add DNS record to Networking
- Add Prometheus scrape target if metrics are exposed
Done
Service is live, monitored, and documented.