====== Adding a New Service to the Homelab ======
A repeatable checklist for deploying a new self-hosted service.
===== Prerequisites =====
* Docker image name and version
* Decided subdomain (e.g. ''service.folk.zone'')
* Container's internal port
===== Checklist =====
==== 1. Add to docker-compose.yml ====
service-name:
image: image:tag
container_name: service-name
restart: unless-stopped
environment:
- KEY=value
volumes:
- ./service/data:/data
networks:
- cafe_net
==== 2. Add Caddy route ====
In ''caddy/Caddyfile'':
@service host service.folk.zone
handle @service {
reverse_proxy service-name:port
}
For password protection, add ''basic_auth'' inside the ''handle'' block. Generate hash:
docker exec cafe-caddy-1 caddy hash-password --plaintext 'password'
==== 3. Deploy ====
scp cafe/docker-compose.yml brennan@192.168.1.65:/home/brennan/cafe/docker-compose.yml
scp cafe/caddy/Caddyfile brennan@192.168.1.65:/home/brennan/cafe/caddy/Caddyfile
ssh brennan@192.168.1.65 "cd /home/brennan/cafe && docker compose up -d service-name"
ssh brennan@192.168.1.65 "docker exec cafe-caddy-1 caddy reload --config /etc/caddy/Caddyfile"
==== 4. Add Cloudflare Tunnel hostname ====
Zero Trust → Networks → Tunnels → ''cafe'' → Public Hostnames → Add:
* Subdomain: ''service'', Domain: ''folk.zone'', Service: ''http://caddy:80''
**Do NOT edit the local config.yml** — it is overridden by the dashboard config.
==== 5. Add to Uptime Kuma ====
[[https://status.folk.zone]] → Add New Monitor → HTTP(s), URL: ''https://service.folk.zone'', interval: 60s.
==== 6. Add to Dashboard and Services page ====
Edit ''dashboard/index.html'' and ''dashboard/services.html'', then:
scp dashboard/index.html brennan@192.168.1.65:/home/brennan/cafe/dashboard/index.html
scp dashboard/services.html brennan@192.168.1.65:/home/brennan/cafe/dashboard/services.html
==== 7. Add a wiki page ====
Create '':folkzone:services:service-name'' following the [[meta:start|service page template]].
===== See Also =====
* [[guides:start|Guides Index]]
* [[folkzone:services:caddy|Caddy]]
* [[folkzone:services:cloudflared|Cloudflare Tunnel]]
* [[start|Return to wiki home]]