
C’est quoi collabora online
Collabora Online est une suite bureautique en ligne compatible avec un navigateur web.
C’est l’équivalent d’Office 365 ou de Google Docs, mais en open source.
Dans le cas de Nextcloud, la version utilisée est Collabora Online (CODE), c’est-à-dire l’édition communautaire.
Voici quelques capture d’écran


Contexte
jusqu’à maintenant mon Nextcloud utilisé collabora online version intégrer,
Sa fonctionne mais pas évolutif et plus lent

j’ai donc pris la décision de m’atteler à la tâche suivante : installer Collabora Online dans un conteneur Docker sur ma machine virtuelle dédiée aux Container Docker, puis assurer son intégration avec Nextcloud.
Techniquement
docker-compose.yml
Ici, j’ai créé un docker-compose.yml. J’ai tendance à créer un réseau bridge dédié par application afin de segmenter les flux et faciliter la gestion des reglès de parfeu.
services:
collabora:
image: collabora/code:latest
container_name: collabora
restart: unless-stopped
ports:
# Ici on indique que seul le localhost (la VM) peut accéder au service. Nginx va gérer l’accès depuis l’extérieur).
- "127.0.0.1:9980:9980"
environment:
# Ici on indique le domaine du Nextcloud autorisé (whitelist WOPI).
- domain=exemple\.exemple\.com
# Ici on désactive le SSL côté Collabora, mais on précise que la terminaison est SSL
# est faite par le reverse proxy (TLS termination).
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
cap_add:
- MKNOD
networks:
- collabora
networks:
collabora:
driver: bridge
Nginx (reverse proxy) – VM Docker
Les conteneurs Docker sont hébergés sur une VM dédiée.
Un Nginx local y assure le rôle de reverse proxy interne en HTTPS vers le LAN (le but est de chiffrer la connexion dans le LAN entre les deux reverse proxy).
J’ai mis en place une architecture par port (un port = un service). Au niveau du pare-feu, seul le reverse proxy frontal (la VM exposée à Internet) est autorisé à accéder à ces ports ; les autres machines du LAN n’y ont pas accès.
server {
listen 850 ssl;
http2 on;
ssl_certificate /etc/nginx/certs/selfsigned.crt;
ssl_certificate_key /etc/nginx/certs/selfsigned.key;
# TLS versions minimum et maximum
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE>
ssl_prefer_server_ciphers on;
# Headers HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
location ^~ /browser {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://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;
}
# download, presentation and image upload
location ~ ^/cool {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass https://127.0.0.1:8000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 36000s;
proxy_ssl_verify off;
# Préservation des en-têtes
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-URI $request_uri;
}
}
Configuration du reverse proxy frontal non présentée volontairement
Configuration sur nextcloud
Pour Nextcloud il faut aller dans les paramètres admin et chercher Nextcloud office puis faire les chose suivante
- Cocher Utilisez votre propre serveur
- entrer l’url
- save

Conclusion
Après toutes les manipulations effectuées, j’ai désormais ma propre suite collaborative. Je n’ai donc plus besoin de solutions comme Google Docs ou Microsoft Office 365, et l’ensemble fonctionne globalement bien.