In meinem ersten Beitrag Collabora Online Office mit Docker in Plesk bereitstellen und an Nextcloud anbinden, habe ich Euch gezeigt, wie man Collabora Online Office in Plesk bereitstellt. Jetzt wollen wir das ganze ohne Plesk und auf dem gleichen VPS bereitstellen, auf dem auch unsere Nextcloud läuft.
Als erstes müssen wir Docker installieren:
sudo apt-get install docker.io
und den entsprechenden Docker Container starten:
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.deine-domain\\.tld' -e 'username=Benutzername' -e 'password=Dein-Passwort' --restart always --cap-add MKNOD collabora/code
Wenn Ihr von mehreren Nextcloud-Instanzen auf den Docker-Container zugreifen wollt, müsst Ihr einfach die FQDNs mit einer Pipe trennen:
'domain=host1\\.deine-domain\\.tld|host2\\.deine-domain\\.tld'
Danach aktivieren wir einige Module im Apache2, um ihn als Reverse Proxy zu verwenden:
sudo a2enmod proxy sudo a2enmod proxy_wstunnel sudo a2enmod proxy_https sudo a2enmod proxy_http sudo a2enmod ssl
jetzt legen wir den vhost an:
sudo nano /etc/apache2/sites-available/002-office.deine-domain.tld.conf
Inhalt (bitte enstprechend Eurer Domain anpassen):
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. ServerName office.deine-Domain.tld ServerAdmin webmaster@deine-Domain.tld DocumentRoot /var/www/html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
und die Site aktivieren:
sudo a2ensite 002-office.deine-domain.tld.conf
Den vhost sichern wir wieder mit einem SSL-Zertifikat von LetsEncrypt ab:
sudo certbot --authenticator standalone --installer apache -d office.deine-domain.tld --pre-hook "service apache2 stop" --post-hook "service apache2 start"
dieses mal wieder die Option 2 (redirect) wählen, aber bevor wir den Indianer neu starten bearbeiten wir die soeben angelegte conf:
sudo nano /etc/apache2/sites-available/002-office.deine-domain.tld-le-ssl.conf
<VirtualHost *:443> ServerName office.deine-domain.tld:443 # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! SSLEngine on SSLCertificateFile /etc/letsencrypt/live/office.deine-domain.tld/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/office.deine-domain.tld/privkey.pem SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SH$ SSLHonorCipherOrder on # 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 retry=0 ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery # 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>
jetzt können wir den Webserver neustarten:
sudo service apache2 restart
In Nextcloud unter Einstellungen für Collabora Online die URL eintragen
Wenn gespeichert, können wir Dokumente direkt im Browser bearbeiten:
Unter der folgenden URL findest Du die Admin-Konsole von Collabora:
https://office.deine-domain.tld/loleaflet/dist/admin/admin.html
Dort kannst Du ein paar Einstellungen anpassen.
Gutes Gelingen 😉 und bei Fragen wie immer fragen…
12 Gedanken zu „Collabora Online Office mit Docker und Apache bereitstellen und in Nextcloud einbinden“
Hallo Markus, ich finde deine Anleitungen super! Doch komme ich hier leider in einem Punkt nicht weiter. Nachdem ich den „docker run“ Befehl mit den abzuändernden Parametern starte und Collabora runtergeladen wird, kommt nach der extraction des letzten files eine Fehlermeldung: docker: failed to register layer: Error processing tar file(exit status 1): write /lib/x86_64-linux-gnu/libdbus-1.so.3.14.6: no space left on device.
Die Nextcloud ist auf einer VM mit Ubuntu 18.04 installiert. 4Gb Ram, 50GB für den Server und nochmal 250GB für die Daten der Cloud.
Deswegen verstehe ich nicht, warum ich nicht genügend Speicher zur Verfügung haben soll.
Weißt du da vielleicht Rat?
Hallo Oliver, docker hat seinen Speicherplatz unter /var/lib/docker. Schau mal mit df -h wie viel Platz da ist. Vielleicht hilft ein „docker system prune“ ja etwas Platz zu schaffen. Aber Vorsicht, damit werden alle gestoppten Container und deren Daten gelöscht. Ansonsten meld Dich nochmal.
Hallo Markus, mit dem Ergebnis der Speicherauflistung kann ich leider nicht sehr viel anfangen…
DIe Speicherliste siehst du hier: https://www.bilder-upload.eu/bild-9ed9d9-1567660515.png.html
/dev/mapper/ubuntu–vg-ubuntu–lv ist ziemlich groß, könnte das daran liegen?
Der Command „docker system prune“ hat 0B frei gesetzt ?
Da dies die zweitgrößte Partition zu sein scheint, gehe ich davon aus, dass dort das System liegt. Datastore liegen Deine Daten? Der Output von dem Befehl „mount“ könnte darüber Aufschluss geben.
Genau, meine Daten liegen auf datastore.
Das Ergebnis von mount: https://www.bilder-upload.eu/bild-094331-1567705450.png.html
OK. Deine Systempartition / ist fast voll. Hattest Du nicht 50 GB geschrieben?
Genau,
Sofern ich das richtig gemacht habe…
Ich vermute mir ist ein Fehler beim erstellen unterlaufen, oder Ubuntu/nextcloud haben sich ihren eigenen Speicherplatz genommen/konfiguriert und nicht mehr…
https://www.bilder-upload.eu/bild-66c6a3-1567707110.png.html
Ich habe aber noch 2 andere Probleme,: Obwohl die maximale Upload size auf 10 GB gestellt ist, bekomme ich eine Fehlermeldung wenn ich z.b ein video mit 150 MB hochladen möchte…
Hinzu kommt, das meine Kontakte unter der Rubrik „jeder“ leer sind, dort aber 4 Kontakte sein sollten und oben dann immer eine Fehlermeldung erscheint: „Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.“
Hängt das vielleicht alles zusammen?
Das könnte sein.
Schau mal hier nach:
https://www.thomas-krenn.com/de/wiki/LVM_vergr%C3%B6%C3%9Fern
Die restlichen GB scheinen nicht zugeordnet zu sein.
Nachtrag:
Wie der Zufall es so wollte, habe ich nach dem Post meines vorherigen Kommentars die Lösung dann doch noch gefunden.
In der Apache SSL Conf habe ich nun den Abschnitt für CODE im Block “ … „. Dabei habe ich alle „127.0.0.1:9980“ ersetzt durch „meine-domain.de:portvonaußen“.
Mein Befehl zum Starten des Containers sieht jetzt wie folgt aus:
docker run –name=CODE -i -t -d -p 192.168.178.2:9980:9980 -e „domain=meine-domain\\.de“ -e „username=name“ -e „password=secret“ -e „DONT_GEN_SSL_CERT=true“ -v /app/collabora/loolwsd:/etc/loolwsd –restart always –cap-add MKNOD collabora/code
Ich habe im Order „/app/collabora/loolwsd“ meine Let’s Encrypt Zertifikate manuell reinkopiert (Symlinks habe ich nicht direkt zum laufen bekommen) und die Dateien loolwsd.xml und loolkitconfig.xcu manuell aus dem Container per Copy/Paste eingefügt.
Damit läuft nun auch mein CODE Container mit meinem Let’s Encrypt Zertifikat.
„In der Apache SSL Conf habe ich nun den Abschnitt für CODE im Block “ … „. “
* Hier sollte stehen \
Hi Hendrik,
wenn Du den Container-Port auf 127.0.0.1 veröffentlichst, dann sollte dieser auch über Reverse Proxy erreichbar sein. Den Port über 192.xxx. freizugeben ist im internen Netz sicherlich ok, aber falls Du den irgendwo im Public-Bereich hast, dann solltest Du die Konfig noch mal prüfen.
Markus
Hallo,
ich versuche seit mehreren Tagen Collabora mit meinem Let’s Encrypt Zertifikat zu verbinden. Ist dies irgendwie möglich? Ich muss nämlich immer einmal die Admin Konsole aufrufen und das Zertifikat von CODE bestätigen, um Collabora nutzen zu können. Collabora erzeugt beim Start nämlich immer ein Zertifikat der „Dummy Authority“. Ich habe auch schon versucht, beim Start von Collabora in Docker verschiedene Parameter wie DONT_GEN_SSL_CERT etc. ausprobiert -> siehe https://www.collaboraoffice.com/code/docker/
Meine apache2 conf zu meiner Domain sieht jetzt exakt wie oben beschrieben aus, bis auf den ersten Teil nach . Dort habe ich folgendes stehen:
ServerAdmin meine@email
ServerName meine-domain.de
ServerAlias http://www.meine-domain.de
DocumentRoot /var/www/path/to/root
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Das dürfte aber nicht das Problem darstellen, denke ich. (Bin kein apache Profi 😉 ).
Ich bin über jeden Ratschlag dankbar.