
Debian 9 Nextcloud + Collabora online
Ahoj,
už pár dní si hraju se "serverem" který jsem si udělal ze staršího PC. Na moje pokusy a hraní asi ideální. Na stroj jsem nainstaloval Debian 9 a rozchodil na něm Nextcloud, který je přístupný z internetu. Pak mi to ale nedalo a pokusil jsem se integrovat collabora online do Nextcloudu a tady narážím na svoje mrzké znalosti. Prakticky by se asi dalo říct, že mám vše nainstalováno, nicméně při pokusu o editaci jakéhokoliv souboru mě to vyřve hláškou "Unauthorized WOPI host". Faktem je, že mi to chvíli fungovalo, ale pak jsem restartoval "server" a vše se bohužel s chybou opakuje.
Zkusím popsat konfiguraci a vůbec jak to mám uděláno, zřejmě ale na něco zapomenu, tak případné informace doplním.
Debian 9, Nextcloud 12 aktuální verze. Vše běží na apache2 a MariaDB, tohle je asi v pohodě.
Pak jsem pokračoval přiinstalováním Nextcloudu pomocí Docker -
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=office\\.mojedomena\\.cz' --restart always --cap-add MKNOD collabora/code
Vytvořil jsem virtualhost nextcloud.conf a office.mojedomena.cz.conf ve tvaru:
pro nextcloud.conf
<VirtualHost *:80>
DocumentRoot "/var/www/nextcloud"
ServerName mojedomena.cz
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
a office.mojedomena.cz.conf
<VirtualHost *:80>
ServerName office.mojedomena.cz
RewriteEngine on
RewriteCond %{SERVER_NAME} =office.mojedomena.cz
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>
Pak jsem přes Letsencrypt ocertifikoval oboje, jak doménu, tak subdoménu. Na obě se tedy dá přistoupit přes https se funkčním certifikátem, ověřeno přes sslab a další. S tím se pojí vygenerování dvou dalších configů pro port 443
tedy nextcloud-le-ssl.conf ve tvaru:
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/nextcloud"
ServerName mojedomena.cz
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
SSLCertificateFile /etc/letsencrypt/live/mojedomena.cz/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mojedomena.cz/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
a office.mycloud.cz-le-ssl.conf ve tvaru:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName office.crocodilus.cz
SSLCertificateFile /etc/letsencrypt/live/office.mojedomena.cz/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/office.mojedomena.cz/privkey.p$
Include /etc/letsencrypt/options-ssl-apache.conf
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retr$
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discove$
# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /lool https://127.0.0.1:9980/lool
ProxyPassReverse /lool https://127.0.0.1:9980/lool
</VirtualHost>
</IfModule>
pak jsem všechny sítě pozapínal pomocí a2ensite a ověřil si jejich funkčnost pokusem o přístup přes "https://" a testem certifikátu viz výše.
V administraci nextcloudu jsem u nastavení collabora nastavil cestu pro collabora online server a to https://office.mojedomena.cz:443. Při pokusu o editaci souboru přes Collaboru ted dostávám chybu Unauthorized WOPI host s tím, že pod obrázkem je načtená Collabora, tzn, domnívám se, že Collabora funguje, ale je problém někde v autorizaci, autentifikaci, nebo kýho šlaka. Bohužel v logu nextcloudu není uvedena žádná chyba, která by mě nějak nasměrovala a mě už došly nápady před pár dny a zkouším různé věci pořád dokola, což nepřináší kýžený efekt....
Proto kdyby měl někdo nějaký tip či radu jakým směrem se ubírat, budu moc vděčný.
A proxy si si enabloval?
a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod ssl
Ale tipujem, ze ano bez toho by ti to asi nebezalo vobec.
ano, tyhle všechny moduly mám povolené.
Vyhrabal jsem nějaký log z dockeru, ale moc moudrý z toho nejsem. Všechna místa s mou konkrétní doménou jsem zaměnil za placeholder...
Jsem to ale hlupák!
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=office\\.mojedomena\\.cz' --restart always --cap-add MKNOD collabora/code
se nemá spouštět s odkazem na collabora server ale na instanci nextcloudu!
V mém případě ve tvaru:
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=mojedomena\\.cz' --restart always --cap-add MKNOD collabora/code
Nyní již vše funguje!
EDIT: Po restartu serveru musím smazat docker příkazem docker rm -f ID instance a znovu přidat. Opruz.