Azure NXT Maxscale — Infrastructure Nextcloud Haute Disponibilité

Pure Open Source. Zero limits, zero vendor lock-in.

v2.1.8

Infrastructure Nextcloud Haute DisponibilitéDéploiement en une commande

GitHub →
curl -fsSL https://raw.githubusercontent.com/oboeglen/Azure-NXT-Maxscale/main/deploy.sh \
  -o /tmp/deploy.sh && sudo bash /tmp/deploy.sh
Hub-and-Spoke

Architecture

Un point d'entrée unique. Zéro point de défaillance unique. Basculement automatique < 10 secondes.

HAProxy 2.8
Point d'entrée unique · :80 (ACME) · :443 (TLS)
Nginx + PHP-FPM
Nextcloud 33
multi-nœuds
Collabora CODE
Bureautique
multi-nœuds
Whiteboard
Temps Réel
multi-nœuds
MariaDB Galera
Cluster 11.4
Réplication synchrone
Redis Cluster
7.4 · 3M + 3R
Sessions · Cache · Locks
MinIO S3
Erasure Coding
Stockage distribué

Tous les fichiers utilisateur résident dans MinIO S3 — la chute d'un nœud est transparente pour les utilisateurs

10 technologies

Stack Technique

HAProxy 2.8
Reverse proxy SSL · Load balancing · Stats
Nginx 1.27
Fichiers statiques · FastCGI proxy
Nextcloud 33
Plateforme collaborative · WebDAV · Cron
PHP 8.4 FPM
Application runtime · OPcache · Multi-nœuds
MariaDB Galera 11.4
Réplication synchrone · Quorum · Autoheal
Redis 7.4
Sessions · Cache · Verrouillage fichiers
MinIO S3
Stockage objet · Erasure coding distribué
Collabora CODE
Writer · Calc · Impress collaboratif
Docker Compose
Orchestration · Santé · Déploiement
Let's Encrypt
Certificats SSL · Renouvellement auto

Fonctionnalités

Haute Disponibilité

  • Basculement automatique < 10 secondes
  • MariaDB Galera quorum multi-nœuds
  • Redis Cluster 3 masters + 3 replicas
  • MinIO erasure coding distribué
  • Reconnexion automatique Collabora & Whiteboard

Sécurité Renforcée

  • TLS 1.2+ (1.3 préféré), ECDHE + AES-GCM + CHACHA20
  • HSTS 2 ans + includeSubDomains + preload
  • CSP étendue, filtrage WAF intégré
  • Paths sensibles bloqués (403)
  • Anti-Slowloris, méthodes dangereuses filtrées

Performance Validée

  • 231 req/s sous 150 connexions simultanées
  • 0 erreur sur 1 900 requêtes en stress
  • P99 login : 862 ms · P95 status : 365 ms
  • ~2 500 utilisateurs actifs (config PME★)
  • OPcache, previews optimisés, cron 5 min

Collaboration Complète

  • Nextcloud 33 — fichiers, agenda, contacts
  • Collabora CODE — Writer, Calc, Impress
  • Whiteboard collaboratif temps réel
  • WebDAV, CalDAV, CardDAV natifs
  • Apps non essentielles désactivées par défaut
Interface

Aperçu

Interface Nextcloud déployée avec Azure NXT Maxscale — thème personnalisé et branding intégré.

Page de connexion Nextcloud personnalisée
Page de connexion
Dashboard Nextcloud
Dashboard
6 FPM · 5 Galera · 6 Redis · MinIO 4×2 · 3 Collabora · 3 Whiteboard

Benchmarks

Charge brute

EndpointVUsDébitP95P99Err.
/status.php20120 req/s365 ms388 ms0/200
/login2044 req/s697 ms862 ms0/200
/status.php100247 req/s365 ms375 ms0/500
Stress max150231 req/s959 ms1 059 ms0/600

Simulation PME 500 DAU

Scénarioavgp(95)SLA
Sessions navigateur74 ms155 ms< 4 s
Sync WebDAV862 ms1 980 ms< 3 s
Collabora WOPI959 ms2 160 ms< 5 s
Whiteboard904 ms2 060 ms< 5 s

k6 v0.55 · 34 VUs · 3 911 requêtes · 0 erreur HTTP 5xx · 38 timeouts (0,97 %)

