---
title: How to Collabora Code
---

Collabora Online Development Edition (CODE) est une suite bureautique utilisable dans son navigateur. Le logiciel est basé sur Libre Office Online (lool)

## Installation

Collabora propose des paquets via leur dépôt pour installer le logiciel : 

~~~
# echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian11 ./' >> /etc/apt/sources.list.d/collabora-code.list
# cd /etc/apt/trusted.gpg.d
# wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg
# chmod 644 collaboraonline-release-keyring.gpg
# apt update 

# apt install coolwsd code-brand collaboraofficebasis-fr collaboraoffice-dict-fr
~~~

Attention, l'installation se fait dans `/opt/collaboraonline` et `/opt/cool`, donc prévoyez de la place pour ça.

~~~
# systemctl status coolwsd.service
● coolwsd.service - Collabora Online WebSocket Daemon
   Loaded: loaded (/lib/systemd/system/coolwsd.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/coolwsd.service.d
           └─override.conf
   Active: active (running) since Thu 2022-04-28 20:47:24 CEST; 2 weeks 4 days ago
 Main PID: 3985 (coolwsd)
    Tasks: 17 (limit: 4701)
   Memory: 437.9M
   CGroup: /system.slice/coolwsd.service
           ├─  465 /usr/bin/coolforkit --losubpath=lo --systemplate=/opt/cool/systemplate --lotemplate=/opt/collaboraoffice --childroot=/opt/cool/child-roots/ --clientport=9980 --masterport=coolwsd-9PINiUpT --rlimits=limit_virt_mem_mb:0;li
           ├─ 3985 /usr/bin/coolwsd --version --o:sys_template_path=/opt/cool/systemplate --o:child_root_path=/opt/cool/child-roots --o:file_server_root_path=/usr/share/coolwsd
           ├─ 4150 /usr/bin/coolforkit --losubpath=lo --systemplate=/opt/cool/systemplate --lotemplate=/opt/collaboraoffice --childroot=/opt/cool/child-roots/ --clientport=9980 --masterport=coolwsd-9PINiUpT --rlimits=limit_virt_mem_mb:0;li
           ├─13273 /usr/bin/coolforkit --losubpath=lo --systemplate=/opt/cool/systemplate --lotemplate=/opt/collaboraoffice --childroot=/opt/cool/child-roots/ --clientport=9980 --masterport=coolwsd-9PINiUpT --rlimits=limit_virt_mem_mb:0;li
           └─18537 /usr/bin/coolforkit --losubpath=lo --systemplate=/opt/cool/systemplate --lotemplate=/opt/collaboraoffice --childroot=/opt/cool/child-roots/ --clientport=9980 --masterport=coolwsd-9PINiUpT --rlimits=limit_virt_mem_mb:0;li


~~~

Pour les versions de Debian antérieures à Debian 10, tout est expliqué sur [leur site](https://www.collaboraoffice.com/code/linux-packages/)


## Configuration

Fichiers de configuration :

~~~
/etc/loolwsd/
├── loolkitconfig.xcu
└── loolwsd.xml
~~~

Le fichier de configuration principal se trouve être `/etc/loolwsd/loolwsd.xml`. Juste après installation, le service loolwsd.service ne fonctionnera pas, car la configuration du service écoute en HTTPS par défaut, mais aucun certificat n'est présent.

Il est plus simple d'utiliser un serveur web comme [Nginx](HowtoNginx) en reverse proxy en amont pour faire la terminaison SSL avant de transférer le trafic à collabora-code localement, sans HTTPS.

Pour cela, il faut passer changer les paramètres suivants de la section `<ssl>` : 

* `<enable>` : de *true* à **false**
* `<termination>` de *false* à **true**


~~~.xml

(...)
    <ssl desc="SSL settings">
        <enable type="bool" desc="Controls whether SSL encryption is enable (do not disable for production deployment). If default is false, must first be compiled with SSL support to enable." default="true">false</enable>
        <termination desc="Connection via proxy where loolwsd acts as working via https, but actually uses http." type="bool" default="true">true</termination>

(...)
~~~



Côté Nginx, on utilisera le vhost proposé par les [développeurs de collabora code](https://www.collaboraoffice.com/code/nginx-reverse-proxy/) : 

~~~
server {
    listen       443 ssl;
    server_name  collabora.example.org;

    ssl_certificate /etc/letsencrypt/live/collabora00.evolix.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/collabora00.evolix.org/privkey.pem;

    root /var/www/collabora00.evolix.org;

    access_log  /var/log/nginx/access.collabora00.evolix.org.log;
    error_log  /var/log/nginx/error.collabora00.evolix.org.log;


    # static files
    location ^~ /loleaflet {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # main websocket
    location ~ ^/lool/(.*)/ws$ {
        proxy_pass http://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }

    # download, presentation and image upload
    location ~ ^/lool {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # Admin Console websocket
    location ^~ /lool/adminws {
        proxy_pass http://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
}
~~~


## Utilisation

#### Avec Nextcloud et le connecteur Collabora

Dans Nextcloud, il y a une application nommée ["Collabora Online"](https://apps.nextcloud.com/apps/richdocuments) permet de faire connecteur entre l'installation Nextcloud et le service Collabora Code fraîchement installé. Cela permettra de consulter et modifier des fichiers directement depuis l'interface de Nextcloud.

##### Configuration dans Nextcloud

##### Configuration dans Collabora Code

Dans le fichier de configuration `/etc/loolwsd/loolwsd.xml`, il faut autoriser l'adresse de l'instance Nextcloud à travailler avec Collabora.

Dans la sous-section `<wopi>` de la section `<storage>`, il faut rajouter un élément `<host></host>` qui contient une regex d'hôtes à autoriser

~~~.xml

(...)

 <storage desc="Backend storage">
        <wopi desc="Allow/deny wopi storage. Mutually exclusive with webdav." allow="true">
            <host desc="Regex pattern of hostname to allow or deny." allow="true">nextcloud.example.net</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">sharedcloud[0-9]{4}.example.org</host>

(...)
~~~

## Monitoring

### Nagios

### Munin

## Plomberie

## FAQ


