4.7 KiB
4.7 KiB
Xpeditis 2.0 — Déploiement Production sur Hetzner Cloud
Documentation complète de bout en bout : du choix des serveurs au déploiement production Stack : k3s (Kubernetes léger) + Hetzner Object Storage (S3) + PostgreSQL + Redis
Pourquoi ce guide
Ce guide couvre le déploiement de Xpeditis sur Hetzner Cloud avec k3s (Kubernetes léger), de la création du compte Hetzner jusqu'à la surveillance en production. C'est l'option la plus économique (€65-450/mois vs $270-5000 sur AWS) tout en restant production-grade.
Ce que vous obtiendrez en suivant ce guide :
- Cluster Kubernetes k3s sur Hetzner avec autoscaling
- Backend NestJS et Frontend Next.js déployés en HA
- PostgreSQL managé (Neon.tech) ou self-hosted selon le budget
- Redis (Upstash) ou self-hosted
- Hetzner Object Storage en remplacement de MinIO (zéro changement de code)
- TLS automatique via Let's Encrypt + Cloudflare
- CI/CD avec GitHub Actions
- Monitoring avec Prometheus + Grafana
- Backups automatisés vers Object Storage
- Runbooks d'opérations et de troubleshooting
Vue d'ensemble des fichiers
| # | Fichier | Contenu | Temps estimé |
|---|---|---|---|
| — | README.md | Ce fichier — index et quickstart | — |
| 01 | Architecture | Diagrammes, composants, flux réseau | 15 min lecture |
| 02 | Prérequis | Outils, comptes, SSH, DNS | 30-60 min setup |
| 03 | Setup Hetzner | Compte, API token, réseau, firewall | 20 min |
| 04 | Choix des serveurs | Sizing par palier, ARM vs x86 | 10 min lecture |
| 05 | Cluster k3s | Installation complète du cluster | 30-45 min |
| 06 | Stockage S3 | Hetzner Object Storage, migration MinIO | 15 min |
| 07 | Base de données | PostgreSQL (Neon ou self-hosted) | 20-60 min |
| 08 | Redis | Redis (Upstash ou self-hosted) | 15-30 min |
| 09 | Manifests Kubernetes | Tous les YAMLs complets | 30 min |
| 10 | Ingress + TLS | Traefik, cert-manager, Cloudflare | 30 min |
| 11 | CI/CD GitHub Actions | Pipeline build + deploy complet | 30 min |
| 12 | Monitoring | Prometheus, Grafana, Loki, alertes | 45 min |
| 13 | Backups | Stratégie backup + runbook DR | 20 min |
| 14 | Sécurité | Hardening, network policies, WAF | 30 min |
| 15 | Opérations | Scaling, upgrades, troubleshooting | Référence |
Temps total de déploiement (première fois) : 4-6 heures
Quickstart — Du zéro à la production
Si vous avez déjà tous les prérequis, voici le chemin minimum :
# 1. Installer hetzner-k3s
brew install vitobotta/tap/hetzner-k3s
# 2. Configurer (voir 03-hetzner-setup.md)
export HCLOUD_TOKEN=<votre_token>
# 3. Créer le cluster (voir 05-k3s-cluster.md)
hetzner-k3s create --config cluster.yaml
# 4. Configurer kubectl
export KUBECONFIG=~/.kube/kubeconfig-xpeditis-prod
# 5. Créer les namespaces et secrets
kubectl apply -f k8s/namespaces.yaml
kubectl apply -f k8s/secrets.yaml # après avoir rempli les valeurs
# 6. Déployer l'application
kubectl apply -f k8s/
# 7. Vérifier
kubectl get pods -n xpeditis-prod
Coûts récapitulatifs
| Palier | Config Hetzner | Coût/mois (post 1er avril 2026) |
|---|---|---|
| MVP (100 users) | 1×CX22 + 2×CX32 | €36 (+ €19 Neon.tech + €0 Upstash free) = ~€55 |
| Croissance (1 000 users) | 1×CX22 + 3×CX42 | €91 (+ DB self-hosted) = ~€110 |
| Scale (10 000 users) | 3×CX22 + 6×CX52 | €340 (+ DB self-hosted HA) = ~€390 |
Architecture résumée
Internet → Cloudflare (WAF + CDN) → Hetzner LB → k3s Ingress (Traefik)
├── api.xpeditis.com → NestJS pods
└── app.xpeditis.com → Next.js pods
↓
PostgreSQL (Neon / self-hosted)
Redis (Upstash / self-hosted)
Hetzner Object Storage (S3-compatible)
Conventions utilisées dans ce guide
<VALEUR>— à remplacer par votre valeurxpeditis-prod— namespace Kubernetes de productionfsn1— région Hetzner par défaut (Falkenstein, Allemagne)- Les commandes
kubectlsupposentKUBECONFIGdéjà configuré - Les prix sont en EUR, basés sur les tarifs Hetzner post 1er avril 2026