Dimensionnement

ProfilFPMDB GaleraRedisRAMUtilisateurs
🧪 Test / dev1–210 (APCu)8–16 Go< 100
🏢 Petite équipe33622–28 Go~1 500
🏭 PME ★65632–40 Go~2 500
🏦 Entreprise9–125–76–848–64 Go3 000–3 600
🏙️ Grande organisation15–207864–80 Go~4 000

Déploiement

Le script automatisé gère les 10 étapes : vérification système, installation Docker, configuration interactive, certificats SSL Let's Encrypt, déploiement et vérification de santé.

curl -fsSL https://raw.githubusercontent.com/oboeglen/Azure-NXT-Maxscale/main/deploy.sh \
  -o /tmp/deploy.sh && sudo bash /tmp/deploy.sh
Mode manuel — 5 étapes
  1. Cloner le dépôt : git clone https://github.com/oboeglen/Azure-NXT-Maxscale
  2. Copier .env.example.env et remplir toutes les valeurs
  3. Générer les certificats SSL Let's Encrypt via Certbot
  4. Créer les répertoires de données MinIO
  5. Lancer : docker compose up -d
Avant déploiement — 3 sous-domaines DNS configurés Ports 80 et 443 libres Architecture x86_64

FAQ

Les questions les plus fréquentes avant de déployer.

Oui. Le profil Test / dev (1–2 nœuds FPM, 1 nœud Galera, cache APCu) fonctionne à partir de 8 Go de RAM sur une machine unique. La haute disponibilité multi-nœuds est optionnelle : deploy.sh configure le profil selon vos réponses interactives et enregistre la configuration pour chaque relance ultérieure.

La bascule est transparente pour les utilisateurs. HAProxy redistribue le trafic en moins de 10 secondes. Le quorum Galera maintient la cohérence des données, galera-autoheal redémarre automatiquement les nœuds hors-sync, le cluster Redis tolère la perte d'un nœud par slot de hash, et MinIO continue les lectures pendant la récupération du nœud défaillant via l'erasure coding.

Les certificats Let's Encrypt sont générés automatiquement par deploy.sh (challenge HTTP-01 ou TLS-ALPN-01) et renouvelés toutes les 12 heures par le service certbot. Un healthcheck surveille l'expiration à 30 jours. HAProxy applique TLS 1.2 minimum avec TLS 1.3 préféré, suites ECDHE + AES-GCM + CHACHA20 et no-tls-tickets pour la confidentialité persistante.

Non. deploy.sh applique automatiquement un patch binaire sur chaque nœud coolwsd qui remplace les limites home_mode (20 connexions, 10 documents) par INT_MAX. Le patch est conservé lors des redémarrages et réappliqué lors des mises à jour via deploy.sh. Si la version de Collabora change et que le pattern est introuvable, le patch est ignoré avec un avertissement — la stack reste fonctionnelle.

Tous les fichiers sont stockés dans MinIO en erasure coding distribué — le stockage local de Nextcloud n'est utilisé que pour les données temporaires. Le versioning du bucket est activé automatiquement à l'installation. En production, chaque chemin DATA{N} doit pointer vers un disque physique distinct pour que la tolérance aux pannes soit effective.

Relancez deploy.sh : si une infrastructure existante est détectée, le script propose un mode mise à jour rapide (pull des nouvelles images + recreate des conteneurs) sans reconfiguration. Le patch Collabora est réappliqué automatiquement. Consultez le CHANGELOG avant chaque mise à jour majeure.

Prérequis

Ressources système

RessourceMinimumRecommandé
CPU8 cœurs16+ cœurs
RAM16 Go32 Go
Disque500 Go SSD1+ To SSD

Systèmes supportés

  • Debian 11 / 12 / 13
  • Ubuntu 22.04 / 24.04
  • RHEL / Rocky Linux 8 / 9
  • AlmaLinux 8 / 9

Architecture x86_64 requise — Docker & Compose installés automatiquement

Open Source · MIT

Licence & Contribution

Licence MIT

Libre d'utilisation commerciale et personnelle, modifiable et redistribuable sans restriction. Attribution requise.

Lire la licence →
Contribuer

Fork le projet, ouvre une issue ou soumets une pull request. Toutes les contributions sont les bienvenues.

Voir sur GitHub →