Krok 13 (1/3): Traefik uruchomiony, TLS DNS-01 przez OVH

- traefik:v3.7.11 (najnowszy stabilny tag, sprawdzony w Docker Hub)
- DNS-01 challenge, provider ovh, endpoint ovh-ca (region panelu)
- dashboard tylko na 127.0.0.1:8080, dostęp przez tunel SSH
- docker.sock zamontowany read-only
- .env z kluczami API OVH poza repo (chmod 600), .env.example w repo
- zweryfikowane: redirect 80->443, dashboard 200 lokalnie, czyste logi
This commit is contained in:
2026-08-20 18:58:26 +02:00
parent 8e8b7e636e
commit afaafe8910
3 changed files with 51 additions and 1 deletions
+2 -1
View File
@@ -85,7 +85,7 @@ Pamiętaj: opublikowany port kontenera omija ufw — patrz `CLAUDE.md`, sekcja 3
| Stack | Ścieżka | Status | Opis |
|---|---|---|---|
| Traefik | `/srv/infra/stacks/traefik` | _(planowany)_ | reverse proxy, TLS, wejście do wszystkiego |
| Traefik | `/srv/infra/stacks/traefik` | **działa** (od 2026-08-20) | reverse proxy, TLS DNS-01 przez OVH (`ovh-ca`), image `traefik:v3.7.11`, dashboard tylko przez tunel SSH (`127.0.0.1:8080`) |
| Gitea | `/srv/infra/stacks/gitea` | _(planowany)_ | repozytoria kodu, mirror na GitHub |
| Monitoring | `/srv/infra/stacks/monitoring` | _(planowany)_ | Uptime Kuma, alerty na maila |
@@ -128,6 +128,7 @@ odtworzyć, co się działo — nie o pełny changelog.
| Data | Co się zmieniło | Kto |
|---|---|---|
| 2026-08-20 | Krok 13 bootstrapu (część 1/3 — Traefik): stack `traefik:v3.7.11` uruchomiony, DNS-01 przez OVH (endpoint `ovh-ca`), klucze API w `.env` (poza repo, `chmod 600`), dashboard na `127.0.0.1:8080` (tylko tunel SSH). Zweryfikowane: redirect 80→443, dashboard odpowiada lokalnie, logi czyste. Certyfikat wildcard wystawi się przy podpięciu pierwszej usługi (Gitea) | Claude + Kacper |
| 2026-08-20 | Krok 11 bootstrapu: snapshot OVH zrobiony — czysty, utwardzony system przed postawieniem usług | Kacper |
| 2026-08-20 | Krok 10 bootstrapu: `/srv/apps`, `/srv/data` utworzone (`/srv/infra` już istniało), właściciel `ubuntu:ubuntu` | Claude |
| 2026-08-20 | Krok 9 bootstrapu: `~/.tmux.conf` skonfigurowany (mouse, vi keys, `focus-events on`), przeładowany w sesji `bootstrap` bez restartu | Claude |
+6
View File
@@ -0,0 +1,6 @@
# Klucze API OVH — DNS-01 dla wildcard *.dfkk.cloud
# Panel OVH regionu CA: https://ca.api.ovh.com/createToken/
# Uprawnienia: GET/PUT/POST/DELETE na /domain/zone/*
OVH_APPLICATION_KEY=
OVH_APPLICATION_SECRET=
OVH_CONSUMER_KEY=
+43
View File
@@ -0,0 +1,43 @@
services:
traefik:
image: traefik:v3.7.11
container_name: traefik
restart: unless-stopped
command:
- --providers.docker=true
- --providers.docker.exposedByDefault=false
- --providers.docker.network=edge
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --entrypoints.websecure.address=:443
- --entrypoints.traefik.address=:8080
- --api.dashboard=true
- --certificatesresolvers.ovh.acme.dnschallenge=true
- --certificatesresolvers.ovh.acme.dnschallenge.provider=ovh
- --certificatesresolvers.ovh.acme.email=k.kruszka@hotmail.com
- --certificatesresolvers.ovh.acme.storage=/letsencrypt/acme.json
- --log.level=INFO
environment:
- OVH_ENDPOINT=ovh-ca
- OVH_APPLICATION_KEY=${OVH_APPLICATION_KEY}
- OVH_APPLICATION_SECRET=${OVH_APPLICATION_SECRET}
- OVH_CONSUMER_KEY=${OVH_CONSUMER_KEY}
ports:
- "80:80"
- "443:443"
- "127.0.0.1:8080:8080" # dashboard, wyłącznie przez tunel SSH
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
networks:
- edge
labels:
- traefik.enable=true
- traefik.http.routers.dashboard.rule=Host(`traefik.dfkk.cloud`)
- traefik.http.routers.dashboard.entrypoints=traefik
- traefik.http.routers.dashboard.service=api@internal
networks:
edge:
external: true