Ajouter de l'édition collaborative : Collabora

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.

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.

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.

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.

  • technique/adminserv/nextcloud/collabora.txt
  • de qduchemi