Comment installer CODE sur un VPS GandiCloud

Cette page décrit l’installation d’un serveur Collabora Online community Edition pas à pas sur un VPS

Qu’est-ce que CODE ?

Collabora Online est une suite bureautique en ligne performante, basée sur LibreOffice qui permet d’éditer et manipuler les principaux formats de documents et surtout le travail en mode collaboratif.

Elle est intégrée dans plusieurs outils Web (OwnCloud, NextCloud, Moodle) sous forme de plugin. Le site officiel est ici .

Ces plugins sont la partie “client” de l’applicatif qui nécessite de se connecter à un serveur. Par exemple, sur l’installation NextCloud Web Hosting chez Gandi il vous faut un serveur auquel connecter le plugin.

Il existe bien un plugin CODE BuiltIn, mais qui est déconseillé pour la production par les éditeurs, et ne peut être installé sur l’Hébergement Web (environnement trop restreint).

L’acronyme CODE pour Collabora Online Developpement Edition, en version community est le serveur qui permet aux applications « clientes », comme le plugin NextCloud, de se connecter et d’accéder aux fonctionnalités.

Nous allons voir comment l’installer rapidement sur un Gandi VPS et ainsi pouvoir y connecter votre plugin NextCloud, ou tout autre “client” nécessitant que vous disposiez d’une partie “serveur”.

Conditions préalables

Il vous faudra disposer d’un serveur Linux avec les droits “root”. Vous pourriez opter pour un serveur GandiCloud VPS, qui, je dois dire, serait un excellent choix autant en termes de performances que de fiabilité et coût :)

Vous les trouverez ici :VPS GandiCloud

Pour une petite installation, un serveur de taille basique VR-1 suffit : si nécessaire, vous pourrez toujours augmenter sa taille (et donc ses ressources) par la suite.

Dans cette doc, nous installerons CODE derrière un reverse proxy Nginx qui accueillera les connexions -notamment HTTPS-, mais il est tout à fait possible d’utiliser Apache ou encore de l’installer en stand-alone (sans serveur web en frontal)

Configurations initiales

Connectez vous en SSH sur le serveur et mettez à jour les paquets systèmes et assurez-vous que cURL est installé

apt update && sudo apt upgrade -y && sudo apt install curl -y

Installation de Nginx

C’est le serveur Web qui va jouer le rôle de reverse proxy : il va accueillir les requêtes entrantes, et les relayer au serveur CODE. C’est donc lui qui va gérer la connexion SSL.

En prérequis, il faut que la machine possède un nom définit au niveau système et au niveau DNS. Ici, nous utiliserons le nom “code.example.com”, à remplacer avec votre propre nom, bien entendu.

Définissez le nom au niveau du système :

Remplacez la ligne existante, par « code.example.com » dans le fichier /etc/hostname

echo code.example.net > /etc/hostname

Puis, Exécutez la commande suivante :

hostname code.example.com

Certificat SSL :

Ici, vous avez trois possibilités : utiliser un certificat auto-signé, un certificat Gandi ou bien un certiticat Let’s Encrypt.

Envisageons ici un certificat standard Let’s Encrypt de 3 mois :

1 installez Certbot : https://certbot.eff.org/

apt install certbot

2 lancez la génération d’un certificat (en utilisant le serveur Nginx) :

certbot certonly -d code.example.com

spécifiez l’option 2 pour le “challenge” 2: Place files in webroot directory (webroot) et précisez le dossier racine nginx par défaut : /var/www/html

Configuration du vhost :

On suppose que le backend sera joignable sur le port CODE par défaut : 9980

Créez le fichier suivant : /etc/nginx/sites-available/code.example.com.conf

Et ajoutez le contenu :

server {
listen       443 ssl;
server_name  code.example.com;

ssl_certificate /etc/letsencrypt/live/code.azedsq.store/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/code.azedsq.store/privkey.pem;


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


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


# Capabilities
location ^~ /hosting/capabilities {
  proxy_pass http://127.0.0.1:9980;
  proxy_set_header Host $http_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 $http_host;
  proxy_read_timeout 36000s;
}


# download, presentation and image upload
location ~ ^/(c|l)ool {
  proxy_pass http://127.0.0.1:9980;
  proxy_set_header Host $http_host;
}


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

Activez le “vhost” :

cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/code.example.com.conf /etc/nginx/sites-enabledcode.example.com.conf

Puis, vous pouvez tester la validité de la syntaxe :

nginx -t

Et relancer le service :

systemctl restart nginx

Installation de CODE Community Edition

Vous trouverez la doc officielle ici -pour trouver les repos correspondants à la distribution- : https://www.collaboraoffice.com/code/linux-packages/

Avertissement

Dans l’exemple suivant, le lien du dépôt est valable pour Debian11. Pour toute autre distribution, voyez la liste sur la page citée au-dessus

Ajout du dépôt :

Pour Debian 11 :

-> ajoutez le fichier de dépôt ; éditez le fichier :

vi /etc/apt/`sources.list.d/collaboraonline.sources

Et ajoutez ce contenu :

Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian11
Suites: ./
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg

Installation des paquets :

Ensuite, installez les paquets coolwsd, code-brand :

apt update && apt install coolwsd code-brand

Configuration de CODE :

-> Activez le logging :

Créez le fichier /var/log/coolwsd.log et affectez lui les propriétés root:cool ainsi que les droits 770

touch /var/log/coolwsd.log
chown root:cool /var/log/coolwsd.log
chmod 770 /var/log/coolwsd.log

-> Désactivez la prise en charge de SSL :

Dans notre exemple, la connexion SSL est gérée par Nginx; il faut donc la désactiver ici sinon le démarrage du service échoue car ne trouve pas les fichiers de certificat.

coolconfig set ssl.enable false

-> spécifiez aussi que le reverse proxy gère le SSL coolconfig set ssl.termination true

-> ensuite, déclarez le “client” nextcloud qui se connectera :

coolconfig set storage.woopi.host mon.nextcloud.com

Avertissement

Ici mon.nextcloud.com est à remplacer par l’URL de votre installation NextCloud, qui doit être joignable via HTTPS

-> faites en sorte que le serveur CODE ne soit pas directement accessible :

coolconfig set net.proto ipv4
coolconfig set net.listen loopback

-> définissez un compte admin :

coolconfig set-admin-password

Et redémarrez le service :

systemctl restart coolwsd

Vous pouvez vous connecter à cette interface avec l’URL :

https://code.example.com/browser/dist/admin/admin.html

Configurez votre NextCloud :

  • Depuis le compte “administrateur”, allez dans le menu “applications”

  • ensuite, dans la liste des catégories d’applications, allez dans la catégorie “bureautique”

  • puis installez l’application « Nextcloud Office »

  • ensuite, allez, via le menu, dans “paramètre d’administration”, puis sur « éditez les préférences » “Nextcloud Office” dans la partie “administration” (pas Personnel)

  • cochez “utiliser votre propre serveur” et saisissez son URL (cochez la désactivation de la vérification du certificat SSL si vous utilisez un certificat autosigné sur votre serveur)

Enregistrez la configuration et si la connexion est fonctionnelle, que le serveur apparait validé avec une jolie coche verte, c’est tout bon.

Vous pouvez alors aller créer un nouveau document dans votre dossier utilisateur : vous devriez voir les nouveaux types de documents disponibles, document texte, feuille de calcul, présentation et diagramme.