Azure NXT Maxscale — Infrastructure Nextcloud Haute Disponibilité
Pure Open Source. Zero limits, zero vendor lock-in.
Infrastructure Nextcloud Haute DisponibilitéDéploiement en une commande
curl -fsSL https://raw.githubusercontent.com/oboeglen/Azure-NXT-Maxscale/main/deploy.sh \
-o /tmp/deploy.sh && sudo bash /tmp/deploy.sh
Architecture
Un point d'entrée unique. Zéro point de défaillance unique. Basculement automatique < 10 secondes.
Tous les fichiers utilisateur résident dans MinIO S3 — la chute d'un nœud est transparente pour les utilisateurs
Stack Technique
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
Aperçu
Interface Nextcloud déployée avec Azure NXT Maxscale — thème personnalisé et branding intégré.
Benchmarks
Charge brute
| Endpoint | VUs | Débit | P95 | P99 | Err. |
|---|---|---|---|---|---|
| /status.php | 20 | 120 req/s | 365 ms | 388 ms | 0/200 |
| /login | 20 | 44 req/s | 697 ms | 862 ms | 0/200 |
| /status.php | 100 | 247 req/s | 365 ms | 375 ms | 0/500 |
| Stress max | 150 | 231 req/s | 959 ms | 1 059 ms | 0/600 |
Simulation PME 500 DAU
| Scénario | avg | p(95) | SLA | |
|---|---|---|---|---|
| Sessions navigateur | 74 ms | 155 ms | < 4 s | ✓ |
| Sync WebDAV | 862 ms | 1 980 ms | < 3 s | ✓ |
| Collabora WOPI | 959 ms | 2 160 ms | < 5 s | ✓ |
| Whiteboard | 904 ms | 2 060 ms | < 5 s | ✓ |
k6 v0.55 · 34 VUs · 3 911 requêtes · 0 erreur HTTP 5xx · 38 timeouts (0,97 %)
Dimensionnement
| Profil | FPM | DB Galera | Redis | RAM | Utilisateurs |
|---|---|---|---|---|---|
| 🧪 Test / dev | 1–2 | 1 | 0 (APCu) | 8–16 Go | < 100 |
| 🏢 Petite équipe | 3 | 3 | 6 | 22–28 Go | ~1 500 |
| 🏭 PME ★ | 6 | 5 | 6 | 32–40 Go | ~2 500 |
| 🏦 Entreprise | 9–12 | 5–7 | 6–8 | 48–64 Go | 3 000–3 600 |
| 🏙️ Grande organisation | 15–20 | 7 | 8 | 64–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
- Cloner le dépôt :
git clone https://github.com/oboeglen/Azure-NXT-Maxscale - Copier
.env.example→.envet remplir toutes les valeurs - Générer les certificats SSL Let's Encrypt via Certbot
- Créer les répertoires de données MinIO
- Lancer :
docker compose up -d
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
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 8 cœurs | 16+ cœurs |
| RAM | 16 Go | 32 Go |
| Disque | 500 Go SSD | 1+ 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
Licence & Contribution
Libre d'utilisation commerciale et personnelle, modifiable et redistribuable sans restriction. Attribution requise.
Lire la licence →Fork le projet, ouvre une issue ou soumets une pull request. Toutes les contributions sont les bienvenues.
Voir sur GitHub →