Correction du problème de déconnexion des sessions d'édition de documents CODE après 10 minutes

Si un document Collabora Online Development Edition (CODE) s'ouvre normalement, que les modifications fonctionnent, puis que l'éditeur se déconnecte au bout de 10 minutes environ, commencez par vérifier le chemin WebSocket entre le navigateur et CODE. Une coupure systématique de 600 secondes est bien plus révélatrice d'un problème de proxy inverse, de contrôleur d'entrée, d'équilibreur de charge ou de pare-feu que des délais d'inactivité par défaut de CODE.

Cette distinction est importante car modifier les paramètres d'inactivité de CODE peut masquer le véritable problème sans résoudre la connexion qui achemine le trafic d'édition. Le modèle de configuration Collabora actuel prévoit un délai d'inactivité de 15 minutes par vue et d'une heure par document, et non une limite de 10 minutes par session d'édition. Voir le modèle coolwsd.xml en amont . Si les utilisateurs sont en train de saisir du texte au moment de la déconnexion, un paramètre CODE basé uniquement sur l'inactivité est une explication encore moins convaincante.

Que signifie généralement une déconnexion de 10 minutes ?

Vérifié : L’exemple Nginx publié par Collabora utilise des en-têtes de mise à niveau WebSocket et un entier long proxy_read_timeout 36000spour la connexion WebSocket principale. Nginx indique que les connexions WebSocket proxy sont fermées lorsqu’aucune donnée n’est reçue dans le délai de lecture configuré, dont la proxy_read_timeoutvaleur par défaut est de 60 secondes. Consultez le manuel du SDK Collabora Online et la documentation du proxy WebSocket de Nginx .

Dépendance à l'environnement : un délai d'attente de 600 secondes peut être introduit par une autre couche proxy, même si le serveur Nginx en amont semble correctement configuré. Parmi les composants courants, on trouve Kubernetes Ingress, HAProxy, un équilibreur de charge cloud, un WAF ou un proxy inverse en amont. La valeur exacte du délai d'attente et la clé de configuration dépendent de ce composant.

Le symptôme seul ne prouve pas que Nginx soit en cause : « déconnexions après 10 minutes » ne suffit pas. Il est nécessaire de capturer l’erreur WebSocket et de corréler son horodatage avec les journaux du proxy et de CODE avant de modifier plusieurs couches simultanément.

Action : reproduire l’erreur avec les outils de développement du navigateur ouverts et enregistrer la durée de vie exacte de la requête WebSocket.

Le panneau Réseau des outils de développement du navigateur, filtré sur le trafic WebSocket, indique une erreur d'édition WebSocket après environ 10 minutes.
Utilisez le panneau Réseau de votre navigateur pour vérifier si la connexion WebSocket d'édition se termine à un moment précis. Il s'agit d'une vue de diagnostic illustrative, et non d'un enregistrement de session de production.

Étape 1 : Confirmer que c’est bien le WebSocket qui tombe en panne.

Ouvrez un document, puis les outils de développement de votre navigateur et accédez à l'onglet Réseau. Filtrez le trafic WebSocket. Le trafic lié à l'édition de code inclut généralement une /cool/connexion WebSocket. Laissez le document ouvert au-delà du point de défaillance.

Lors de la déconnexion de la session, examinez la requête WebSocket. Les informations les plus pertinentes sont sa durée, le délai de fermeture, le statut HTTP lors de la mise à jour initiale et la présence éventuelle d'une erreur réseau signalée par le navigateur. Une connexion initiale correcte 101 Switching Protocolssuivie d'une fermeture après environ 600 secondes indique un problème de durée de vie de la connexion ou de politique d'inactivité quelque part dans le processus.

Si la connexion WebSocket ne se met jamais à jour correctement, il ne s'agit pas d'un problème de délai d'attente de 10 minutes ; commencez par corriger le routage et les en-têtes WebSocket. Si la connexion WebSocket reste établie malgré l'affichage d'une erreur de stockage ou d'enregistrement dans l'éditeur, examinez plutôt le chemin d'accès WOPI/stockage.

Action : notez l’heure de début et l’heure de déconnexion, puis comparez ces horodatages avec les journaux d’accès/d’erreurs du proxy inverse et les journaux du conteneur ou du service CODE.

Étape 2 : Vérifiez la règle de proxy inverse CODE avant de modifier les valeurs d’inactivité de CODE

