Différences entre les versions de « Collabora CODE »

De Linux Server Wiki
Aller à la navigation Aller à la recherche
 
(28 versions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
 
L'accès à l'instance Collabora se fera via un serveur proxy situé sur le serveur/vm hébergeant nextcloud.
 
L'accès à l'instance Collabora se fera via un serveur proxy situé sur le serveur/vm hébergeant nextcloud.
  
Dans cet exemple:  
+
Dans cet exemple nous aurons donc :
* la VM collabora a l'IP 192.168.30.30
+
* Une VM collabora avec l'IP 192.168.30.30, hébergeant une instance coolwsd utilisant un certificat SSL autosigné.
* VM nextcloud a l'IP 192.168.30.15 ainsi qu'une IP publique accessible depuis internet (hostname nextcloud.domain.tld)
+
* Une VM nextcloud avec l'IP 192.168.30.15 ainsi qu'une IP publique accessible depuis internet (188.165.180.60, avec l'hostname nextcloud.domain.tld). Cette VM héberge un serveur apache qui sert nextcloud (sécurisé avec un certificat SSL) ainsi qu'un proxy apache (lui aussi sécurisé par un certificat SSL).
 +
* L'hostname collabora.domain.tld renvoi lui aussi vers l'ip publique de nextcloud (188.165.180.60) (le même serveur servira de proxy)
 +
<br>
  
 
=Installation et configuration de Collabora CODE sur la VM dédié à Collabora=
 
=Installation et configuration de Collabora CODE sur la VM dédié à Collabora=
 +
 +
==Installation du logiciel==
 +
 +
<pre>
 +
cd /usr/share/keyrings
 +
sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg
 +
</pre>
 +
 +
Créez le fichier <code>/etc/apt/sources.list.d/collaboraonline.sources</code> contenant :
 
<pre>
 
<pre>
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
+
Types: deb
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian9 ./' >> /etc/apt/sources.list
+
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian11
aptitude update
+
Suites: ./
aptitude install loolwsd code-brand
+
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg
 
</pre>
 
</pre>
  
Génération du certificat (basé sur https://github.com/CollaboraOnline/Docker-CODE/blob/master/scripts/start-libreoffice.sh)
+
Installez les paquets suivants :
 
<pre>
 
<pre>
openssl genrsa -out /etc/loolwsd/root.key.pem 2048
+
apt update
openssl req -x509 -new -nodes -key /etc/loolwsd/root.key.pem -days 9131 -out /etc/loolwsd/ca-chain.cert.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=Dummy Authority"
+
apt install coolwsd code-brand
openssl genrsa -out /etc/loolwsd/key.pem 2048 -key /etc/loolwsd/key.pem
 
openssl req -key /etc/loolwsd/key.pem -new -sha256 -out /etc/loolwsd/localhost.csr.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=localhost"
 
openssl x509 -req -in /etc/loolwsd/localhost.csr.pem -CA /etc/loolwsd/ca-chain.cert.pem -CAkey /etc/loolwsd/root.key.pem -CAcreateserial -out /etc/loolwsd/cert.pem -days 9131
 
 
</pre>
 
</pre>
  
Sécurisation du certificat
+
==Configuration==
 +
 
 +
Par défaut, coolwsd est configuré pour utiliser une connexion sécurisée en ssl. Il faut donc lui générer un certificat SSL.
 +
Génération du certificat (basé sur https://github.com/CollaboraOnline/Docker-CODE/blob/master/scripts/start-libreoffice.sh) :
 
<pre>
 
<pre>
chgrp lool /etc/loolwsd/key.pem
+
openssl genrsa -out /etc/coolwsd/root.key.pem 2048
chmod g+r /etc/loolwsd/key.pem
+
openssl req -x509 -new -nodes -key /etc/coolwsd/root.key.pem -days 9131 -out /etc/coolwsd/ca-chain.cert.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=Dummy Authority"
 +
openssl genrsa -out /etc/coolwsd/key.pem 2048 -key /etc/coolwsd/key.pem
 +
openssl req -key /etc/coolwsd/key.pem -new -sha256 -out /etc/coolwsd/localhost.csr.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=localhost"
 +
openssl x509 -req -in /etc/coolwsd/localhost.csr.pem -CA /etc/coolwsd/ca-chain.cert.pem -CAkey /etc/coolwsd/root.key.pem -CAcreateserial -out /etc/coolwsd/cert.pem -days 9131
 
</pre>
 
</pre>
  
Modification de la configuration :
+
Sécurisation du certificat
 
<pre>
 
<pre>
domain="nextcloud\\\.domain\\\.tld"
+
chgrp cool /etc/coolwsd/key.pem
perl -pi -e "s/localhost<\/host>/${domain}<\/host>/g" /etc/loolwsd/loolwsd.xml
+
chmod g+r /etc/coolwsd/key.pem
 
</pre>
 
</pre>
  
 +
Dans le fichier <code>/etc/coolwsd/coolwsd.xml</code> remplacez la ligne :
 +
<pre><host allow="true" desc="Regex pattern of hostname to allow or deny.">localhost</host></pre>
 +
par :
 +
<pre><host allow="true" desc="Regex pattern of hostname to allow or deny.">nextcloud\.domain\.tld</host></pre>
 +
 +
Dans le fichier <code>/etc/coolwsd/coolwsd.xml</code> définissez la valeur <code>server_name</code> à <code>collabora.domain.tld</code>. Dans cet exemple la ligne devient :
 +
<pre><server_name default="" desc="External hostname:port of the server running coolwsd. If empty, it's derived from the request (please set it if this doesn't work). Must be specified when behind a reverse-proxy or when the hostname is not reachable directly." type="string">collabora.domain.tld</server_name></pre>
 +
 +
Définissez le mot-de-passe admin :
 
<pre>
 
<pre>
loolconfig set-admin-password
+
coolconfig set-admin-password
 
</pre>
 
</pre>
  
Note sur loolwsd.xml :
+
Note sur coolwsd.xml :
* Les IP/hosts dans storage/wopi peuvent toutes êtres supprimées sauf nextcloud\.domain\.tld
+
* Les IP/hosts dans storage/wopi peuvent toutes êtres supprimées sauf nextcloud\.domain\.tld (avec les \)
 
* Les IPs dans net/post_allow peuvent toutes êtres supprimées au profit de l'adresse IP du proxy (192.168.30.15)
 
* Les IPs dans net/post_allow peuvent toutes êtres supprimées au profit de l'adresse IP du proxy (192.168.30.15)
  
 
Relancez le service :
 
Relancez le service :
 
<pre>
 
<pre>
systemctl restart loolwsd
+
systemctl restart coolwsd
 
</pre>
 
</pre>
 +
 +
Logs :
 +
<pre>journalctl -u coolwsd</pre>
  
 
=Sur le serveur nextcloud=
 
=Sur le serveur nextcloud=
  
 
==Exemple de proxy apache==
 
==Exemple de proxy apache==
 +
 +
Notez que cette configuration est valide si votre instance Collabora utilise un certificat SSL (autosigné ou non). Reportez vous à https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html pour les autres cas de figure.
 +
 +
Pour le proxy, vous pouvez utiliser un certificat signé par une autorité (par exemple letsencrypt) ou un certificat autosigné.
 +
 +
Activez les modules suivant :
 +
<pre>
 +
a2enmod proxy
 +
a2enmod proxy_http
 +
a2enmod proxy_wstunnel
 +
</pre>
 +
 +
Configuration de la vhost collabora.domain.tld :
 
<pre>
 
<pre>
 
<VirtualHost *:443>
 
<VirtualHost *:443>
  ServerName collabora.domain.tld
+
ServerName collabora.domain.tld
  Options -Indexes
+
Options -Indexes
  
  # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
+
# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
  SSLEngine on
+
SSLEngine on
  SSLCertificateFile /path/to/signed_certificate
+
SSLCertificateFile /path/to/signed_certificate
  SSLCertificateChainFile /path/to/intermediate_certificate
+
SSLCertificateChainFile /path/to/intermediate_certificate
  SSLCertificateKeyFile /path/to/private/key
+
SSLCertificateKeyFile /path/to/private/key
  
  # Encoded slashes need to be allowed
+
AllowEncodedSlashes NoDecode
  AllowEncodedSlashes NoDecode
+
SSLProxyEngine On
 +
ProxyPreserveHost On
  
  # Container uses a unique non-signed certificate
+
# cert is issued for collaboraonline.example.com which is autosigned
  SSLProxyEngine On
+
SSLProxyVerify None
  SSLProxyVerify None
+
SSLProxyCheckPeerCN Off
  SSLProxyCheckPeerCN Off
+
SSLProxyCheckPeerName Off
  SSLProxyCheckPeerName Off
 
  
  # keep the host
+
# static html, js, images, etc. served from coolwsd
  ProxyPreserveHost On
+
# browser is the client part of Collabora Online
 +
ProxyPass          /browser https://192.168.30.30:9980/browser retry=0
 +
ProxyPassReverse    /browser https://192.168.30.30:9980/browser
  
  # static html, js, images, etc. served from loolwsd
+
# WOPI discovery URL
  # loleaflet is the client part of Collabora Online
+
ProxyPass          /hosting/discovery https://192.168.30.30:9980/hosting/discovery retry=0
  ProxyPass          /loleaflet https://192.168.30.30:9980/loleaflet retry=0
+
ProxyPassReverse    /hosting/discovery https://192.168.30.30:9980/hosting/discovery
  ProxyPassReverse    /loleaflet https://192.168.30.30:9980/loleaflet
 
  
  # WOPI discovery URL
+
# Capabilities
  ProxyPass          /hosting/discovery https://192.168.30.30:9980/hosting/discovery retry=0
+
ProxyPass          /hosting/capabilities https://192.168.30.30:9980/hosting/capabilities retry=0
  ProxyPassReverse    /hosting/discovery https://192.168.30.30:9980/hosting/discovery
+
ProxyPassReverse    /hosting/capabilities https://192.168.30.30:9980/hosting/capabilities
  
  # Capabilities
+
# Main websocket
  ProxyPass          /hosting/capabilities https://192.168.30.30:9980/hosting/capabilities retry=0
+
ProxyPassMatch      "/cool/(.*)/ws$"      wss://192.168.30.30:9980/cool/$1/ws nocanon
  ProxyPassReverse    /hosting/capabilities https://192.168.30.30:9980/hosting/capabilities
 
  
  # Main websocket
+
# Admin Console websocket
  ProxyPassMatch "/lool/(.*)/ws$" wss://192.168.30.30:9980/lool/$1/ws nocanon
+
ProxyPass          /cool/adminws wss://192.168.30.30:9980/cool/adminws
  
  # Admin Console websocket
+
# Download as, Fullscreen presentation and Image upload operations
  ProxyPass   /lool/adminws wss://192.168.30.30:9980/lool/adminws
+
ProxyPass           /cool https://192.168.30.30:9980/cool
 
+
ProxyPassReverse    /cool https://192.168.30.30:9980/cool
  # Download as, Fullscreen presentation and Image upload operations
+
# Compatibility with integrations that use the /lool/convert-to endpoint
  ProxyPass          /lool https://192.168.30.30:9980/lool
+
ProxyPass          /lool https://192.168.30.30:9980/cool
  ProxyPassReverse    /lool https://192.168.30.30:9980/lool
+
ProxyPassReverse    /lool https://192.168.30.30:9980/cool
 
</VirtualHost>
 
</VirtualHost>
 
</pre>
 
</pre>
 +
 +
=Configuration de l'application Collabora de Nextcloud=
 +
 +
* Définissez l'hostname à <code>https://collabora.domain.tld</code>
 +
* cochez la case <code>Disable certificate verification</code> si votre proxy utilise un certificat autosigné
 +
 +
Une page d'administration de l'instance collabora est accessible à
 +
https://collabora.domain.tld/browser/dist/admin/admin.html
 +
 +
=Désactivation du SSL côté Collabora=
 +
 +
=Documentation officielle=
 +
https://www.collaboraoffice.com/code-install-and-test/ <br>
 +
https://www.collaboraoffice.com/code/linux-packages/ <br>
 +
https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html <br>
 +
https://sdk.collaboraonline.com/docs/installation/Configuration.html

Version actuelle datée du 12 décembre 2021 à 13:02

Exemple d'installation de Collabora CODE sur un serveur/vm dédié, accessible derrière un serveur proxy situé sur votre instance nextcloud.
Nextcloud est donc installé sur un autre serveur/vm.
L'accès à l'instance Collabora se fera via un serveur proxy situé sur le serveur/vm hébergeant nextcloud.

Dans cet exemple nous aurons donc :

  • Une VM collabora avec l'IP 192.168.30.30, hébergeant une instance coolwsd utilisant un certificat SSL autosigné.
  • Une VM nextcloud avec l'IP 192.168.30.15 ainsi qu'une IP publique accessible depuis internet (188.165.180.60, avec l'hostname nextcloud.domain.tld). Cette VM héberge un serveur apache qui sert nextcloud (sécurisé avec un certificat SSL) ainsi qu'un proxy apache (lui aussi sécurisé par un certificat SSL).
  • L'hostname collabora.domain.tld renvoi lui aussi vers l'ip publique de nextcloud (188.165.180.60) (le même serveur servira de proxy)


1 Installation et configuration de Collabora CODE sur la VM dédié à Collabora

1.1 Installation du logiciel

cd /usr/share/keyrings
sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg

Créez le fichier /etc/apt/sources.list.d/collaboraonline.sources contenant :

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

Installez les paquets suivants :

apt update 
apt install coolwsd code-brand

1.2 Configuration

Par défaut, coolwsd est configuré pour utiliser une connexion sécurisée en ssl. Il faut donc lui générer un certificat SSL. Génération du certificat (basé sur https://github.com/CollaboraOnline/Docker-CODE/blob/master/scripts/start-libreoffice.sh) :

openssl genrsa -out /etc/coolwsd/root.key.pem 2048
openssl req -x509 -new -nodes -key /etc/coolwsd/root.key.pem -days 9131 -out /etc/coolwsd/ca-chain.cert.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=Dummy Authority"
openssl genrsa -out /etc/coolwsd/key.pem 2048 -key /etc/coolwsd/key.pem
openssl req -key /etc/coolwsd/key.pem -new -sha256 -out /etc/coolwsd/localhost.csr.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=localhost"
openssl x509 -req -in /etc/coolwsd/localhost.csr.pem -CA /etc/coolwsd/ca-chain.cert.pem -CAkey /etc/coolwsd/root.key.pem -CAcreateserial -out /etc/coolwsd/cert.pem -days 9131

Sécurisation du certificat

chgrp cool /etc/coolwsd/key.pem
chmod g+r /etc/coolwsd/key.pem

Dans le fichier /etc/coolwsd/coolwsd.xml remplacez la ligne :

<host allow="true" desc="Regex pattern of hostname to allow or deny.">localhost</host>

par :

<host allow="true" desc="Regex pattern of hostname to allow or deny.">nextcloud\.domain\.tld</host>

Dans le fichier /etc/coolwsd/coolwsd.xml définissez la valeur server_name à collabora.domain.tld. Dans cet exemple la ligne devient :

<server_name default="" desc="External hostname:port of the server running coolwsd. If empty, it's derived from the request (please set it if this doesn't work). Must be specified when behind a reverse-proxy or when the hostname is not reachable directly." type="string">collabora.domain.tld</server_name>

Définissez le mot-de-passe admin :

coolconfig set-admin-password

Note sur coolwsd.xml :

  • Les IP/hosts dans storage/wopi peuvent toutes êtres supprimées sauf nextcloud\.domain\.tld (avec les \)
  • Les IPs dans net/post_allow peuvent toutes êtres supprimées au profit de l'adresse IP du proxy (192.168.30.15)

Relancez le service :

systemctl restart coolwsd

Logs :

journalctl -u coolwsd

2 Sur le serveur nextcloud

2.1 Exemple de proxy apache

Notez que cette configuration est valide si votre instance Collabora utilise un certificat SSL (autosigné ou non). Reportez vous à https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html pour les autres cas de figure.

Pour le proxy, vous pouvez utiliser un certificat signé par une autorité (par exemple letsencrypt) ou un certificat autosigné.

Activez les modules suivant :

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel

Configuration de la vhost collabora.domain.tld :

<VirtualHost *:443>
 ServerName collabora.domain.tld
 Options -Indexes

 # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
 SSLEngine on
 SSLCertificateFile /path/to/signed_certificate
 SSLCertificateChainFile /path/to/intermediate_certificate
 SSLCertificateKeyFile /path/to/private/key

 AllowEncodedSlashes NoDecode
 SSLProxyEngine On
 ProxyPreserveHost On

 # cert is issued for collaboraonline.example.com which is autosigned
 SSLProxyVerify None
 SSLProxyCheckPeerCN Off
 SSLProxyCheckPeerName Off

 # static html, js, images, etc. served from coolwsd
 # browser is the client part of Collabora Online
 ProxyPass           /browser https://192.168.30.30:9980/browser retry=0
 ProxyPassReverse    /browser https://192.168.30.30:9980/browser

 # WOPI discovery URL
 ProxyPass           /hosting/discovery https://192.168.30.30:9980/hosting/discovery retry=0
 ProxyPassReverse    /hosting/discovery https://192.168.30.30:9980/hosting/discovery

 # Capabilities
 ProxyPass           /hosting/capabilities https://192.168.30.30:9980/hosting/capabilities retry=0
 ProxyPassReverse    /hosting/capabilities https://192.168.30.30:9980/hosting/capabilities

 # Main websocket
 ProxyPassMatch      "/cool/(.*)/ws$"      wss://192.168.30.30:9980/cool/$1/ws nocanon

 # Admin Console websocket
 ProxyPass           /cool/adminws wss://192.168.30.30:9980/cool/adminws

 # Download as, Fullscreen presentation and Image upload operations
 ProxyPass           /cool https://192.168.30.30:9980/cool
 ProxyPassReverse    /cool https://192.168.30.30:9980/cool
 # Compatibility with integrations that use the /lool/convert-to endpoint
 ProxyPass           /lool https://192.168.30.30:9980/cool
 ProxyPassReverse    /lool https://192.168.30.30:9980/cool
</VirtualHost>

3 Configuration de l'application Collabora de Nextcloud

  • Définissez l'hostname à https://collabora.domain.tld
  • cochez la case Disable certificate verification si votre proxy utilise un certificat autosigné

Une page d'administration de l'instance collabora est accessible à https://collabora.domain.tld/browser/dist/admin/admin.html

4 Désactivation du SSL côté Collabora

5 Documentation officielle

https://www.collaboraoffice.com/code-install-and-test/
https://www.collaboraoffice.com/code/linux-packages/
https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html
https://sdk.collaboraonline.com/docs/installation/Configuration.html