Skip to main content

Adding a Service

Checklist for deploying a new service to the homelab.

Steps

  1. Create the directory: mkdir ~/apps/<service>
  2. Write compose.yaml with:
    • user: "1000:1000"
    • Traefik labels (if on i3) or exposed port (if on Pentium)
    • networks: [traefik] (i3 only)
    • Volume mounts for persistent data
  3. Create .env with any secrets (API keys, passwords). These are gitignored.
  4. Traefik routing:
    • i3 services: add Docker labels in compose.yaml
    • Pentium services: add entry to traefik/dynamic/pentium-services.yaml
  5. Cloudflare DNS: add a CNAME record for <service>.augustin.ai → tunnel
  6. Start it: docker compose -f <service>/compose.yaml up -d
  7. Homepage: add entry to homepage/config/services.yaml
  8. Uptime Kuma: add a monitor for the service URL
  9. Backups: ensure the data directory is included in the restic backup script
  10. Documentation: add a doc page under the appropriate service category

Traefik Labels (i3)

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.<service>.rule=Host(`<service>.augustin.ai`)"
  - "traefik.http.routers.<service>.entrypoints=websecure"
  - "traefik.http.services.<service>.loadbalancer.server.port=<port>"

Pentium Routing

Add to traefik/dynamic/pentium-services.yaml on i3:
http:
  routers:
    <service>:
      rule: "Host(`<service>.augustin.ai`)"
      entryPoints: [websecure]
      service: <service>
  services:
    <service>:
      loadBalancer:
        servers:
          - url: "http://192.168.1.16:<port>"