Aller au contenu principal

Réseau & Docker

Tous les services OpenVLE fonctionnent dans des conteneurs Docker et communiquent via un réseau Docker interne. Seuls quelques ports sont publiés vers l'extérieur. Pour la production, un reverse proxy en amont est recommandé, mais pas strictement obligatoire.

Réseau Docker

Le stack Docker Compose crée automatiquement un réseau interne (openvle-internal). Tous les conteneurs sont connectés entre eux via ce réseau et peuvent se joindre mutuellement par leurs noms de service (par exemple backend, mariadb, redis).

Résolution DNS

Docker Compose fournit une résolution DNS interne : les conteneurs peuvent contacter d'autres conteneurs en utilisant le nom du service comme nom d'hôte. C'est pourquoi les variables d'environnement contiennent par exemple MARIADB_HOST = "db" au lieu d'une adresse IP.

Ports exposés

Dans le fichier docker-compose.yml standard, seuls deux ports sont publiés vers l'extérieur :

ServicePort conteneurPort hôteFonction
frontend8080Interface web (Vue.js/Nginx)
backend808000API REST (FastAPI)

Les deux services doivent être accessibles depuis le navigateur de l'utilisateur final : le Frontend sert l'interface web, et le navigateur communique directement avec le Backend à l'exécution (requêtes API).

Tous les autres services (MariaDB, MongoDB, Redis, Worker, Scheduler) ne publient aucun port et ne sont accessibles qu'en interne.

Reverse Proxy (recommandé)

Lorsqu'un Reverse Proxy est utilisé, les publications de ports doivent être restreintes à 127.0.0.1, car l'accès externe passe alors par le proxy :

ports:
- 127.0.0.1:80:80
- 127.0.0.1:8000:8000

Chemins de communication

Accès externe

Avec Reverse Proxy (recommandé) :

Browser → Reverse Proxy → Frontend (Port 80)
Browser → Reverse Proxy → Backend (Port 8000)

Sans Reverse Proxy :

Browser → Frontend (Port 80)
Browser → Backend (Port 8000)

Un reverse proxy est optionnel, mais recommandé pour la production — il prend en charge la terminaison SSL, le routage et éventuellement la répartition de charge. Consultez Reverse Proxy pour la mise en place.

Communication interne

DeVersFonction
backendmariadbLecture/écriture des entités principales
backendmongodbÉcriture des activités et des journaux
backendredisMise en file d'attente des tâches en arrière-plan
workermariadbLecture/écriture lors de l'exécution des tâches
workerredisRécupération des jobs depuis la file d'attente
schedulermariadbRécupération des jobs depuis la base de données
schedulerredisMise en file d'attente des tâches périodiques

Systèmes externes

OpenVLE communique avec les systèmes externes suivants :

SystèmeDirectionProtocoleFonction
Proxmox VEBackend/Worker → ProxmoxHTTPS (8006/tcp)Gestion des VMs via l'API Proxmox
Serveur SMTPBackend/Worker → SMTPSSL/TLS (465/tcp)Envoi d'e-mails
Apache Guacamole (optionnel, recommandé)Backend/Worker → GuacamoleHTTPS (443/tcp)Gestion des connexions via l'API Guacamole
Moodle (optionnel)Backend/Worker → MoodleHTTPS (443/tcp)Gestion des cours et des participants via l'API Moodle Web Services
Serveur LDAP (optionnel)Backend/Worker → LDAPLDAP(S) (389/636)Authentification des utilisateurs
Fournisseur OIDC (optionnel)Backend → OIDCHTTPS (443/tcp)Single Sign-On
Règles de pare-feu

Le serveur OpenVLE doit pouvoir établir des connexions sortantes vers les systèmes externes mentionnés ci-dessus. Assurez-vous que les ports correspondants sont ouverts dans le pare-feu.