> ## Documentation Index
> Fetch the complete documentation index at: https://docs.augustin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding a service

# 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)

```yaml theme={null}
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:

```yaml theme={null}
http:
  routers:
    <service>:
      rule: "Host(`<service>.augustin.ai`)"
      entryPoints: [websecure]
      service: <service>
  services:
    <service>:
      loadBalancer:
        servers:
          - url: "http://192.168.1.16:<port>"
```
