Intégrez ONLYOFFICE Docs derrière HAProxy sans interrompre l'édition.

Exécutez ONLYOFFICE Docs derrière HAProxy en terminant le trafic HTTPS au niveau du proxy, en redirigeant l'hôte et le schéma d'origine, et en autorisant les connexions WebSocket persistantes. Commencez avec un serveur de documents opérationnel ; n'ajoutez d'autres serveurs que lorsque votre déploiement ONLYOFFICE est configuré pour un fonctionnement multi-nœuds pris en charge, et non pas simplement parce que HAProxy peut distribuer les requêtes.

HAProxy peut-il équilibrer la charge de deux serveurs de documents indépendants ?

HAProxy peut répartir les requêtes HTTP entre les nœuds, mais cela ne transforme pas deux installations ONLYOFFICE autonomes en un cluster d'édition coordonné. Une session d'édition conserve des connexions persistantes et un état d'application. L' exemple actif-actif officiel d'ONLYOFFICE utilise des contrôles d'intégrité du serveur et un cookie de persistance ; il s'agit de mécanismes de routage, et non de substituts aux services partagés et à l'architecture applicative requis par votre édition.

Pour une installation classique sur un seul serveur, utilisez uniquement docs1la configuration backend ci-dessous. Pour une installation à deux nœuds, vérifiez d'abord l'architecture du cluster, l'édition prise en charge, les dépendances partagées, la compatibilité des versions et la configuration JWT à l'aide de la documentation de déploiement ONLYOFFICE ou auprès du support technique de votre fournisseur. Les adresses indiquées en exemple ( 10.0.10.21et 10.0.10.22) sont des adresses IP privées illustratives et non des hôtes découverts.

Que doit-on configurer correctement avant de modifier HAProxy ?

Le nom public docs.example.comdoit correspondre à votre point de terminaison HAProxy. HAProxy nécessite l'accès aux ports TCP entrants 80 et 443 ainsi qu'un accès au réseau privé de chaque serveur de documents sur le port 80. Votre application de gestion documentaire doit également pouvoir accéder à l'adresse publique Docs, tandis que ONLYOFFICE doit pouvoir récupérer des documents et envoyer des notifications à l'application. Sécurisez le trafic HTTP du serveur ; chiffrez la connexion au serveur séparément si elle traverse un réseau non sécurisé.

  1. Vérifiez chaque serveur de documents depuis l'hôte proxy. Exécutez la commande curl -i http://10.0.10.21/healthchecket, le cas échéant, la curl -i http://10.0.10.22/healthcheckcommande correspondante. Un point de terminaison opérationnel renvoie normalement une réponse HTTP 200 avec un corps contenant «  » true. Si l'un de ces éléments échoue, examinez le routage, les pare-feu ou l'état du serveur avant de configurer l'équilibrage de charge.
  2. Confirmez un secret JWT fixe. Le serveur de documents et son connecteur doivent utiliser le même secret. Pour les installations Docker, ONLYOFFICE documente la JWT_SECRETvariable d'environnement ; depuis Docs 7.2, l'utilisation d'un secret généré automatiquement peut entraîner des échecs d'intégration après une recréation ou un redémarrage. Dans les déploiements multi-nœuds pris en charge, harmonisez les secrets entre les nœuds conformément à l'architecture du fournisseur.
Le terminal vérifie http://10.0.10.21/healthcheck et affiche un code HTTP 200 avec la valeur « true » dans le corps de la réponse.
Une requête de vérification de l'état du serveur d'arrière-plan renvoie un code HTTP 200 et la valeur « true » avant que le serveur ne soit ajouté à HAProxy.

Ces vérifications suivent les recommandations du fournisseur concernant l'installation de Docker et la configuration de JWT . Ne désactivez pas JWT pour contourner une erreur de proxy.

Comment configurer HTTPS et transmettre les en-têtes appropriés ?

Étape 1 : Préparer le certificat

Obtenez un certificat de confiance couvrant le domaine docs.example.com. Dans cet exemple Linux, HAProxy lit un fichier PEM contenant la chaîne de certificats suivie de la clé privée. Si des certificats existent déjà ailleurs, remplacez leurs chemins d'accès. Limitez l'accès au fichier PEM combiné et configurez sa reconstruction lors du renouvellement du certificat.

sudo install -d -m 700 /etc/haproxy/certs
sudo sh -c 'umask 077; cat /etc/letsencrypt/live/docs.example.com/fullchain.pem /etc/letsencrypt/live/docs.example.com/privkey.pem > /etc/haproxy/certs/docs.example.com.pem'
Terminal Ubuntu affichant le répertoire des certificats, le fichier PEM docs.example.com et les permissions de fichiers restreintes.
Le certificat et la clé privée sont placés dans un fichier PEM protégé pour l'écouteur HTTPS.