Pour Nginx, l'important est que l'emplacement WebSocket transmette les en-têtes de mise à jour et dispose d'un délai d'expiration de lecture suffisamment long. Le manuel du SDK de Collabora illustre ce modèle pour le WebSocket principal :

location ~ ^/cool/(.*)/ws$ {
    proxy_pass https://127.0.0.1:9980;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 36000s;
}

Si la connexion TLS est terminée par Nginx et que CODE sert intentionnellement du HTTP simple en aval, le schéma en amont peut être http://différent. Ne copiez pas ce schéma aveuglément : il doit correspondre à la configuration de votre instance CODE.

Une idée fausse courante est que ce paramètre proxy_connect_timeoutcontrôle la durée de vie d'une session d'édition déjà établie. En réalité, il ne la contrôle pas ; il s'applique lors de l'établissement de la connexion au serveur en amont. Le paramètre le plus pertinent pour une session WebSocket proxy établie, avec des périodes sans données en amont, est `http_output_session` proxy_read_timeout. Nginx documente ce comportement dans la documentation de son module proxy HTTP .

Action : localisez le bloc Nginx correspondant à l’URL WebSocket CODE et vérifiez que le délai d’expiration y est bien défini, et non pas dans un bloc non lié location.

Éditeur de code affichant un bloc serveur Nginx avec des en-têtes de mise à niveau WebSocket et un délai d'expiration de lecture proxy long mis en évidence
Configurez le délai d'attente long sur la règle qui gère le trafic WebSocket de CODE. Le protocole et le chemin d'accès en amont doivent correspondre exactement à votre déploiement.

Étape 3 : Prendre en compte les modifications apportées au proxy CODE 26.04

En octobre 2026, les notes de version de Collabora pour CODE 26.04 mentionnent la version 26.04.4.2, publiée le 24 septembre 2026. La série 26.04 a introduit une URL WebSocket plus compacte. Collabora indique que les configurations de proxy existantes peuvent nécessiter une mise à jour ; dans les versions ultérieures de CODE 26.04, l'ancienne URL pourra être utilisée et un avertissement d'audit sera émis si le proxy n'est pas mis à jour. Les utilisateurs d'Apache2 ont été spécifiquement invités à mettre à jour leur règle ProxyPass lors de la sortie de la version 26.04. Consultez les notes de version officielles de CODE 26.04 .

Cela ne signifie pas que chaque déconnexion de 10 minutes est due à la modification de l'URL compacte. Cela signifie que sur la version 26.04, vous devez vérifier vos règles de proxy inverse en les comparant à la documentation de la version que vous utilisez, surtout si le problème est apparu après une mise à jour.

Action : vérifiez votre version de CODE dans la section « À propos » du produit ou dans l’étiquette de l’image du conteneur, puis comparez votre configuration de proxy avec les recommandations actuelles de Collabora concernant les proxys. Ne considérez pas qu’une règle copiée d’un déploiement antérieur (version 24.04) soit toujours optimale.

Étape 4 : Vérifier Kubernetes Ingress, HAProxy, Apache et les autres boîtiers intermédiaires

Si Nginx n'est qu'une couche en amont du code, l'augmentation de son délai d'expiration peut s'avérer insuffisante. Pour Kubernetes utilisant ingress-nginx, le projet documente les annotations par Ingress nommées `ingress-nginx` nginx.ingress.kubernetes.io/proxy-read-timeoutet ` nginx.ingress.kubernetes.io/proxy-send-timeoutingress-nginx-timeout`. Ses recommandations concernant WebSocket préconisent des valeurs supérieures à une heure pour les connexions persistantes. Consultez la documentation officielle d'Ingress-Nginx sur les annotations et les notes WebSocket .

metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"

Pour HAProxy, l'exemple du SDK de Collabora utilise un délai d'expiration de tunnel long pour le trafic de type WebSocket. Pour Apache, le délai d'expiration générique du proxy est géré par `mod_proxy` ProxyTimeout, mais la norme CODE 26.04 exige également une attention particulière au modèle ProxyPass WebSocket actuel. La documentation de `mod_proxy` d'Apache explique les ProxyTimeoutparamètres de contrôle.

Action : tracer le chemin de connexion du navigateur au code et examiner chaque étape. Une limite de 600 secondes à chaque étape peut toujours interrompre la session.

Étape 5 : Validez et rechargez le proxy en toute sécurité

Après avoir modifié la configuration Nginx, testez-la avant de la recharger :

sudo nginx -t
sudo systemctl reload nginx

