Accueil
» Comment faire
»
Exécuter Collabora CODE Behind Nginx avec terminaison TLS
Exécuter Collabora CODE Behind Nginx avec terminaison TLS
Il est possible que les documents soient bloqués après la mise en place d'un protocole HTTPS pour Collabora CODE, car le proxy et CODE ne sont pas d'accord sur la fin de la connexion TLS, ou que le proxy bloque le trafic WebSocket. Configurez Nginx pour qu'il présente le certificat public, redirige vers un écouteur CODE privé et transmette les routes WebSocket. Les paramètres CODE sontssl.enable=false : [insérer les paramètres ici ssl.termination=true].
La terminaison TLS signifie que Nginx gère la connexion HTTPS et le certificat du navigateur, tandis que CODE utilise HTTP sur le port 9980 en arrière-plan. Sécurisez ce serveur : connectez-le à une interface de bouclage sur un hôte unique ou utilisez un réseau Docker privé. Si le trafic entre le proxy et CODE traverse un réseau non sécurisé, protégez cette liaison avec TLS ou un tunnel.
Le navigateur utilise HTTPS pour se connecter à Nginx ; HTTP est limité à la liaison privée entre le proxy et CODE.
Préparer le conteneur et le certificat
Choisissez le nom d'hôte public. Créez un enregistrement DNS pointant office.example.comvers le proxy Nginx. Obtenez un certificat pour ce nom d'hôte précis et installez sa chaîne de certificats et sa clé privée sur le proxy.
Gardez le port de CODE privé. Pour Nginx installé directement sur l'hôte Docker, publiez le port du conteneur uniquement sur l'interface de bouclage. Dans Compose, le mappage correspondant est : [ insérer le mappage ici 127.0.0.1:9980:9980]. Ne publiez pas 9980:9980sur toutes les interfaces de l'hôte, sauf si un pare-feu et une architecture réseau l'interdisent explicitement.
Configurez le mode TLS de CODE. Dans le service Compose, ajoutez les deux options à la configuration de CODE. L'exemple ci-dessous utilise une variable image pour vous permettre de spécifier l'étiquette exacte que vous avez vérifiée et testée.
La liaison à 127.0.0.1 garantit que l'écouteur CODE ne soit accessible que depuis l'hôte Docker.Ces options indiquent à CODE que TLS est géré par le proxy inverse.
Utilisez COLLABORA_CODE_IMAGEune image testée et validée. Conservez votre liste blanche d'hôtes WOPI et vos paramètres d'authentification ; la terminaison TLS ne les remplace pas. Si Nginx est un autre service Docker, omettez le mappage de port hôte et configurez un proxy http://collabora:9980sur le réseau privé partagé.
Configurez Nginx pour terminer le trafic TLS et le proxy CODE.
Ajoutez l'hôte virtuel HTTPS. Placez les emplacements suivants dans le bloc serveur Nginx pour le nom d'hôte public de Collabora. Remplacez le nom d'hôte et le chemin du certificat d'exemple. Cette configuration concerne une URL Collabora à la racine, et non une URL montée sous un chemin tel que `/etc/collabora` /office/.
Nginx détient le certificat public et écoute sur HTTPS pour le nom d'hôte Collabora.
Transmettez les routes relatives aux ressources, à la découverte et aux fonctionnalités de l'éditeur. Ces /cool/.../wsroutes /cool/adminwsnécessitent les en-têtes HTTP/1.1 et Upgrade pour que Nginx puisse tunneliser les WebSockets ; un délai d'expiration de lecture long permet de maintenir les sessions d'édition ouvertes. Consultez la documentation de Nginx sur le proxy WebSocket .
Transférez les ressources de l'éditeur, la découverte WOPI et les points de terminaison des capacités au même écouteur CODE.La route WebSocket principale nécessite HTTP/1.1 et les en-têtes Upgrade, sinon l'éditeur risque de se charger sans devenir utilisable.Transmettez également le WebSocket administratif et les autres routes de transfert de documents.
Appliquez la modification et vérifiez le comportement en fonction de la version
Validez Nginx avant de le recharger. Exécutez la commande suivante nginx -t. Poursuivez uniquement si Nginx indique que le test de configuration a réussi ; rechargez ensuite Nginx avec la commande de service habituelle de votre système.
Recréez le conteneur CODE. Appliquez la modification Compose docker compose up -d collabora. Consultez les journaux du conteneur pour détecter les erreurs de démarrage et vérifiez que la configuration active inclut bien les deux options SSL.
Exécutez le test de syntaxe avant de recharger la page afin qu'un bloc serveur mal formé n'interrompe pas les autres sites.
Pour information, le dépôt Collabora a enregistré un rapport le 22 juillet 2026 indiquant que le coolwsd --probecontrôle d'intégrité intégré à CODE 26.04.2.2 et versions ultérieures pouvait vérifier le protocole HTTPS sur le port 9980 même lorsque la connexion TLS s'arrêtait au niveau du proxy. Cela peut signaler un conteneur comme défaillant alors que le point de terminaison public répond. Consultez le rapport de problème associé à votre image ; testez le point de terminaison public et une session d'édition avant de considérer l'état d'intégrité comme la seule preuve d'une défaillance TLS. Conservez les contrôles d'intégrité jusqu'à ce qu'un autre outil de surveillance les remplace.
Vérifier la découverte HTTPS et une véritable session d'édition
Effectuez une requête https://office.example.com/hosting/discoverydans un navigateur ou avec [nom curlde l'outil/méthode]. Elle devrait renvoyer un fichier XML de découverte WOPI via HTTPS, avec des URL utilisant le nom d'hôte HTTPS public. Un avertissement de certificat indique un problème de nom d'hôte ou de certificat ; des URL HTTP indiquent une incompatibilité de mode TLS ou de schéma de transfert ; une erreur 502 indique que le proxy ne peut pas atteindre CODE.
Ensuite, ouvrez un document de test depuis l'hôte WOPI connecté et vérifiez que l'édition fonctionne. Dans les outils de développement du navigateur, la /cool/.../wsrequête doit établir une connexion WebSocket. Si la découverte fonctionne mais que l'édition est bloquée, vérifiez les emplacements et les en-têtes WebSocket. Assurez-vous que l'intégration autorise l'hôte WOPI et pointe vers celui-ci https://office.example.com.
Configuration réussie : le certificat est approuvé, la découverte utilise HTTPS, le port 9980 reste privé et un document de test s’ouvre et se modifie via le WebSocket.