Files
homelab-infra/docs/services/traefik.md
1jamesthompson1 716baafbc1 AI given structure
2026-03-23 16:06:42 +13:00

68 lines
2.2 KiB
Markdown

# traefik
> Auto-generated from `docker-compose.yml`
| Field | Value |
|-------|-------|
| **Image** | `traefik:v3.6` |
| **Container** | `traefik` |
| **Restart** | `unless-stopped` |
### Command
```
--entrypoints.web.address=:80 --entrypoints.web.http.redirections.entrypoint.to=websecure --entrypoints.web.http.redirections.entrypoint.scheme=https --entrypoints.websecure.address=:443 --providers.docker=true --providers.docker.exposedbydefault=false --providers.docker.network=web --certificatesresolvers.letsencrypt.acme.httpchallenge=true --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web --certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL} --certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json --metrics.prometheus=true --accesslog=true --providers.file.directory=/dynamic --providers.file.watch=true
```
### Secrets (from `.env.example`)
These variables must be set in the service's `.env` file:
| Variable | Default |
|----------|---------|
| `TRAEFIK_DASHBOARD_PORT` | `8082` |
| `ACME_EMAIL` | `letsencrypt@example.com` |
| `DASHBOARD_BASIC_AUTH` | `admin:$$apr1$$changeme$$REPLACE_WITH_HTPASSWD_HASH` |
### Ports
| Host | Container | Protocol |
|------|-----------|----------|
| `80` | `80` | tcp |
| `443` | `443` | tcp |
| `${TRAEFIK_DASHBOARD_PORT:-8082}` | `8080` | tcp |
### Volumes
| Host Path | Container Path | Mode |
|-----------|----------------|------|
| `/var/run/docker.sock` | `/var/run/docker.sock` | ro |
| `${STORAGE_PATH}/traefik/certs` | `/certs` | rw |
| `${STORAGE_PATH}/traefik/dynamic` | `/dynamic` | ro |
### Networks
- `web` (internal)
### Security Options
- `no-new-privileges:true`
### Labels
| Key | Value |
|-----|-------|
| `traefik.enable` | `true` |
| `traefik.http.middlewares.dashboard-auth.basicauth.users` | `${DASHBOARD_BASIC_AUTH}` |
| `traefik.http.routers.dashboard.entrypoints` | `websecure` |
| `traefik.http.routers.dashboard.middlewares` | `dashboard-auth@docker` |
| `traefik.http.routers.dashboard.rule` | `Host(`dashboard.${DOMAIN}`)` |
| `traefik.http.routers.dashboard.service` | `api@internal` |
| `traefik.http.routers.dashboard.tls` | `true` |
### Networks (compose-level)
- `web` (external)
---