{{indexmenu_n>15}}
# Ajouter de l'édition collaborative : Collabora
## Contexte
Nextcloud supporte, grâce à son plugin [Nextcloud Office](https://apps.nextcloud.com/apps/richdocuments), l'intégration avec un serveur [WOPI](https://en.wikipedia.org/wiki/Web_Application_Open_Platform_Interface).
Concrètement, cela permet l'édition collaborative de documents, feuilles de calcul, etc, l'intégration majoritaire étant avec [Collabora Online](https://en.wikipedia.org/wiki/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](https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html).
Chez Picasoft, la stratégie est d'utiliser une seule instance pour l'ensemble des instances Nextcloud.
Il existe bien un [plugin Nextcloud](https://apps.nextcloud.com/apps/richdocumentscode) 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 [[technique:tech_team:traefik|Traefik]]. Les subtilités de la configuration de CODE sont assez pénibles, on pourra se référer à [l'extrait de fichier Compose](https://gitlab.utc.fr/picasoft/projets/services/nextcloud/-/blob/0ea3be9819213a131e2318aea0203485efe55b74/solidaires/docker-compose.yml#L51) reproduit ci-dessous, auquel on a ajouté des commentaires :
```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 :
```bash
php occ app:install richdocuments
php occ config:app:set --value https://collabora.picasoft.net richdocuments wopi_url
php occ richdocuments:activate-config
```
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.
{{ :technique:adminserv:nextcloud:collabora.png |}}
## Accéder à l'interface d'administration
Elle se trouve à l'URL [collabora.picasoft.net/browser/dist/admin/admin.html](https://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.