Étape 2 : Ajouter le frontend et le backend

Sauvegardez votre configuration actuelle /etc/haproxy/haproxy.cfget adaptez les sections suivantes plutôt que de remplacer aveuglément les paramètres de journalisation ou de service spécifiques à votre distribution. Voici une configuration illustrative pour les versions récentes d'HAProxy. Elle accepte uniquement le protocole HTTP pour la redirection, termine le trafic HTTPS sur le port 443, redirige l'hôte et le schéma publics et surveille le point de terminaison d'état de l'application.

global
    log /dev/log local0

defaults
    mode http
    log global
    option httplog
    option forwardfor
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    timeout tunnel 1h

frontend docs_http
    bind :80
    http-request redirect scheme https code 301

frontend docs_https
    bind :443 ssl crt /etc/haproxy/certs/docs.example.com.pem
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]
    default_backend docs_nodes

backend docs_nodes
    option http-server-close
    balance roundrobin
    cookie SERVERID insert indirect nocache
    option httpchk GET /healthcheck
    http-check expect string true
    server docs1 10.0.10.21:80 check cookie docs1
    server docs2 10.0.10.22:80 check cookie docs2
L'éditeur de configuration HAProxy affiche une interface TLS et deux adresses de serveur de documents privées.
La configuration HAProxy sépare son écouteur TLS public de ses serveurs de documents internes ; utilisez l’intégralité des directives indiquées ci-dessus.

Supprimez cette docs2ligne sauf si le second nœud est réellement prêt. Le cookie de persistance permet aux requêtes HTTP suivantes de revenir au nœud sélectionné. HAProxy gère la mise à niveau d'une connexion WebSocket HTTP sans réécriture d'URL spécifique ; timeout tunnel 1hles connexions mises à niveau et inactives restent ouvertes plus longtemps que les requêtes ordinaires. La documentation WebSocket de HAProxy explique ce comportement.

X-Forwarded-ProtoLe paramétrage httpsest correct ici car cette interface termine les requêtes HTTPS publiques. Ne faites pas confiance à un schéma de redirection arbitraire fourni par le client ou à un hôte situé à la périphérie d'Internet. La documentation du proxy ONLYOFFICE exige explicitement que X-Forwarded-Protole X-Forwarded-Hostcontexte de l'URL externe soit conservé.

Comment recharger et tester l'équilibreur de charge ?

Étape 3 : Valider avant de basculer le trafic

Vérifiez la syntaxe avant de recharger. Un code de sortie différent de zéro signifie que vous devez résoudre l'erreur de configuration ou de certificat signalée avant de continuer :

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxy
curl -i https://docs.example.com/healthcheck
Terminal affichant la commande de validation de la configuration HAProxy et un message de configuration valide.
Validez le fichier haproxy.cfg avant de recharger le service ; une validation syntaxique réussie ne remplace pas la modification des tests.

La réponse du contrôle d'intégrité public doit afficher un code HTTP 200 truelorsqu'un serveur est opérationnel. HAProxy utilise les directives option httpchk`remove` et `remove` http-check expectpour retirer les nœuds défaillants de la rotation des nouvelles requêtes ; consultez sa documentation sur les contrôles d'intégrité . Un contrôle réussi ne garantit pas le bon fonctionnement de l'édition de documents ni de la distribution des rappels.

Étape 4 : Confirmer la modification, les WebSockets et l’enregistrement

Ouvrez un document via votre application intégrée, telle qu'un système de gestion documentaire connecté à ONLYOFFICE Docs. Dans les outils de développement de votre navigateur, utilisez le panneau Réseau pour examiner la connexion WebSocket : la négociation de mise à niveau doit réussir, généralement avec le code d'état HTTP101 Switching Protocols 90. Apportez une modification mineure, fermez l'éditeur, rouvrez le document et vérifiez que la modification a bien été enregistrée. Pour un déploiement à deux nœuds correctement pris en charge, testez également avec un deuxième collaborateur et lors d'une interruption planifiée sur un seul nœud pendant une fenêtre de maintenance.

Si le contrôle d'intégrité public fonctionne mais que l'éditeur se bloque ou se déconnecte, examinez les avertissements de contenu mixte, les échecs WebSocket, les incohérences JWT et vérifiez si l'application de documents peut accéder à l'URL Docs annoncée. Si un document s'ouvre mais ne s'enregistre jamais, vérifiez la connectivité du serveur de documents avec l'application source plutôt que de modifier la politique de répartition de charge d'HAProxy. Une session WebSocket active interrompue peut nécessiter une reconnexion du client ; les contrôles d'intégrité du serveur ne garantissent pas une reprise d'édition transparente.

