Skip to content

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-proxy
    • nginxproxy/acme-companion
  • Site Portfolio: Site Statique
    • dexlovecraft/portfolio:prod (Images personnalisé)
  • Site Dashboard: Monitoring, Logs, et Visualisation
    • prom/prometheus
    • prom/blackbox-exporter
    • grafana/loki
    • grafana/promtail
    • grafana/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-prod
    • staging-portfolio.alexbalmes.dev -> reverse proxy -> portfolio-staging
    • dashboard.alexbalmes.dev -> reverse proxy -> grafana
    • docs.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)