Ajouter de l'édition collaborative : Collabora
Contexte
Nextcloud supporte, grâce à son plugin Nextcloud Office, l’intégration avec un serveur WOPI.
Concrètement, cela permet l’édition collaborative de documents, feuilles de calcul, etc, l’intégration majoritaire étant avec Collabora Online, une version web et collaborative de LibreOffice.
Cette fonctionnalité est aujourd’hui facilement intégrable et permet de fournir un service proche de l’expérience Google Drive.
Installation
L’édition “développeur”, pour les petites instances, est gratuite. Elle s’appelle CODE
et peut tourner dans une image Docker.
Chez Picasoft, la stratégie est d’utiliser une seule instance pour l’ensemble des instances Nextcloud.
Note:
Il existe bien un plugin Nextcloud permettant d’installer CODE directement aux côtés de Nextcloud, mais la performance dans Docker est affreuse et les problèmes dus à l’utilisation du format AppImage pousse à utiliser un conteneur à part dans tous les cas.
Il faut donc exposer CODE sur Internet, derrière Traefik. Les subtilités de la configuration de CODE sont assez pénibles, on pourra se référer à l'extrait de fichier Compose reproduit ci-dessous, auquel on a ajouté des commentaires :
- snippet.yaml
collabora: image: collabora/code:22.05.14.3.1 container_name: collabora-code networks: # Name of the network where the Nextcloud app resides - nextcloud # Name of the network where Traefik resides - proxy environment: # Every dot should be escaped, otherwise interpreted as regexp # Which domains can use Collabora : # - One domain per alias_groupX # - Optionnally with aliases per domain, see https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html#setting-the-application-configuration-dynamically-via-environment-variables alias_group1: soletucompi\.picasoft\.net # Limit to french for now for the sake of simplicity dictionaries: fr_FR # Traefik terminates SSL, use HTTP internally VIRTUAL_PROTO: http VIRTUAL_PORT: 9980 VIRTUAL_HOST: collabora\.picasoft\.net # Disable capabilities check that are not available inside Docker container # Additionnaly, disable default self-signed certificate as everything is handled by Traefik extra_params: "--o:security.capabilities=false --o:ssl.enable=false --o:ssl.termination=true" DONT_GEN_SSL_CERT: true # Maybe not mandatory, documentation states it is useful if Collabora # run behind a reverse proxy server_name: collabora.picasoft.net env_file: ./secrets/collabora.secrets labels: # Depends on your configuration... websecure is an HTTPS entrypoint there. traefik.http.routers.collabora.entrypoints: websecure traefik.http.routers.collabora.rule: Host(`collabora.picasoft.net`) traefik.http.services.collabora.loadbalancer.server.port: 9980 traefik.enable: true
Le fichier collabora.secrets
contient deux variables d’environnement : username
et password
, permettant un accès par authentification HTTP basique à l’interface d’administration.
Cette configuration suffit à lancer un serveur Collabora fonctionnel.
Relier une instance
Pour chaque instance Nextcloud où on veut activer Collabora, il suffit (depuis le conteneur par exemple) d’exécuter les commandes suivantes :
- snippet.bash
php occ app:install richdocuments php occ config:app:set --value https://collabora.picasoft.net richdocuments wopi_url php occ richdocuments:activate-config
Attention:
L’URL de l’instance doit être autorisée dans Collabora : voir le fichier Compose plus haut.
Ces commandes ajoutent alors les documents « classiques » de la bureautique dans le menu de création Nextcloud.
Accéder à l'interface d'administration
Elle se trouve à l’URL collabora.picasoft.net/browser/dist/admin/admin.html. Une fois authentifié, on peut modifier la configuration dynamiquement, voir les journaux, les connexions en cours, etc.