VPS Hostinger - Stack ENGWE
Guide complet et reproductible pour transformer un VPS Hostinger KVM2 (Ubuntu, 8 Go RAM) fraîchement installé en serveur d'applications propre et sécurisé.
Deux parcours possibles - choisis-en UN
Les deux mènent au même résultat (tes services en HTTPS sur des sous-domaines). La différence : qui gère le point d'entrée (ports 80/443) et le déploiement.
| 🟢 Parcours A - Coolify (recommandé) | Parcours B - Nginx Proxy Manager | |
|---|---|---|
| Idée | Plateforme type Vercel/Heroku : tout en clics | Reverse proxy + stack Docker faite main |
| Déployer TES applis | ✅ Intégré (Git / Dockerfile / compose, secrets, tests, SSL auto) | ❌ À scripter soi-même |
| Installer n8n, NocoDB… | ✅ Catalogue 1-clic | 🟠 Via docker-compose.yml fourni |
| Reverse proxy / SSL | ✅ Automatique (Traefik) | 🟠 Manuel dans l'UI NPM |
| Contrôle bas niveau | Bon | Total |
| Idéal si… | tu veux déployer des applis facilement | tu veux tout maîtriser à la main |
⚠️ Ne combine pas les deux : Coolify et NPM veulent tous les deux les ports 80/443. Un seul à la fois.
Recommandation : commence par le Parcours A (Coolify) - c'est le plus simple pour ton besoin « déployer mes applis avec une interface ».
Services installés
| Service | Rôle | Sous-domaine | Exposé |
|---|---|---|---|
| Coolify (parcours A) | Plateforme de déploiement + proxy + SSL | coolify-it.engwe-france.fr |
HTTPS |
| Nginx Proxy Manager (parcours B) | Reverse proxy + SSL (UI web) | npm-it.engwe-france.fr |
Tunnel SSH |
| n8n | Automatisations / workflows | n8n-it.engwe-france.fr |
HTTPS |
| Open WebUI | Chat branché sur API externe (OpenAI / Claude via LiteLLM) | chat-it.engwe-france.fr |
HTTPS |
| NocoDB | Interface tableur (type Airtable) sur PostgreSQL - pour non-IT | data-it.engwe-france.fr |
HTTPS |
| PostgreSQL 16 | Base relationnelle (n8n, NocoDB, tes apps) | - | Privé (réseau interne) |
| MongoDB 7 | Base NoSQL | - | Privé (réseau interne) |
| Mongo Express | Interface graphique MongoDB | mongo-it.engwe-france.fr |
HTTPS + auth |
| Portainer | Interface graphique pour gérer Docker | portainer-it.engwe-france.fr |
HTTPS |
| Uptime Kuma | Surveillance de disponibilité + alertes | uptime-it.engwe-france.fr |
HTTPS |
| FastAPI | Exemple d'API Python prête à déployer | api-it.engwe-france.fr |
HTTPS |
Schéma de sous-domaines :
<nom>-it.engwe-france.fr(un seul niveau, un A record chacun). La racineengwe-france.frreste sur Shopify pour ton site.Les bases de données ne sont jamais exposées à Internet : accessibles seulement par les autres conteneurs.
Budget mémoire (indicatif, parcours Coolify)
| Composant | RAM approx. |
|---|---|
| Coolify (Traefik + core) | ~600 Mo |
| PostgreSQL | ~250 Mo |
| MongoDB | ~300 Mo |
| NocoDB | ~300 Mo |
| n8n | ~400 Mo |
| Open WebUI | ~300 Mo |
| Mongo Express | ~80 Mo |
| Portainer | ~100 Mo |
| Uptime Kuma | ~150 Mo |
| FastAPI + tes apps | ~150 Mo+ |
| Total | ~2,6 Go / 8 Go |
Marge confortable. Un swap de 2 Go est ajouté par sécurité.
Ordre d'exécution
🟢 Parcours A - Coolify (recommandé)
⭐ Pressé ? → docs/00-demarrage-rapide.md : toutes les étapes + commandes, du PC au déploiement GitHub, dans l'ordre. Les documents ci-dessous sont les versions détaillées.
- docs/01-serveur-initial.md - Utilisateur non-root, SSH, UFW, fail2ban, swap. Obligatoire, en premier.
- docs/06-coolify.md - Installer Coolify, déployer les services en 1 clic, déployer tes applis (GitHub org + tests + secrets).
- docs/07-openwebui-modeles.md - Limiter/organiser les modèles d'Open WebUI (OpenRouter + Claude), accès par groupe, garde-fous de coût.
- docs/09-uptime-kuma.md - Surveillance des services + alertes (sondes, types de vérifs, notifications).
- docs/10-variables-env-par-service.md - Variables d'environnement par service et où trouver chaque valeur.
- docs/05-maintenance-sauvegardes.md - Sauvegardes, mises à jour, monitoring.
(Docker s'installe automatiquement avec Coolify - le doc 02 est facultatif.)
🩹 Un blocage/message d'erreur pendant l'installation ou le déploiement ? docs/08-erreurs-connues.md recense les erreurs déjà rencontrées (SSH, permissions Coolify, réseaux Docker) avec leur fix exact.
Parcours B - Nginx Proxy Manager (alternatif, à la main)
- docs/01-serveur-initial.md - Durcissement initial.
- docs/02-docker.md - Installer Docker + Compose.
- docs/03-dns-et-reverse-proxy.md - DNS + Nginx Proxy Manager + SSL.
- docs/04-lancer-la-stack.md - Lancer toute la stack via
docker compose. - docs/05-maintenance-sauvegardes.md - Sauvegardes, mises à jour, monitoring.
📄 Vue d'ensemble visuelle : recap.html (aussi publiée en Artifact).
Structure du dépôt
HOSTINGER_VPS_ENGWE/
├── README.md ← ce fichier
├── recap.html ← page récap visuelle
├── docs/
│ ├── 01-serveur-initial.md
│ ├── 02-docker.md
│ ├── 03-dns-et-reverse-proxy.md (parcours B)
│ ├── 04-lancer-la-stack.md (parcours B)
│ ├── 05-maintenance-sauvegardes.md
│ ├── 06-coolify.md (parcours A - recommandé)
│ ├── 07-openwebui-modeles.md (limiter les modèles OpenRouter/Claude)
│ ├── 08-erreurs-connues.md (dépannage - erreurs déjà rencontrées)
│ ├── 09-uptime-kuma.md (surveillance & alertes)
│ └── 10-variables-env-par-service.md (variables d'env par service, où trouver quoi)
├── scripts/
│ ├── 01-bootstrap.sh ← durcissement initial (à lancer en root)
│ └── 02-install-docker.sh ← installation Docker (parcours B)
└── docker/ ← stack du parcours B
├── docker-compose.yml
├── .env.example
├── postgres/initdb/01-databases.sh
└── fastapi/
├── Dockerfile
├── requirements.txt
└── app/main.py
Principes de sécurité appliqués
- Authentification SSH par clé uniquement (mot de passe désactivé partout).
- Usage quotidien via l'utilisateur sudo dédié
engwe-seer;rootreste joignable par clé uniquement (PermitRootLogin prohibit-password) - jamais par mot de passe - car Coolify en a besoin pour gérer son propre serveur. - UFW n'ouvre que 22 (SSH), 80 et 443 (web).
- Bases de données non exposées sur Internet.
- Secrets dans des variables chiffrées (Coolify) ou
docker/.env(jamais committé). - HTTPS partout via Let's Encrypt (auto-renouvelé).