Si Nginx s'exécute dans un conteneur, utilisez la procédure de validation et de rechargement adaptée aux conteneurs au lieu de supposer systemctlson existence. Il est essentiel de valider la syntaxe avant de remplacer la configuration en cours d'exécution.

Action : modifier une couche à la fois, enregistrer la valeur précédente, valider la configuration, puis tester à nouveau le même flux de travail documentaire.

Fenêtre de terminal affichant la validation de la syntaxe de la configuration nginx, suivie d'une commande de rechargement nginx réussie.
Validez la configuration du proxy inverse avant de la recharger afin qu'une correction de délai d'attente n'introduise pas un problème de disponibilité distinct.

Étape 6 : Valider la correction avec un test plus long que l’ancienne limite

Ne cessez pas les tests lorsque le document se rouvre. Laissez la même session d'édition ouverte bien au-delà du point de défaillance précédent. Pour un symptôme durant 10 minutes, une période de validation de 20 à 30 minutes est plus utile qu'un test rapide de deux minutes. Gardez le panneau Réseau ouvert et effectuez des modifications occasionnelles afin de distinguer une session d'édition active d'un onglet totalement inactif.

Un bon résultat présente trois signes : la connexion WebSocket reste établie pendant plus de 10 minutes, l’éditeur continue d’accepter les modifications sans invites de reconnexion et aucun délai d’attente correspondant n’apparaît dans les journaux intermédiaires ou CODE.

Si la connexion se ferme toujours exactement 10 minutes après l'augmentation du délai d'expiration du proxy le plus proche, cela constitue une preuve utile qu'un autre nœud a toujours une politique de 600 secondes.

Action : poursuivre le traçage vers l’extérieur jusqu’à ce que le composant qui émet le signal de fermeture ou le délai d’expiration soit identifié.

Panneau Réseau des outils de développement du navigateur affichant une connexion WebSocket (statut 101) maintenue pendant plus de 12 minutes.
Après la modification, vérifiez que la connexion WebSocket reste établie au-delà de la limite précédente de 10 minutes ; la durée indiquée ici est à titre indicatif.

Ne confondez pas les temporisateurs d'inactivité de CODE avec une coupure réseau de 10 minutes.

Le modèle de configuration CODE en amont indique actuellement une durée per_view.idle_timeout_secsde 900 secondes, soit 15 minutes. Sa description précise que l'affichage est assombri et que les mises à jour s'arrêtent lorsque l'utilisateur est inactif. La idle_timeout_secsvaleur par défaut au niveau du document est de 3 600 secondes, soit une heure, avant qu'un document inactif ne soit déchargé.

Il est utile de vérifier ces valeurs si votre comportement y correspond, mais aucune des valeurs par défaut n'explique une déconnexion de 600 secondes. Si quelqu'un a précédemment personnalisé coolwsd.xmlles variables d'environnement, les valeurs Helm ou les paramètres du conteneur, votre déploiement peut différer des valeurs par défaut.

Action : n’inspectez la configuration CODE effective qu’après avoir déterminé si la panne se situe au niveau du réseau ou de l’application. N’augmentez pas systématiquement toutes les valeurs inactives dans un premier temps.

Tableau de diagnostic rapide

Comportement observéVérification suivante la plus utileCe qu'il ne faut pas supposer
La connexion WebSocket se ferme au bout d'environ 600 secondes lorsque l'utilisateur est actif.Délai d'expiration du proxy, du serveur d'entrée, de l'équilibreur de charge ou du pare-feuCe code comporte une limite intégrée de 10 minutes pour l'éditeur.
WebSocket n'atteint jamais le code HTTP 101Mise à niveau des en-têtes, du routage, du schéma TLS en amont et des chemins de proxy actuels (version 26.04)L'augmentation des délais d'attente à elle seule sera utile.
La panne a commencé après la mise à jour vers la version CODE 26.04.Comparez les règles relatives aux procurations avec les directives actuelles du 26 avril.Qu'une ancienne configuration de proxy 24.04 est automatiquement équivalente
Seuls les onglets inactifs/en arrière-plan sont concernés.Comportement d'inactivité par vue du code, plus délais d'inactivité intermédiairesLes échecs de session active et de session inactive ont la même cause
La connexion WebSocket reste ouverte, mais les sauvegardes échouent.Journaux WOPI/stockage et demandes d'enregistrementLe délai d'expiration du WebSocket est la cause première

En résumé

