203 lines
6.0 KiB
Markdown
203 lines
6.0 KiB
Markdown
---
|
||
title: "Config VPS — Snapshot 17 avril 2026"
|
||
type: log
|
||
created: 2026-04-17
|
||
owner: jerem
|
||
agent: DAEMON
|
||
status: active
|
||
tags:
|
||
- infra
|
||
- vps
|
||
- config
|
||
- snapshot
|
||
related:
|
||
- "[[projects/deamon-backend]]"
|
||
- "[[_adn/routing-llm]]"
|
||
---
|
||
|
||
# Config VPS — 17 avril 2026
|
||
|
||
> Snapshot de l'état du VPS après Phase 1-6 + audit sécurité/stabilité.
|
||
|
||
---
|
||
|
||
## Serveur
|
||
|
||
| Élément | Valeur |
|
||
|---|---|
|
||
| Hébergeur | Hostinger — VPS dédié |
|
||
| OS | Ubuntu 22.04.5 LTS |
|
||
| Kernel | 5.15.0-176-generic |
|
||
| CPU | AMD EPYC 9354P — 2 cores |
|
||
| RAM | 7.8 GB |
|
||
| Swap | 4 GB |
|
||
| Disque | 97 GB (15% utilisé) |
|
||
| IP publique | 76.13.42.203 |
|
||
| IP VPN | 10.66.66.1 |
|
||
| SSH | Port 2222, clé uniquement, root désactivé |
|
||
| Domaine | jeremunlimited.com (DNS OVH) |
|
||
| Wildcard DNS | *.jeremunlimited.com → 76.13.42.203 |
|
||
|
||
---
|
||
|
||
## Accès
|
||
|
||
| Méthode | Commande / URL |
|
||
|---|---|
|
||
| SSH | `ssh -p 2222 jerem@10.66.66.1` (VPN requis) |
|
||
| Coolify | https://coolify.jeremunlimited.com |
|
||
| Gitea | https://git.jeremunlimited.com |
|
||
| n8n | https://n8n.jeremunlimited.com |
|
||
| Uptime Kuma | https://kuma.jeremunlimited.com |
|
||
| Whisper | https://whisper.jeremunlimited.com |
|
||
|
||
---
|
||
|
||
## Services Docker
|
||
|
||
| Container | Image | Port interne | Restart | Réseau |
|
||
|---|---|---|---|---|
|
||
| gitea | gitea/gitea:1.22 | 3000 | always | coolify + internal |
|
||
| gitea-db | postgres:16-alpine | 5432 | always | internal |
|
||
| n8n | n8nio/n8n:latest | 5678 | always | coolify |
|
||
| whisper | fedirz/faster-whisper-server:latest-cpu | 8000 | always | coolify |
|
||
| uptime-kuma | louislam/uptime-kuma:1 | 3001 | always | coolify |
|
||
| coolify | coolify:4.0.0-beta.473 | 8080 | always | coolify |
|
||
| coolify-proxy | traefik:v3.6 | 80/443 | unless-stopped | coolify |
|
||
| coolify-sentinel | sentinel:0.0.21 | — | always | coolify |
|
||
| coolify-db | postgres:15-alpine | 5432 | always | coolify |
|
||
| coolify-redis | redis:7-alpine | 6379 | always | coolify |
|
||
| coolify-realtime | coolify-realtime:1.0.13 | 6001-6002 | always | coolify |
|
||
|
||
---
|
||
|
||
## Sécurité
|
||
|
||
| Mesure | Status |
|
||
|---|---|
|
||
| SSH port 2222 (port 22 fermé) | ✅ |
|
||
| Root login désactivé (sauf Docker local) | ✅ |
|
||
| Password auth désactivé | ✅ |
|
||
| Fail2ban sur sshd | ✅ |
|
||
| WireGuard VPN (split tunnel) | ✅ |
|
||
| UFW firewall (deny par défaut) | ✅ |
|
||
| HTTPS Let's Encrypt sur tous les services | ✅ |
|
||
| Unattended security upgrades | ✅ |
|
||
| Kernel à jour | ✅ |
|
||
|
||
### Ports ouverts (UFW)
|
||
|
||
| Port | Protocole | Usage |
|
||
|---|---|---|
|
||
| 2222/tcp | ALLOW | SSH |
|
||
| 51820/udp | ALLOW | WireGuard |
|
||
| 22/tcp | ALLOW 10.0.0.0/24, 10.0.1.0/24, 76.13.42.203 | Coolify interne |
|
||
| 6001, 6002, 8080 | DENY | Bloqués par UFW (note: Docker bypass UFW) |
|
||
|
||
### Limitation connue
|
||
|
||
Docker manipule iptables directement et bypass UFW. Les ports 6001/6002/8080/8000 exposés par Coolify restent techniquement accessibles depuis l'extérieur malgré les règles DENY. Risque limité car ces services requièrent une authentification.
|
||
|
||
---
|
||
|
||
## Stabilité
|
||
|
||
| Mesure | Status |
|
||
|---|---|
|
||
| Swap 4 GB | ✅ |
|
||
| Restart policy `always` sur tous les containers | ✅ |
|
||
| Log rotation Docker (10MB × 3 fichiers) | ✅ |
|
||
| Backup quotidien 3h00 UTC (rétention 7 jours) | ✅ |
|
||
| Backup path | /home/jerem/backups/ |
|
||
| Backup script | /home/jerem/daemon-infra/backup.sh |
|
||
|
||
---
|
||
|
||
## Fichiers clés sur le VPS
|
||
|
||
```
|
||
/home/jerem/
|
||
├── daemon-infra/
|
||
│ ├── docker-compose.yml # Tous les services DAEMON
|
||
│ ├── .env # GITEA_DB_PASS
|
||
│ ├── backup.sh # Script backup quotidien
|
||
│ ├── gitea/ # Data Gitea + PostgreSQL
|
||
│ ├── n8n/ # Data n8n
|
||
│ ├── uptime-kuma/ # Data Uptime Kuma
|
||
│ ├── whisper/ # Modèles Whisper
|
||
│ └── openclaw/ # OpenClaw (installé, pas configuré)
|
||
├── backups/ # Backups quotidiens
|
||
└── .ssh/ # Clés SSH
|
||
```
|
||
|
||
---
|
||
|
||
## WireGuard
|
||
|
||
| Élément | Valeur |
|
||
|---|---|
|
||
| VPS (serveur) | 10.66.66.1, port 51820 |
|
||
| Mac (client) | 10.66.66.2 |
|
||
| Mode | Split tunnel (seul le trafic 10.66.66.x passe par le VPN) |
|
||
| Config VPS | /etc/wireguard/wg0.conf |
|
||
|
||
---
|
||
|
||
## Traefik (reverse proxy)
|
||
|
||
- Géré par Coolify (container coolify-proxy)
|
||
- Certificats Let's Encrypt automatiques (HTTP challenge)
|
||
- Config dynamique : /data/coolify/proxy/dynamic/
|
||
- Coolify routé via fichier `coolify-domain.yaml` (nom container, pas IP)
|
||
- Nos services routés via labels Docker dans docker-compose.yml
|
||
|
||
---
|
||
|
||
## Ce qui reste à faire
|
||
|
||
- [ ] Phase 10 — Doppler (gestion des secrets)
|
||
- [ ] Phase 11 — OpenClaw (configuration agent)
|
||
- [ ] Phase 12 — Sync Vault Mac ↔ Gitea ↔ VPS
|
||
- [ ] Déplacer le vault hors d'iCloud (recommandé pour Git sync)
|
||
- [ ] Configurer les monitors Uptime Kuma
|
||
- [ ] Tester Whisper (envoi d'un fichier audio)
|
||
|
||
---
|
||
|
||
*Généré automatiquement par DAEMON — session du 17 avril 2026*
|
||
|
||
|
||
---
|
||
|
||
## Addendum — Hardening Docker (même session)
|
||
|
||
### Problème résolu
|
||
Docker bypass UFW en manipulant iptables directement. Les ports Coolify (8000, 8080, 6001, 6002) et nos services (3000, 3001, 5678) étaient accessibles depuis internet malgré les règles UFW DENY.
|
||
|
||
### Solution
|
||
Règles iptables dans la chaîne `DOCKER-USER` (la seule que Docker respecte) :
|
||
|
||
**Autorisé :**
|
||
- Ports 80/443 depuis partout (Traefik HTTPS + Let's Encrypt)
|
||
- Tout trafic depuis le VPN (10.66.66.0/24)
|
||
- Tout trafic Docker interne (10.0.0.0/8, 172.16.0.0/12)
|
||
- Port 22 (Gitea SSH) depuis le VPN uniquement
|
||
|
||
**Bloqué (DROP) depuis internet :**
|
||
- Port 8000 (Coolify)
|
||
- Port 8080 (Traefik dashboard)
|
||
- Port 6001/6002 (Coolify Realtime)
|
||
- Port 5678 (n8n)
|
||
- Port 3000 (Gitea)
|
||
- Port 3001 (Uptime Kuma)
|
||
|
||
### Persistance
|
||
`iptables-persistent` installé, règles sauvegardées → survivent au reboot.
|
||
|
||
### Résultat
|
||
- Accès direct IP:port depuis internet → **timeout (DROP)** ✅
|
||
- Accès HTTPS via domaines → **fonctionne** ✅ (Traefik route en interne)
|
||
- Accès VPN → **fonctionne** ✅
|
||
|
||
**Risque résiduel : 0** — Seuls les ports 80/443 (Traefik) et 2222 (SSH) sont accessibles depuis internet. Tout le reste est DROP.
|