Réalisation 1 — Projet personnel

Infrastructure Auto-Hébergée

Proxmox VE · 6 services · Domaine personnel · SSL · VPN · DNS filtrant

Infrastructure Auto-Hébergée — Proxmox VE

Projet personnel réalisé en janvier–février 2026 sur un serveur physique dédié. L'objectif : déployer une stack complète de services auto-hébergés accessibles depuis Internet via un nom de domaine personnel, avec SSL automatique sur tous les services et accès VPN pour les services sensibles.

Serveur physique dédié — processeur 6 cœurs · 16 Go RAM · NVMe (système) + HDD 500 Go (sauvegardes)
Proxmox VE LXC KVM Nginx Proxy Manager WireGuard AdGuard Home Nextcloud Vaultwarden Let's Encrypt DNSSEC

Architecture réseau

Vue d'ensemble

L'infrastructure repose sur 5 conteneurs LXC et 1 VM KVM, chacun hébergeant un service distinct. Un unique point d'entrée HTTP/HTTPS (Nginx Proxy Manager) distribue le trafic selon le sous-domaine. Les services critiques ne sont accessibles que via VPN WireGuard.

Schéma de l'architecture réseau de l'infrastructure Proxmox

Choix architecturaux

  • NPM comme point d'entrée unique : simplifie la gestion SSL — un seul endroit pour gérer tous les certificats et le routage
  • Restriction VPN : Proxmox, Vaultwarden et Heimdall ne sont pas joignables depuis Internet sans VPN actif
  • Split-horizon DNS : les sous-domaines résolvent vers les IPs privées en LAN — évite le hairpin NAT et accélère les accès internes
  • LXC vs KVM : services légers en conteneur LXC pour minimiser l'overhead ; Nextcloud en VM KVM pour des raisons de compatibilité

Mise en place de l'infrastructure

1. Proxmox VE — L'hyperviseur

Installation bare-metal

Installation depuis ISO sur le serveur physique. Dès la première mise en service, un conflit d'adresse IP est détecté : un équipement du réseau local utilisait déjà l'IP attribuée par défaut à Proxmox.

Résolution du conflit

nano /etc/network/interfaces

# Modifier l'adresse statique :
address [nouvelle-ip]/24
gateway [passerelle]

# Appliquer sans redémarrer :
ifreload -a

Stockage

  • NVMe : système Proxmox + images des conteneurs/VMs
  • HDD 500 Go (ext4) : dédié aux sauvegardes automatisées

Sauvegardes automatisées

Tâche Proxmox planifiée pour sauvegarder tous les conteneurs et la VM chaque nuit :

Quotidien à 05h00  ·  Compression ZSTD  ·  Rétention : 5 dernières sauvegardes

2. Réseau — IP publique & DNS

Problème initial : CGNAT

La box opérateur était en mode CGNAT (Carrier-Grade NAT) : l'IP publique était partagée entre plusieurs abonnés, rendant impossible toute connexion entrante depuis Internet.

Solution : IP Full-Stack

Demande d'une IP publique fixe dédiée auprès de l'opérateur. Une fois attribuée, configuration du port forwarding sur la box :

Port 80 → NPM  ·  Port 443 → NPM  ·  Port 51820/UDP → WireGuard

Domaine & DNS

Achat d'un nom de domaine personnalisé. Configuration de la zone DNS :

# Enregistrement wildcard
*.[mon-domaine].fr  →  [IP publique]

# Résultat : tous les sous-domaines
# pointent automatiquement vers le serveur
# sans ajout DNS pour chaque nouveau service
  • DNSSEC activé sur le domaine
  • Wildcard : aucune configuration DNS à chaque ajout de service

Services déployés

3. Nginx Proxy Manager

Point d'entrée unique pour tout le trafic web. NPM reçoit toutes les requêtes HTTP/HTTPS et les redistribue vers le bon service selon le sous-domaine, avec SSL Let's Encrypt automatique.

Certificats automatiques

Chaque service obtient son certificat Let's Encrypt depuis NPM — renouvellement automatique, aucune intervention manuelle.

Proxy Hosts configurés

Sous-domaine Destination Accès
nextcloud.[mon-domaine].fr VM 104 :443 Public
heimdall.[mon-domaine].fr CT 101 :7990 VPN only
vaultwarden.[mon-domaine].fr CT 103 :8000 VPN only
proxmox.[mon-domaine].fr Proxmox :8006 VPN only

4. AdGuard Home — DNS filtrant

Serveur DNS filtrant pour l'ensemble du réseau local. Agit comme un « trou noir DNS » : les requêtes vers des domaines publicitaires, trackers ou phishing sont bloquées avant d'atteindre les appareils.

