Serveur "alexbalmes.dev" - Documentation Technique¶
📋 Introduction¶
- Objectif du serveur : Serveur d'apprentissage
- Cas d’usage principaux ( hébergement web, serveur de jeu, apprentissage)
- Public visé : Recruteur, Tech Lead.
🖥️ Infrastructure¶
1. Matériel¶
- VPS infomaniak
- 4 CPU/ 12go RAM/ 250go de stockage SSD
- bande passante garanti 350gb/s
2. Système¶
- Distribution : Ubuntu
- Version : 24.04 LTS
- Configuration de base :
- Gestion des utilisateurs
- Pas de connexion root directe
- Utilisateur avec droits sudo
- SSH
- Connexion uniquement par clé publique/privée
- Authentification par mot de passe désactivée
- Port SSH personnalisé
- Firewall
- Firewall hébergeur activé
- Règles minimales : SSH, HTTP/HTTPS, Port de Jeu
- Sécurité additionnelle
- Activation uniquement des services nécessaires
- Certificats SSL avec TLS 1.3 pour les sites web
- Sauvegarde hebdomadaire automatisée
- Surveillance & logs
- Journaux système activés
- Logs avancés via auditd
- Monitoring via Grafana
⚙️ Technologies¶
-
Outils installés sur l’hôte¶
- Docker : conteneurisation
- Docker Compose : orchestration des conteneurs
- rclone : synchronisation et sauvegardes
- auditd : audit de sécurité
### Stack par service (images Docker)
- Reverse Proxy: routage + SSL automatique
nginxproxy/nginx-proxynginxproxy/acme-companion
- Site Portfolio: Site Statique
dexlovecraft/portfolio:prod(Images personnalisé)
- Site Dashboard: Monitoring, Logs, et Visualisation
prom/prometheusprom/blackbox-exportergrafana/lokigrafana/promtailgrafana/grafana
- Site Documentation: Documentation statique
squidfunk/mkdocs-material
- Serveur Minecraft:
itzg/minecraft-server
🌐 Réseau & Sécurité¶
- Topologie réseau :
Internet
│
▼
[ VPS - Firewall ]
│
├──> [ Reverse Proxy ] (nginx-proxy + acme-companion)
│ ├──> Portfolio (nginx)
│ ├──> Documentation (mkdocs + nginx)
│ └──> Dashboard (Prometheus / Grafana stack)
│
└──> Serveur Minecraft (itzg/minecraft-server)
-
Routage et ports ouverts :
-
Port ouvert :
- 80: HTTP (reverse proxy)
- 443 : HTTPS (reverse proxy, TLS 1.3)
- *** : SSH (port custom)
- 25565 : Minecraft (accès direct au conteneur)
-
Routage web
portfolio.alexbalmes.dev-> reverse proxy -> portfolio-prodstaging-portfolio.alexbalmes.dev-> reverse proxy -> portfolio-stagingdashboard.alexbalmes.dev-> reverse proxy -> grafanadocs.alexbalmes.dev-> reverse proxy -> mkdocs
-
Service sans routage
limoncello-bay.alexbalmes.dev-> Direct -> Conteneur minecraft
-
Pare-feu : Oui hébergeur.
🗄️ Services Déployés¶
Hébergement Web¶
Reverse Proxy : nginxproxy/nginx-proxy + nginxproxy/acme-companion (gestion SSL automatique avec Let’s Encrypt / TLS 1.3).
Sites & services déployés :
- Portfolio (
nginx) →portfolio.alexbalmes.dev / staging-portfolio.alexbalmes.dev - Dashboard Monitoring (Prometheus, Grafana, Loki, Promtail, Blackbox exporter) →
dashboard.alexbalmes.dev - Documentation (MkDocs) →
docs.alexbalmes.dev
Certificats SSL : générés et renouvelés automatiquement via acme-companion (Let’s Encrypt).
Serveurs applicatifs¶
- Minecraft : itzg/minecraft-server →
limoncello-bay.alexbalmes.dev
Automatisation & Scripts¶
Script systemctl :
- Script maison pour mise a jour automatique des conteneurs.
Cron jobs :
- Script maison pour backups hebdomadaires (via
rclone→ vers stockage externe).
Monitoring¶
Outils utilisés :
- Prometheus (collecte des métriques)
- Blackbox exporter (surveillance de l’uptime / endpoints web)
- Loki + Promtail (centralisation et collecte des logs)
-
Grafana (visualisation et dashboard)
-
auditd (logs supplémentaire)
🧩 Déploiement & Maintenance¶
- Procédure de déploiement: Services conteneurisés avec Docker et orchestrés via Docker Compose
- Sauvegardes et restauration: Sauvegardes hebdomadaires automatisées via rclone (cron job)
- Mise à jour (système, packages, services) : Version figé , mises a jour manuelle (pour continuité de service)