Ich bin am Rande meiner Erkenntnisfähigkeit angelangt. (Und die Geduld ist nach 4 Tagen probieren, suchen und wieder probieren auch ganz wenig geworden...).
Nextcloud ist ja ein wirklich feines Ding. Und Collabora (eine Libreoffice-Online-Version) ebenfalls. Und Nextcloud verspricht, dass man mit einem einfachen Klick das Ding installieren und nutzen kann. (Zumindest würd ich es so vermuten, wenn ich bei den "Apps" auf "Aktivieren" klicke).
Doch dem ist nicht so. Dazu muss man einen Collabora-Server aufsetzen.
Ich möchte das ganze wartungsarm und technologiefreundlich mit Docker realisieren. (auch für die Fingerübung).
Jetzt bietet nextcloud auf Github eine ganze Palette an Examples für docker-compose.yml-Files an, wo man verschiedene Szenarien ganz einfach damit starten kann.
Für Collabora hab ich auch so ein feines docker-compose.yml gefunden.
Ein einziges Mal gelang es mir allerdings nur, mit einem docker-compose.yml für nextcloud+mariadb die Nextcloud und mit einem einfachen "docker run..." Befehl collabora zu starten und auch tatsächlich online das "About.odt" und ein neues Dokument editieren zu können.
Dann wollte ich alles in ein einziges docker-compose.yml-File zusammenfassen (damit ich dieses dann bei einer Neuinstallation einfach auf den neuen Server kopiere und mit docker-compose starten kann)... Und es klappt einfach nicht.
Meine Voraussetzung ist, dass ich das ganze mittels einem reverse-Proxy und letsencrypt absichere. Für nextcloud klappt auch das. Das Example von nextcloud funktioniert aus dem Stand heraus.
Ich habe das Example von hier gewählt https://github.com/nextcloud/docker
Konkret: https://github.com/nextcloud/docker/tre ... ariadb/fpm
In den Files habe ich nur meine Domain (cloud.example.org) und zwei verschiedene Passwörter für MariaDB eingesetzt.
Ein
Code: Alles auswählen
docker-compose up --build
Dann hab ich mein docker-compose.yml und das von hier erweitert:
Code: Alles auswählen
https://github.com/nextcloud/docker/issues/223
In den Einstellungen von collabora-office in Nextcloud habe ich office.example.org eingetragen. Das wird bemängelt, da dies das selbe Protokoll wie nextcloud selbst haben muss. Also https://office.example.org. Auch das liefert eine Fehlermeldung.
Irgendwo in den Untiefen des Internetz hab ich gefunden, dass für collabora noch im Environment VIRTUAL_NETWORK=... angegeben werden muss. wenn ich da dieses proxy-tier einsetze, kann ich zumindest auf https://office.example.org ein "OK" als Body abrufen. In Nextcloud kommt wieder die Fehlermeldung, dass die Anfrage nicht beendet werden kann. Setze in in nextcloud http://office.example.org, dann krieg ich die Fehlermeldung, dass das Dokument beschädigt sein könnte, oder aus einem anderen Grund nicht geöffnet werden kann. Wenn ich es manuell herunterlade und mit Libreoffice öffne, klappt das aber einwandfrei.
Also mit einem Protokollmix scheint das Dokument kaputt zu sein, mit gleichem Protokoll gibts von "Anfrage kann nicht beendet werden" bis "502 Bad Gateway" alle Fehlermeldungen...
Ich zuck bald aus...
Sieht vielleicht jemand das Problem? Ich finde es einfach nicht:
[EDIT]
Und dann finde ich das:
https://help.nextcloud.com/t/collabora- ... perty/5927
Es gibt in Debian diese Kernel-Module zwar nicht, aber es gibt

Hab diesen Kernen (4.15) installiert und neu gebootet, und schon kann ich das Dokument mit collabora-Office online öffnen...
Hier mein docker-compose.yml (Das ersetzt in diesem Verzeichnis https://github.com/nextcloud/docker/tre ... ariadb/fpm das dortig vorhandene file.)
Code: Alles auswählen
version: '2'
services:
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=verySecret
env_file:
- db.env
app:
image: nextcloud:fpm
restart: always
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_HOST=db
env_file:
- db.env
depends_on:
- db
web:
build: ./web
restart: always
volumes:
- nextcloud:/var/www/html:ro
environment:
- VIRTUAL_HOST=cloud.example.org
- LETSENCRYPT_HOST=cloud.example.org
- LETSENCRYPT_EMAIL=cloud@example.org
depends_on:
- app
networks:
- proxy-tier
- default
collabora-code:
image: collabora/code
expose:
- 9980
environment:
- VIRTUAL_HOST=office.example.org
- VIRTUAL_PORT=9980
- VIRTUAL_PROTO=https
- VIRTUAL_NETWORK=default
- LETSENCRYPT_HOST=office.example.org
- LETSENCRYPT_EMAIL=admin@example.org
- domain=cloud\\.example\\.org
restart: always
cap_add:
- ALL
networks:
- proxy-tier
proxy:
build: ./proxy
restart: always
ports:
- 80:80
- 443:443
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
volumes:
- certs:/etc/nginx/certs:ro
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy-tier
letsencrypt-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
restart: always
volumes:
- certs:/etc/nginx/certs
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- proxy-tier
depends_on:
- proxy
volumes:
db:
nextcloud:
certs:
vhost.d:
html:
networks:
proxy-tier:
default:
Ich habe Docker für Debian nach dieser Anleitung installiert:
https://docs.docker.com/install/linux/docker-ce/debian/
Die Passwörter für MYSQL in docker-compose.yml und db.env habe ich mit
Code: Alles auswählen
pwgen 12 -n1
Es muss noch das Verzeichnis certs in diesem Verzeichnis angelegt werden.
Außerdem muss im DNS noch cloud.example.org und office.example.org angelegt werden. (Wenn man es lokal betreibt im File /etc/hosts oder im lokalen DNS-Server oder eben im DNS-Server seiner Domain!!!)
Dann kann man das ganze mit
Code: Alles auswählen
docker-compose up --build
Da ich meinen LDAP-Server mit einem eigenen Zertifikat meiner eigenen CA versehen habe, fehlt oben im File docker-compose.yml noch das Mapping von /etc/ssl/certs in den Container.
Damit die lokalen Zertifikate im Container zur Verfügung stehen, muss der Abschnitt "app:" gegen folgenden noch ausgetauscht werden:
Code: Alles auswählen
app:
image: nextcloud:fpm
restart: always
volumes:
- nextcloud:/var/www/html
- /etc/ssl/certs:/etc/ssl/certs
environment:
- MYSQL_HOST=db
env_file:
- db.env
depends_on:
- db
Ich hoffe, ich hab nix vergessen zum Reproduzieren.
lg scientific