![]() | ![]() |
Want the english version?? Here you go
Hier zeige ich meine „alles-in-einem“ Lösung für Nextcloud und Collabora auf Docker mit Docker Compose.
Dazu gibt es ebenfalls ein Youtube Video: https://youtu.be/K6R-0l9iWBM
Was brauchen wir?
- CentOS 7 Server (Azure, AWS, Hetzner, whatever)
- Installiertes Docker und docker-compose
- Domäne mit 2 zum Server zeigenden DNS A Records (admin-schule.de z.B.)
- einen für Nextcloud „cloud.admin-schule.de“
- einen für Collabora „office.admin-schule.de“
Vorbereitung
Logge dich auf der Server per SSH ein. Schaue danach ob Docker installiert und erreichbar ist.
docker ps
Prüfe ob „docker-compose“ installiert ist.
docker-compose version
Ein Verzeichnis „docker_nextcloud“ erstellen, oder mein Repository clonen – https://github.com/bohlrich/docker_nextcloud
Die „docker-compose.yml“ erstellen
version: '2.1'
services:
nginx-proxy:
image: jwilder/nginx-proxy
restart: always
volumes:
- nginx-proxy-certs:/etc/nginx/certs:ro
- nginx-proxy-vhost:/etc/nginx/vhost.d
- /opt/docker-files/nginx-proxy/network_internal.conf:/etc/nginx/network_internal.conf
- /opt/docker-files/nginx-proxy/uploadsize.conf:/etc/nginx/conf.d/uploadsize.conf
- /usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- 80:80
- 443:443
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
networks:
cloud-network:
nginx-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
restart: always
volumes:
- nginx-proxy-certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- nginx-proxy
networks:
cloud-network:
ncdb:
image: mariadb:10.5.4
restart: always
environment:
- MYSQL_ROOT_PASSWORD=qLwsPX9g4vQq
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=ncuser
- MYSQL_PASSWORD=B7JtnBvv6rSg6Dug
volumes:
- ncdb-data:/var/lib/mysql
networks:
cloud-network:
nc:
image: nextcloud:19.0.1-apache
restart: always
depends_on:
- ncdb
volumes:
- nc-nextcloud:/var/www/html
- nc-apps:/var/www/html/custom_apps
- nc-config:/var/www/html/config
- nc-data:/var/www/html/data
environment:
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=ncuser
- MYSQL_PASSWORD=B7JtnBvv6rSg6Dug
- MYSQL_HOST=ncdb
- VIRTUAL_HOST=cloud.admin-schule.de
- VIRTUAL_PORT=80
- VIRTUAL_PROTO=http
- LETSENCRYPT_HOST=cloud.admin-schule.de
- LETSENCRYPT_EMAIL=info@admin-schule.de
- RESOLVE_TO_PROXY_IP=true
networks:
cloud-network:
office:
image: collabora/code:4.2.6.2
restart: always
environment:
- "domain=cloud\.admin-schule\.de"
- "username=admin"
- "password="
- "SLEEPFORDEBUGGER=0"
- VIRTUAL_HOST=office.admin-schule.de
- VIRTUAL_PORT=9980
- VIRTUAL_PROTO=https
- LETSENCRYPT_HOST=office.admin-schule.de
- LETSENCRYPT_EMAIL=info@admin-schule.de
- RESOLVE_TO_PROXY_IP=true
- NETWORK_ACCESS=internal
expose:
- 9980
cap_add:
- MKNOD
networks:
cloud-network:
networks:
cloud-network:
driver: bridge
volumes:
nginx-proxy-certs:
nginx-proxy-vhost:
ncdb-data:
nc-nextcloud:
nc-apps:
nc-config:
nc-data:
Erstelle ein Verzeichnis „/opt/docker-files/nginx-proxy/“
mkdir -p /opt/docker-files/nginx-proxy/
cd /opt/docker-files/nginx-proxy/
Und erstelle eine Datei „network_internal.conf“. Diese wird benötigt, damit der Nginx Container den Traffic zwischen den Containern durchlässt.
echo "allow all;" >> /opt/docker-files/nginx-proxy/network_internal.conf
Ganz wichtig ist ebenfalls die Konfigurationsdatei für die Uploadgröße. Diese legt ihr folgendermaßen an:
echo "client_max_body_size 10G;" >> /opt/docker-files/nginx-proxy/uploadsize.conf
Nun zurück zum „docker_nextcloud“ Ordner. Jetzt können die Docker Images mit docker-compose geladen werden.
docker-compose pull
Bitte prüfe, ob die DNS Einträge „cloud.domainname.com“ und „office.domainname.com“ schon auf die öffentliche IP Adresse des Servers auflösen.
Nach erfolgreichen pull, kann die Lösung gestartet werden.
docker-compose up -d
Prüfe ob alles läuft und gehe anschließend mit einem Webbrowser auf die konfigurierte Adresse des Nextcloud Servers.
https://cloud.domainname.com/
Jetzt muss ein Administrator Account für die Nextcloud angelegt werden. Vergib einen Benutzernamen und ein starkes Passwort. Die Checkbox für empfohlene Apps bitte NICHT anklicken. Das verbaut uns sonst die Konfiguration mit unserem Collabora Container.

Danach kann es sein, dass eine Warnung angezeigt wird und man die Checkbox erneut deaktivieren muss. Die Warnung für die Datenbankverbindung und Leistungseinbußen können an der Stelle ignoriert werden.
Nach ein paar Sekunden der Einrichtung müsste dann das Nextcloud Startfenster zu sehen sein.

Bitte zu „Apps“ und „Büro & Text“ navigieren. Hier die App „Collabora Online“ suchen und „Herunterladen und aktivieren“ klicken.

Nun kann unter „Einstellungen“ im Hauptmenü der Punkt „Collabora Online“ gesucht werden. Dort bitte den obersten Punkt „Verwende deinen eigenen Server“ wählen und diesen eintragen:
https://office.domainname.com
Danach „Save“.
Oooops, hier läuft etwas schief und wir bekommen einen Verbindungsfehler!

Lösung des Verbindungsfehlers
Um den Verbindungsfehler zu beheben, müssen wir die CentOS 7 Firewall konfigurieren. Dafür passen wir das Zone File der Public Zone an. Navigiere zu „/etc/firewalld/zones/“
cd /etc/firewalld/zones/
Bearbeite die Datei „public.xml“, damit sie wie unten zu sehen aussieht.
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<rule family="ipv4">
<source address="172.19.0.0/16"/>
<accept/>
</rule>
</zone>
Wir fügen eine Regel für das Subnetz „172.19.0.0./16“ hinzu. Das ist das Subnetz unserer Dockercontainer. Das kann bei dir anders sein. Um das richtige Subnetz herauszufinden, kannst du folgenden Befehl verwenden:
docker inspect docker_nextcloud_cloud-network | grep Subnet
Wenn die public.xml angepasst ist, muss der Firewall Dienst neu gestartet werden
systemctl restart firewalld

Anschließend testen wir die Verbindung erneut und es funktioniert! Nun ist die Nextcloud Umgebung einsatzbereit.