Pour une session d'édition de code qui se déconnecte systématiquement après 10 minutes, la procédure la plus efficace est la suivante : confirmer l'échec de la connexion WebSocket, vérifier la règle de proxy inverse correspondante, examiner chaque délai d'expiration intermédiaire, prendre en compte les modifications apportées au chemin du proxy dans CODE 26.04, recharger la page en toute sécurité et tester au-delà de l'ancien délai. Ne modifiez les paramètres d'inactivité de CODE que si le comportement observé et la configuration effective le justifient.

Si le délai d'attente n'est pas reproductible, ou si les journaux CODE indiquent des plantages, des arrêts de processus, une saturation de la mémoire ou des erreurs WOPI au même moment, il ne s'agit plus d'un simple dépassement de délai. Ces symptômes nécessitent un diagnostic différent.

Laisser un commentaire

Qu'est-ce que Microsoft Access ? Comment fonctionnent ses outils de base de données ?

Qu'est-ce que Microsoft Access ? Comment fonctionnent ses outils de base de données ?

Microsoft Access est une application de base de données Windows permettant de stocker des enregistrements liés, de créer des requêtes, de concevoir des formulaires de saisie de données et de générer des rapports. Découvrez son fonctionnement et ses cas d'utilisation.

Importation et exportation depuis Office Outlook 2010 : Déplacer des données avec un fichier PST

Importation et exportation depuis Office Outlook 2010 : Déplacer des données avec un fichier PST

Découvrez comment importer un fichier PST dans Outlook 2010 ou exporter vos e-mails, contacts, calendrier et tâches. Suivez les instructions dans les menus pour éviter les dossiers manquants ou les doublons.

Modifier la hauteur et la largeur du quadrillage dans Word 2010

Modifier la hauteur et la largeur du quadrillage dans Word 2010

Apprenez à ajuster la hauteur et la largeur des lignes de la grille dans Word 2010, à modifier la fréquence des lignes visibles et à définir l'espacement horizontal et vertical de la grille de dessin sous-jacente.

Récupérer un mot de passe PST Outlook avec Nucleus Kernel

Récupérer un mot de passe PST Outlook avec Nucleus Kernel

Récupérez un mot de passe Outlook PST oublié grâce aux étapes actuelles de Kernel, notamment comment identifier le bon fichier, effectuer une sauvegarde et vérifier les limites de l'outil.

Comment insérer une page web interactive dans une diapositive PowerPoint

Comment insérer une page web interactive dans une diapositive PowerPoint

Utilisez le module complémentaire LiveWeb pour placer un site web sur une diapositive PowerPoint, définir sa taille et son comportement d'actualisation, et vérifier la compatibilité avant la présentation.

Ajoutez les jours fériés nationaux à votre calendrier Outlook

Ajoutez les jours fériés nationaux à votre calendrier Outlook

Ajoutez les jours fériés spécifiques à chaque pays dans le nouvel Outlook, Outlook sur le web ou Outlook classique. Découvrez comment éviter les doublons et vérifier si des dates sont manquantes pour 2026-2027.

Contacts Outlook 2010 : Ajouter des personnes et utiliser le carnet d’adresses

Contacts Outlook 2010 : Ajouter des personnes et utiliser le carnet d’adresses

Apprenez à créer et à organiser des contacts Outlook 2010, à constituer un groupe de contacts et à choisir des personnes enregistrées dans le carnet d'adresses lors de la rédaction d'e-mails.

Comment supprimer les métadonnées et le contenu cachés d'un document Word

Comment supprimer les métadonnées et le contenu cachés d'un document Word

Utilisez l'Inspecteur de document de Word pour examiner les informations sur l'auteur, les commentaires, le suivi des modifications, le texte masqué et d'autres données avant de partager un document, et découvrez ce que l'analyse peut manquer.

Histogramme comparatif dans Excel 2010 : Créer un graphique à barres symétriques

Histogramme comparatif dans Excel 2010 : Créer un graphique à barres symétriques

Créez un histogramme comparatif dans Excel 2010 sous forme de graphique à barres symétriques. Conservez les effectifs des sources, alignez les deux groupes autour de zéro et étiquetez clairement les axes.

Access 2010 : Exporter une table de base de données vers Excel 2010

Access 2010 : Exporter une table de base de données vers Excel 2010

Exportez un tableau Access 2010 vers Excel 2010, choisissez d'inclure ou non la mise en forme, enregistrez les étapes d'exportation réutilisables et vérifiez les problèmes courants de transfert de données.