diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4d6f28b..93d028c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z", "remoteUser": "dev", "mounts": [ - "source=${localEnv:HOME}/.ssh,target=/root/.ssh,type=bind,readonly" + "source=${localEnv:HOME}/.ssh,target=/home/dev/.ssh,type=bind,readonly" ], "build": { "dockerfile": "Dockerfile", diff --git a/Caddyfile b/Caddyfile index a139197..8ed3ca2 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,4 +1,6 @@ { + http_port 8080 + https_port 8443 servers { metrics } @@ -8,27 +10,37 @@ admin :2019 } +# Fix pour le http3 +(alt_svc) { + header Alt-Svc `h3=":443"; ma=2592000` +} + qpismont.fr { - redir https://www.qpismont.fr + redir https://www.qpismont.fr } www.qpismont.fr { + import alt_svc root * /www/html file_server } gitea.qpismont.fr { + import alt_svc reverse_proxy gitea:3000 } git.qpismont.fr { + import alt_svc reverse_proxy gitea:3000 } woodpecker.qpismont.fr { + import alt_svc reverse_proxy woodpecker_server:8000 } ntfy.qpismont.fr { + import alt_svc reverse_proxy ntfy:80 -} \ No newline at end of file +} diff --git a/README.md b/README.md index a2323d8..1c6ddd1 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Cette infrastructure héberge l'ensemble des services nécessaires pour le déve | Service | Image | Description | Exposition | |---------|-------|-------------|------------| -| **reverse_caddy** | `caddy:2.11-alpine` | Reverse proxy, HTTPS auto, HTTP/3 | `80`, `443/tcp`, `443/udp` | +| **reverse_caddy** | `dhi.io/caddy:2.11` | Reverse proxy, HTTPS auto, HTTP/3 (non-root, ports internes 8080/8443) | `80→8080`, `443→8443/tcp`, `443→8443/udp` | | **wireguard_server** | `linuxserver/wireguard:latest` | VPN d'accès distant + CoreDNS | `51820/udp` | ### Stack `git` @@ -156,7 +156,7 @@ Cette infrastructure héberge l'ensemble des services nécessaires pour le déve - **VPN** : WireGuard pour services internes ### Storage -- **Volumes Docker** : `reversecaddydata`, `reversecaddyconfig` (core) · `giteadata`, `woodpeckerdata` (git) · `prometheusdata`, `tempodata`, `persesdata`, `alertmanagerdata`, `ntfydata` (observability) +- **Volumes Docker** : `reversecaddydata`, `reversecaddyconfig` (core, propriété UID 65532) · `giteadata`, `woodpeckerdata` (git) · `prometheusdata`, `tempodata`, `persesdata`, `alertmanagerdata`, `ntfydata` (observability) - **Host mounts** : `/home/user/wireguard-config`, `/lib/modules` (WireGuard) · `/var/run/docker.sock` (Woodpecker agent, Herald, `docker-proxy-otel`) · `/` en lecture seule (OTel Collector) ### Monitoring @@ -203,6 +203,9 @@ Cette infrastructure héberge l'ensemble des services nécessaires pour le déve - Renouvellement automatique des certificats - Métriques Prometheus exposées - Configuration simple (Caddyfile) +- Image hardened `dhi.io/caddy:2.11` : non-root (UID 65532), sans shell +- Écoute interne sur `8080`/`8443`, mappée depuis `80`/`443` (ports privilégiés) +- `Alt-Svc` forcé sur `:443` pour conserver HTTP/3 vu de l'extérieur ### WireGuard - VPN moderne et rapide diff --git a/docker-compose.core.yml b/docker-compose.core.yml index 8582ba8..48b01d5 100644 --- a/docker-compose.core.yml +++ b/docker-compose.core.yml @@ -2,11 +2,11 @@ version: "3" services: reverse_caddy: - image: caddy:2.11-alpine + image: dhi.io/caddy:2.11 ports: - - "80:80" - - "443:443" - - "443:443/udp" + - "80:8080" + - "443:8443" + - "443:8443/udp" configs: - source: caddy_config target: /etc/caddy/Caddyfile