Filtres actifs

10 listes de filtres DNS couvrant :

  • Publicités & trackers
  • Phishing & malwares
  • Domaines malveillants connus

Split-Horizon DNS

Configuration clé : *.[mon-domaine].fr résolvent localement vers les IPs privées des conteneurs.

Sans split-horizon, les requêtes internes sortiraient sur Internet puis reviendraient (hairpin NAT). Avec split-horizon, tout reste en LAN — plus rapide, plus propre.

5. WireGuard VPN

VPN moderne et performant donnant accès aux services sensibles depuis n'importe où, comme si on était sur le réseau local. Géré via l'interface web WGDashboard.

Configuration

# Sous-réseau VPN
10.0.0.0/24

Serveur (CT 105) : 10.0.0.1
PC-Bureau         : 10.0.0.2  → split-tunnel
Mobile            : 10.0.0.3  → full-tunnel

Deux modes de tunneling

  • Split-tunnel (PC) : seul le trafic vers le LAN passe par le VPN — navigation internet directe
  • Full-tunnel (mobile) : tout le trafic passe par le VPN — sécurisé en Wi-Fi public

Vérification

sudo wg show

# Résultat attendu :
# interface: wg0
#   peer: [clé publique PC-Bureau]
#     latest handshake: X seconds ago
#     transfer: X MiB received, X MiB sent

6. Vaultwarden

Gestionnaire de mots de passe auto-hébergé, 100% compatible avec les clients Bitwarden (extension navigateur, app mobile, desktop). Les données restent sur le serveur personnel.

Durcissement post-installation

Désactivation des inscriptions publiques pour que personne d'autre ne puisse créer de compte :

# Localiser le fichier de configuration
find / -name ".env"
# → /opt/vaultwarden/.env

# Éditer le bon fichier
nano /opt/vaultwarden/.env

# Modifier :
SIGNUPS_ALLOWED=false
Erreur commise : modification accidentelle du fichier .env~ (sauvegarde éditeur) au lieu de .env. La commande find a permis d'identifier le bon chemin.

Accès

Accessible uniquement via VPN — jamais exposé directement depuis Internet.

7. Nextcloud — Cloud personnel

Solution de cloud auto-hébergée pour la synchronisation de fichiers, l'agenda et les contacts. Seul service accessible depuis Internet sans VPN.

Pourquoi une VM et pas un conteneur ?

Nextcloud présente des incompatibilités avec les conteneurs LXC non-privilégiés (gestion des permissions, namespaces). Il est donc déployé dans une VM KVM complète basée sur l'image TurnKey Linux Nextcloud.

Optimisation PHP

Activation du cache opcache pour améliorer la réactivité de l'interface :

; Dans php.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000

8. Heimdall — Tableau de bord

Interface web centralisant les accès à tous les services de l'infrastructure. Accessible uniquement via VPN — sert de point d'entrée unique pour l'administration.

Services référencés

  •   Proxmox (hyperviseur)
  •   WireGuard Dashboard (VPN)
  •   Vaultwarden (mots de passe)
  •   Nextcloud (cloud personnel)
  •   Nginx Proxy Manager
  •   AdGuard Home (DNS)
  •   Box opérateur

Bilan

Résultats

  • 6 services auto-hébergés opérationnels en production (5 CT LXC + 1 VM KVM)
  • Infrastructure accessible depuis Internet via domaine personnel, SSL sur tous les services
  • VPN WireGuard fonctionnel sur 2 appareils avec configurations différenciées
  • Filtrage DNS actif pour tout le réseau local (10 listes de filtres)
  • Sauvegardes automatisées quotidiennes avec rétention 5 jours

Ce que j'ai appris

  • Gestion complète d'une infrastructure bare-metal avec Proxmox VE
  • Mise en réseau avancée : reverse proxy SSL, VPN, DNS split-horizon, DNSSEC
  • Différences pratiques LXC (légèreté, overhead minimal) vs KVM (compatibilité complète)
  • Résolution de problèmes réels : CGNAT, conflit IP, erreur de fichier de config

Axes d'amélioration

  • Uptime Kuma : supervision temps réel avec alertes en cas d'indisponibilité
  • Cluster Proxmox : second nœud pour la haute disponibilité
  • Sauvegarde 3-2-1 : copie externe des sauvegardes (actuellement local uniquement)
  • Fail2ban + SSH durci : authentification par clé uniquement, désactivation root
  • Ansible : automatiser le déploiement pour reconstruire l'infra rapidement en cas de sinistre

Sources

Retour aux projets