Ce tutoriel va vous montrer comment installer Collabora Online sur Ubuntu, puis l'intégrer à un serveur Nextcloud existant sans utiliser Docker.
Collaboration en ligne est une suite bureautique en ligne open source auto-hébergée et basée sur LibreOffice. Ses fonctionnalités incluent :
- Édition de base
- Haute fidélité, rendu WYSIWYG
- Prend en charge les formats de documents DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF
- Importer et afficher Visio, Publisher et plus de 100 autres
- Modification partagée
Collabora est un grand contributeur au projet LibreOffice. Tous les codes Collabora Online seront éventuellement inclus dans LibreOffice.
Remarque :Ce tutoriel fonctionne sur Ubuntu 20.04, 18.04 et 16.04. Si vous utilisez une autre version d'Ubuntu, vous pouvez installer Collobaora Online avec Docker.
Prérequis
Il est supposé que vous avez déjà configuré un serveur Nextcloud, qui peut être sur n'importe quelle distribution Linux. Si vous ne l'avez pas déjà fait, vous pouvez consulter les guides faciles à comprendre suivants.
- Comment installer Nextcloud sur Ubuntu 20.04 avec la pile LEMP
- Comment installer Nextcloud sur Ubuntu 20.04 avec LAMP Stack
- Comment installer Nextcloud sur CentOS 8 avec la pile LEMP
- Comment configurer Nextcloud sur Arch Linux
Le serveur Collabora Online et le serveur Nextcloud peuvent être sur la même machine ou sur deux machines différentes. Ce tutoriel montre comment installer le serveur en ligne Collabora sur Ubuntu à l'aide d'une image Docker créée par Collabora et Nextcloud. Intégrez-le ensuite à un serveur Nextcloud existant.
Étape 1 :Installez Collabora Online sur Ubuntu à partir du référentiel officiel
Collabora dispose d'un référentiel de packages officiel pour Ubuntu 20.04, 18.04 et 16.04. Exécutez la commande suivante pour l'ajouter à votre système Ubuntu.
Ubuntu 20.04
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004 ./' | sudo tee /etc/apt/sources.list.d/collabora.list
Ubuntu 18.04
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 ./' | sudo tee /etc/apt/sources.list.d/collabora.list
Ubuntu 16.04
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE ./' | sudo tee /etc/apt/sources.list.d/collabora.list
Exécutez ensuite la commande suivante pour télécharger et importer la clé publique Collabora, ce qui permet au gestionnaire de packages APT de vérifier l'intégrité des packages téléchargés à partir de ce référentiel.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
Si vous ne pouvez pas importer la clé publique avec la commande ci-dessus, vous pouvez utiliser la commande suivante pour télécharger et importer la clé.
wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && sudo apt-key add repomd.xml.key
Étant donné que ce référentiel utilise une connexion HTTPS, nous devons installer le apt-transport-https
et ca-certificates
package, afin que le gestionnaire de packages APT puisse établir une connexion sécurisée au référentiel.
sudo apt install apt-transport-https ca-certificates
Maintenant, mettez à jour l'index des packages locaux et installez Collabora Online. Loolwsd est le démon WebSocket de LibreOffice Online.
sudo apt update sudo apt install loolwsd code-brand
Étape 2 : Configurer le démon WebSocket de LibreOffice en ligne
Après leur installation, vous pouvez vérifier l'état de loolwsd.
systemctl status loolwsd
Astuce :Si la commande ci-dessus ne s'est pas arrêtée immédiatement, vous pouvez appuyer sur Q
clé pour le faire quitter.
Comme vous pouvez le voir, il n'a pas pu démarrer. Nous pouvons consulter le journal pour voir pourquoi cela s'est produit.
sudo journalctl -eu loolwsd
Exemple de sortie :
Apr 21 16:13:06 ubuntu loolwsd[13842]: File not found: /etc/loolwsd/ca-chain.cert.pem Apr 21 16:13:06 ubuntu systemd[1]: loolwsd.service: Main process exited, code=exited, status Apr 21 16:13:06 ubuntu systemd[1]: loolwsd.service: Failed with result 'exit-code'. Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Service hold-off time over, scheduling r Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Scheduled restart job, restart counter i Apr 21 16:13:07 ubuntu systemd[1]: Stopped LibreOffice Online WebSocket Daemon. Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Start request repeated too quickly. Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Failed with result 'exit-code'. Apr 21 16:13:07 ubuntu systemd[1]: Failed to start LibreOffice Online WebSocket Daemon.
Par défaut, loolwsd active la connexion TLS. Cependant, il n'a pas trouvé de fichier de certificat TLS, d'où l'échec du démarrage. Il est préférable de désactiver TLS dans loolwsd et de terminer TLS sur un proxy inverse. Le fichier de configuration loolwsd se trouve dans /etc/loolwsd/loolwsd.xml
. Cependant, il s'agit d'un fichier XML, qui n'est pas facile à lire et à modifier. Nous pouvons utiliser le loolconfig
outil pour modifier les configurations.
Exécutez la commande suivante pour désactiver TLS dans loolwsd.
sudo loolconfig set ssl.enable false
Et activez la terminaison TLS au niveau du proxy inverse.
sudo loolconfig set ssl.termination true
Par défaut, loolwsd n'autorise que les hôtes connus à accéder à son service. Pour autoriser Nextcloud à accéder au service, exécutez la commande suivante pour ajouter votre nom d'hôte Nextcloud à la liste blanche.
sudo loolconfig set storage.wopi.host nextcloud.example.com
Vous pouvez également activer le compte administrateur pour loolwsd avec la commande suivante. Vous devrez définir un nom d'utilisateur et un mot de passe pour le compte administrateur.
sudo loolconfig set-admin-password
Redémarrez loolwsd pour que les modifications prennent effet.
sudo systemctl restart loolwsd
Maintenant, il devrait fonctionner sans erreur.
systemctl status loolwsd
Sortie :
Étape 3 :Configurer le proxy inverse
Le serveur Nextcloud nécessite un certificat TLS sur Collabora Online, nous devrons donc créer un hôte virtuel, donner un nom de domaine à l'hôte virtuel, configurer un proxy inverse et installer le certificat TLS. Nous pouvons utiliser soit Apache ou Nginx pour y parvenir.
Apache
Installez le serveur Web Apache avec la commande suivante :
sudo apt install apache2
Exécutez la commande suivante pour créer un fichier d'hôte virtuel Apache pour Collabora Online.
sudo nano /etc/apache2/sites-available/collabora.conf
Mettez le texte suivant dans le fichier. Remplacez le nom de domaine par votre nom de domaine réel pour Collabora Online. N'oubliez pas de créer un enregistrement A pour ce sous-domaine.
<VirtualHost *:80> ServerName collabora.example.com Options -Indexes ErrorLog "/var/log/apache2/collabora_error" # Encoded slashes need to be allowed AllowEncodedSlashes NoDecode # keep the host ProxyPreserveHost On # static html, js, images, etc. served from loolwsd # loleaflet is the client part of Collabora Online ProxyPass /loleaflet http://127.0.0.1:9980/loleaflet retry=0 ProxyPassReverse /loleaflet http://127.0.0.1:9980/loleaflet # WOPI discovery URL ProxyPass /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0 ProxyPassReverse /hosting/discovery http://127.0.0.1:9980/hosting/discovery # Capabilities ProxyPass /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0 ProxyPassReverse /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities # Main websocket ProxyPassMatch "/lool/(.*)/ws$" ws://127.0.0.1:9980/lool/$1/ws nocanon # Admin Console websocket ProxyPass /lool/adminws ws://127.0.0.1:9980/lool/adminws # Download as, Fullscreen presentation and Image upload operations ProxyPass /lool http://127.0.0.1:9980/lool ProxyPassReverse /lool http://127.0.0.1:9980/lool </VirtualHost>
Enregistrez et fermez le fichier. Pour pouvoir proxyer le trafic à l'aide d'Apache, nous devons activer certains modules Apache.
sudo a2enmod proxy proxy_wstunnel proxy_http
Activez cet hôte virtuel avec la commande suivante :
sudo a2ensite collabora.conf
Puis redémarrez Apache.
sudo systemctl restart apache2
Nginx
Installez Nginx sur Ubuntu avec la commande suivante :
sudo apt install nginx
Créez un fichier d'hôte virtuel pour Collabora Online.
sudo nano /etc/nginx/conf.d/collabora.conf
Mettez le texte suivant dans le fichier. Remplacez le nom de domaine par votre nom de domaine réel pour Collabora Online. N'oubliez pas de créer un enregistrement A pour ce nom de domaine.
server { listen 80; listen [::]:80; server_name collabora.example.com; error_log /var/log/nginx/collabora.error; # 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; } }
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -t
Si le test réussit, rechargez le serveur Nginx.
sudo systemctl reload nginx
Étape 4 :Obtenir et installer le certificat TLS
Maintenant, obtenons un certificat TLS gratuit de Let's encrypt. Exécutez les commandes suivantes pour installer le client Let's Encrypt (certbot) à partir du référentiel de logiciels par défaut.
sudo apt install certbot
Si vous utilisez Apache serveur Web, vous devez également installer le plug-in Certbot Apache.
sudo apt install python3-certbot-apache
Exécutez ensuite la commande suivante pour obtenir un certificat TLS/SSL gratuit.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com
Si vous utilisez Nginx serveur Web, vous devez installer le plug-in Certbot Nginx.
sudo apt install python3-certbot-nginx
Utilisez ensuite le plugin Nginx pour obtenir et installer le certificat en exécutant la commande suivante.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com
Vous verrez le texte suivant indiquant que vous avez réussi à obtenir un certificat TLS.
Étape finale :Connecter Nextcloud à Collabora Online
Dans votre tableau de bord Nextcloud, accédez aux Apps
page. Ensuite, allez dans Office & Text
section, trouvez la Collabora Online
app, cliquez sur Download and Enable
bouton.
(Remarque :Il existe une autre application appelée Collabora Online - Built-in CODE server
, que vous ne devriez pas installer sur votre serveur Nextcloud.)
Une fois cette application activée, accédez à Nextcloud Settings
page. Cliquez sur Collabora Online
onglet à gauche. Par défaut, il utilise le serveur CODE intégré, qui n'est pas adapté à une utilisation en production. Nous devons sélectionner Use your own server
et saisissez le nom de domaine de votre Collabora Online incluant https://
préfixe, puis cliquez sur Save
bouton.
Dans les advance settings
, vous pouvez également définir OOXML comme format par défaut, afin que les fichiers soient compatibles avec le logiciel Microsoft Office.
Désormais, lorsque vous cliquez sur le bouton Ajouter (+) dans Nextcloud, vous pourrez créer des documents Word, des feuilles de calcul et des présentations directement depuis votre serveur Nextcloud.
La console d'administration loolwsd est disponible sur https://collabora.example.com/loleaflet/dist/admin/admin.html
. Vous devez entrer le nom d'utilisateur et le mot de passe, qui ont été créés à l'étape 2.
Dépannage
Si Nextcloud vous dit qu'il c n'a pas pu établir de connexion au serveur Collabora Online , il se peut que votre serveur Nginx s'exécute derrière un proxy inverse comme HAProxy et que vous ayez les deux lignes suivantes dans /etc/nginx/nginx.conf
.
set_real_ip_from 127.0.0.1; real_ip_header proxy_protocol;
Cela signifie que Nginx attend une connexion HTTP du proxy inverse. Vous devez modifier le /etc/nginx/conf.d/collaboara.conf
fichier et ajoutez proxy_protocol
à la directive d'écoute.
listen 127.0.0.1:443 ssl http2 proxy_protocol;
Modifiez ensuite le /etc/hosts
fichier et ajoutez un enregistrement DNS statique comme ci-dessous. Remplacer 12.34.56.78
avec l'adresse IP publique du serveur.
12.34.56.78 collaboara.example.com
collabora.example.com
doit pointer vers l'adresse IP publique de votre serveur. Ne pointez pas vers 127.0.0.1.
Vous pouvez également consulter les journaux de loolwsd pour trouver des indices. Peut-être qu'il ne fonctionne pas.
sudo journalctl -eu loolwsd
Et vérifiez les journaux du serveur Web.
- Apache :
/var/log/apache2/collabora_error
- Nginx :
/var/log/nginx/collabora.error