Vérification finale : le point de terminaison de santé publique et un test réel de modification et de réouverture doivent être concluants. Conservez uniquement les nœuds vérifiés et pris en charge en rotation, assurez-vous que le renouvellement du certificat recharge le fichier PEM correct et surveillez les journaux HAProxy pour détecter les réponses 502/503 répétées ou les déconnexions WebSocket inattendues.

Laisser un commentaire

Automatisez les sauvegardes Nextcloud cohérentes avec Restic et Cron

Automatisez les sauvegardes Nextcloud cohérentes avec Restic et Cron

Sauvegardez simultanément les fichiers de Nextcloud et de MariaDB, planifiez des instantanés Restic chiffrés avec cron et vérifiez la récupération sans risquer le serveur en production.

Debian 12 sur un VPS à faible RAM : Comment réduire les plantages MySQL dus à une erreur de mémoire insuffisante

Debian 12 sur un VPS à faible RAM : Comment réduire les plantages MySQL dus à une erreur de mémoire insuffisante

Diagnostiquer les erreurs OOM de MySQL sur Debian 12, vérifier les limites de mémoire du VPS, configurer le swap et optimiser la mémoire et la concurrence de la base de données sans promettre de solution universelle.

Sauvegarde et restauration d'une boîte aux lettres Zimbra CE à l'aide d'exportations TGZ

Sauvegarde et restauration d'une boîte aux lettres Zimbra CE à l'aide d'exportations TGZ

Exportez une boîte aux lettres individuelle de Zimbra Community Edition, validez sa sauvegarde TGZ et restaurez les éléments manquants sans écraser les messages existants.

Autoriser les utilisateurs approuvés à créer des salles Jitsi avec connexion Keycloak

Autoriser les utilisateurs approuvés à créer des salles Jitsi avec connexion Keycloak

Autoriser uniquement les comptes approuvés à créer des salles Jitsi Meet en utilisant l'authentification Keycloak et par jeton, tout en laissant la possibilité de rejoindre les invités en cas de besoin.

Ajout de polices au serveur de documents ONLYOFFICE : Docker ou Linux ?

Ajout de polices au serveur de documents ONLYOFFICE : Docker ou Linux ?

Installez des polices personnalisées dans ONLYOFFICE Document Server, comparez les montages Docker persistants avec les copies directes, reconstruisez la liste des polices et vérifiez le résultat.

Synchronisez les utilisateurs Active Directory avec ONLYOFFICE DocSpace via LDAP.

Synchronisez les utilisateurs Active Directory avec ONLYOFFICE DocSpace via LDAP.

Connectez ONLYOFFICE DocSpace à Active Directory ou OpenLDAP, importez les utilisateurs et les groupes en toute sécurité, mappez les champs de compte et planifiez une synchronisation fiable.

Intégrez ONLYOFFICE Docs derrière HAProxy sans interrompre l'édition.

Intégrez ONLYOFFICE Docs derrière HAProxy sans interrompre l'édition.

Configurez HAProxy HTTPS, le transfert des en-têtes, les délais d'expiration WebSocket et les contrôles d'intégrité pour ONLYOFFICE Docs, puis vérifiez les modifications et les enregistrements.

Installation et signature de modules de noyau personnalisés sur SLES 15 Secure Boot

Installation et signature de modules de noyau personnalisés sur SLES 15 Secure Boot

Chargez un module noyau SLES 15 personnalisé sans désactiver le démarrage sécurisé. Associez-le au noyau en cours d'exécution, signez le fichier .ko, enregistrez une clé MOK et vérifiez le chargement.

Transfert Syslog SLES sécurisé avec rsyslog et TLS mutuel

Transfert Syslog SLES sécurisé avec rsyslog et TLS mutuel

Envoyer les journaux système SLES à un collecteur rsyslog distant via TLS authentifié, avec vérifications de certificat, mise en mémoire tampon en cas de panne et tests de livraison.

Démarrage d'Ubuntu Server en mode d'urgence : Guide de dépannage étape par étape

Démarrage d'Ubuntu Server en mode d'urgence : Guide de dépannage étape par étape

Diagnostiquez en toute sécurité le mode d'urgence d'Ubuntu Server. Consultez les journaux de démarrage, vérifiez les points de montage racine et fstab, réparez une unité défaillante, gérez les erreurs du système de fichiers et assurez-vous d'un redémarrage correct.