Documentation — DataLab0Page 32 / 36 — Déploiement serveur Proxmox / NAT — Notes d’exploitation · v00001 · b00005

Déploiement serveur Proxmox / NAT — Notes d’exploitation

Contexte validé

Cette archive a été déployée sur une VM Ubuntu dédiée dans Proxmox.

Architecture utilisée :

Internet
  ↓
IP publique Proxmox
  ↓ NAT / port forwarding
VM Ubuntu privée 192.168.100.10
  ↓
Docker Compose DataLab0

VM unique ou plusieurs VM ?

Pour cette archive, une seule VM suffit.

Les services applicatifs sont séparés en containers Docker :

reverse-proxy
workspace-web
viewer-web
api
worker
scheduler
postgres
redis
minio

Ce ne sont pas des VM séparées.

Une séparation multi-VM deviendra utile plus tard pour une production plus exigeante :

  • PostgreSQL dédié ou managé ;
  • Redis dédié ;
  • stockage S3/MinIO séparé ;
  • workers sur VM séparées ;
  • monitoring/backups séparés ;
  • Kubernetes éventuel.

Réseau Proxmox validé

Bridge public existant :

vmbr0 -> interface publique Proxmox

Bridge privé créé :

vmbr1 -> 192.168.100.1/24

Exemple /etc/network/interfaces côté Proxmox :

auto vmbr1
iface vmbr1 inet static
    address 192.168.100.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0

Activer le bridge sans redémarrer tout le réseau :

ifup vmbr1

NAT Proxmox

Activer l’IP forwarding :

sysctl -w net.ipv4.ip_forward=1

Le rendre persistant :

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

Règle NAT de sortie pour les VM privées :

iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE

Configuration réseau Ubuntu VM

Exemple Netplan pour la VM :

network:
  version: 2
  ethernets:
    enp6s18:
      dhcp4: false

    enp6s19:
      addresses:
        - 192.168.100.10/24
      routes:
        - to: default
          via: 192.168.100.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

Appliquer :

sudo chmod 600 /etc/netplan/01-netcfg.yaml
sudo netplan apply

Tests :

ping 192.168.100.1
ping 8.8.8.8
ping google.com

SSH vers la VM privée

Port forwarding Proxmox utilisé :

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 2222 -j DNAT --to-destination 192.168.100.10:22
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.10 --dport 22 -j MASQUERADE

Connexion depuis le PC :

ssh -p 2222 admin@IP_PUBLIQUE_PROXMOX

Exposition HTTP de DataLab0

Docker expose le reverse proxy sur le port 8080 de la VM.

Port forwarding Proxmox :

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.100.10:8080
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.10 --dport 8080 -j MASQUERADE

Accès depuis navigateur :

http://IP_PUBLIQUE_PROXMOX:8080/

Routes utiles :

/             -> accueil DataLab0
/workspace/   -> interface
/doc.html     -> documentation
/viewer/      -> viewer placeholder
/api/health   -> API healthcheck

Rendre les règles iptables persistantes

Installer :

apt install -y iptables-persistent

Sauvegarder :

netfilter-persistent save

DNS Proxmox

Si apt update ne résout pas les domaines :

nano /etc/resolv.conf

Ajouter :

nameserver 1.1.1.1
nameserver 8.8.8.8

Repository Proxmox Enterprise

Sans abonnement Proxmox, désactiver le dépôt enterprise :

nano /etc/apt/sources.list.d/pve-enterprise.list

Commenter :

# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise

Puis :

apt update

Déploiement d’une nouvelle archive sur la VM

Depuis le PC Windows :

scp -P 2222 .\saas_bi_docker_ready_v1_1.zip admin@IP_PUBLIQUE_PROXMOX:~/projects/

Dans la VM :

cd ~/projects
mkdir -p saas_bi_v1_1
unzip saas_bi_docker_ready_v1_1.zip -d saas_bi_v1_1
cd saas_bi_v1_1
docker compose up -d --build

Si l’ancienne stack tourne depuis ~/projects, l’arrêter d’abord depuis son dossier :

cd ~/projects
docker compose down

Points de vigilance

  • Les règles iptables Proxmox doivent être persistées.
  • Les mots de passe Docker Compose actuels sont des valeurs de développement.
  • PostgreSQL, Redis et MinIO sont dans la même VM pour ce socle initial.
  • Avant production réelle, prévoir HTTPS, sauvegardes, firewall, monitoring et rotation des secrets.