Questo tutorial ti mostrerà come installare Collabora Online su Ubuntu e quindi integrarlo con un server Nextcloud esistente senza utilizzare Docker.
Collabora in linea è una suite per ufficio online open source self-hostable e basata su LibreOffice. Le sue caratteristiche includono:
- Modifica di base
- Rendering WYSIWYG ad alta fedeltà
- Supporta il formato documento DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF
- Importa e visualizza Visio, Publisher e oltre 100 altri
- Modifica condivisa
Collabora è un grande contributore al progetto LibreOffice. Tutti i codici di Collabora Online verranno eventualmente inclusi in LibreOffice.
Nota:questo tutorial funziona su Ubuntu 20.04, 18.04 e 16.04. Se stai usando un'altra versione di Ubuntu, puoi installare Collobaora Online con Docker.
Prerequisiti
Si presume che tu abbia già configurato un server Nextcloud, che può trovarsi su qualsiasi distribuzione Linux. Se non l'hai già fatto, puoi consultare le seguenti guide di facile comprensione.
- Come installare Nextcloud su Ubuntu 20.04 con LEMP Stack
- Come installare Nextcloud su Ubuntu 20.04 con LAMP Stack
- Come installare Nextcloud su CentOS 8 con LEMP Stack
- Come configurare Nextcloud su Arch Linux
Il server Collabora Online e il server Nextcloud possono trovarsi sulla stessa macchina o su due macchine diverse. Questo tutorial mostra come installare il server online Collabora su Ubuntu utilizzando un'immagine Docker creata da Collabora e Nextcloud. Quindi integralo con un server Nextcloud esistente.
Passaggio 1:installa Collabora Online su Ubuntu dal repository ufficiale
Collabora ha un repository di pacchetti ufficiale per Ubuntu 20.04, 18.04 e 16.04. Esegui il comando seguente per aggiungerlo al tuo sistema 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
Quindi esegui il comando seguente per scaricare e importare la chiave pubblica Collabora, che consente al gestore di pacchetti APT di verificare l'integrità dei pacchetti scaricati da questo repository.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
Se non riesci a importare la chiave pubblica con il comando precedente, puoi utilizzare il comando seguente per scaricare e importare la chiave.
wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && sudo apt-key add repomd.xml.key
Poiché questo repository utilizza la connessione HTTPS, è necessario installare apt-transport-https
e ca-certificates
pacchetto, in modo che il gestore di pacchetti APT possa stabilire una connessione sicura al repository.
sudo apt install apt-transport-https ca-certificates
Ora aggiorna l'indice del pacchetto locale e installa Collabora Online. Loolwsd è il demone WebSocket di LibreOffice Online.
sudo apt update sudo apt install loolwsd code-brand
Fase 2:Configura il demone WebSocket di LibreOffice Online
Dopo averli installati, puoi controllare lo stato di loolwsd.
systemctl status loolwsd
Suggerimento :Se il comando precedente non si è chiuso immediatamente, puoi premere il Q
chiave per uscire.
Come puoi vedere, non è riuscito ad avviarsi. Possiamo controllare il diario per vedere perché è successo.
sudo journalctl -eu loolwsd
Esempio di output:
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.
Per impostazione predefinita, loolwsd abilita la connessione TLS. Tuttavia, non ha trovato un file di certificato TLS, da qui l'errore di avvio. È meglio disabilitare TLS in loolwsd e terminare TLS su un proxy inverso. Il file di configurazione loolwsd si trova in /etc/loolwsd/loolwsd.xml
. Tuttavia, è un file XML, che non è facile da leggere e modificare. Possiamo usare loolconfig
strumento per modificare le configurazioni.
Esegui il comando seguente per disabilitare TLS in loolwsd.
sudo loolconfig set ssl.enable false
E abilita la terminazione TLS sul proxy inverso.
sudo loolconfig set ssl.termination true
Per impostazione predefinita, loolwsd consente solo agli host conosciuti di accedere al suo servizio. Per consentire a Nextcloud di accedere al servizio, esegui il comando seguente per aggiungere il tuo nome host Nextcloud alla whitelist.
sudo loolconfig set storage.wopi.host nextcloud.example.com
Puoi anche abilitare l'account amministratore per loolwsd con il comando seguente. Dovrai impostare un nome utente e una password per l'account amministratore.
sudo loolconfig set-admin-password
Riavvia loolwsd per rendere effettive le modifiche.
sudo systemctl restart loolwsd
Ora dovrebbe funzionare senza errori.
systemctl status loolwsd
Uscita:
Fase 3:imposta il proxy inverso
Il server Nextcloud richiede un certificato TLS su Collabora Online, quindi dovremo creare un host virtuale, assegnare all'host virtuale un nome di dominio, impostare un proxy inverso e installare il certificato TLS. Possiamo usare sia Apache o Nginx per raggiungere questo obiettivo.
Apache
Installa il server web Apache con il seguente comando:
sudo apt install apache2
Eseguire il comando seguente per creare un file host virtuale Apache per Collabora Online.
sudo nano /etc/apache2/sites-available/collabora.conf
Inserisci il seguente testo nel file. Sostituisci il nome di dominio con il tuo nome di dominio effettivo per Collabora Online. Non dimenticare di creare un record A per questo sottodominio.
<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>
Salva e chiudi il file. Per poter eseguire il proxy del traffico utilizzando Apache, dobbiamo abilitare alcuni moduli Apache.
sudo a2enmod proxy proxy_wstunnel proxy_http
Abilita questo host virtuale con il seguente comando:
sudo a2ensite collabora.conf
Quindi riavvia Apache.
sudo systemctl restart apache2
Nginx
Installa Nginx su Ubuntu con il seguente comando:
sudo apt install nginx
Crea un file host virtuale per Collabora Online.
sudo nano /etc/nginx/conf.d/collabora.conf
Inserisci il seguente testo nel file. Sostituisci il nome di dominio con il tuo nome di dominio effettivo per Collabora Online. Non dimenticare di creare un record A per questo nome di dominio.
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; } }
Salva e chiudi il file. Quindi testa le configurazioni di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica il server Nginx.
sudo systemctl reload nginx
Fase 4:ottieni e installa il certificato TLS
Ora otteniamo un certificato TLS gratuito da Let's encrypt. Esegui i seguenti comandi per installare il client Let's Encrypt (certbot) dal repository software predefinito.
sudo apt install certbot
Se usi Apache server web, quindi è necessario installare anche il plugin Certbot Apache.
sudo apt install python3-certbot-apache
Quindi emetti il seguente comando per ottenere un certificato TLS/SSL gratuito.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com
Se usi Nginx server web, quindi è necessario installare il plug-in Certbot Nginx.
sudo apt install python3-certbot-nginx
Quindi usa il plug-in Nginx per ottenere e installare il certificato eseguendo il comando seguente.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com
Vedrai il seguente testo che indica che hai ottenuto con successo un certificato TLS.
Passaggio finale:connetti Nextcloud a Collabora Online
Nella dashboard di Nextcloud, vai su Apps
pagina. Quindi, vai su Office & Text
sezione, trova la Collabora Online
app, fai clic su Download and Enable
pulsante.
(Nota :C'è un'altra app chiamata Collabora Online - Built-in CODE server
, che non dovresti installare sul tuo server Nextcloud.)
Dopo aver abilitato questa app, vai su Nextcloud Settings
pagina. Fai clic su Collabora Online
scheda a sinistra. Per impostazione predefinita, utilizza il server CODE integrato, che non è adatto per l'uso in produzione. Dobbiamo selezionare Use your own server
e inserisci il nome di dominio della tua Collabora Online incluso https://
prefisso, quindi fai clic su Save
pulsante.
Nelle advance settings
, puoi anche impostare OOXML come formato predefinito, in modo che i file siano compatibili con il software Microsoft Office.
Ora, quando fai clic sul pulsante Aggiungi (+) in Nextcloud, sarai in grado di creare documenti Word, fogli di calcolo e presentazioni direttamente dal tuo server Nextcloud.
La console di amministrazione loolwsd è disponibile all'indirizzo https://collabora.example.com/loleaflet/dist/admin/admin.html
. Devi inserire il nome utente e la password, che sono stati creati al passaggio 2.
Risoluzione dei problemi
Se Nextcloud ti dice che c Impossibile stabilire la connessione al server Collabora Online , potrebbe essere che il tuo server Nginx sia in esecuzione dietro un proxy inverso come HAProxy e tu abbia le seguenti due righe nel /etc/nginx/nginx.conf
.
set_real_ip_from 127.0.0.1; real_ip_header proxy_protocol;
Ciò significa che Nginx si aspetta una connessione HTTP dal proxy inverso. Dovresti modificare il /etc/nginx/conf.d/collaboara.conf
file e aggiungi proxy_protocol
alla direttiva di ascolto.
listen 127.0.0.1:443 ssl http2 proxy_protocol;
Quindi modifica il /etc/hosts
file e aggiungi un record DNS statico come di seguito. Sostituisci 12.34.56.78
con l'indirizzo IP pubblico del server.
12.34.56.78 collaboara.example.com
collabora.example.com
dovrebbe essere puntato all'indirizzo IP pubblico del tuo server. Non puntarlo a 127.0.0.1.
Puoi anche controllare i log di loolwsd per trovare indizi. Forse non funziona.
sudo journalctl -eu loolwsd
E controlla i log del server web.
- Apache:
/var/log/apache2/collabora_error
- Nginx:
/var/log/nginx/collabora.error