17 / 36
Oct 2019

Hallo Ralf,

ich habe einmal versucht ein paar Variablen im Punkt Umgebung einzurichten.
Allerdings geht scheinbar nur einmal wenn ein Container erstellt wurde.
Ein nachträgliches ändern bzw. hinzufügen der Variablen scheint bei qnap nicht vorgesehen zu sein.
Die docker-compose.yml lässt sich bei qnap wohl auch nicht nutzen.
Welcher nginx docker würdest du empfehlen?

Vielleicht liest Jochen ja noch mit und kann einmal kurz sagen wie er das gemacht hat.

Steht alles in dem docker-compose.yml in meiner ersten Antwort.
Allerdings braucht der Nginx eine Konfiguration, die musst Du auch irgendwo hin legen und per Volume in den Nginx Container geben.

Wäre schön wenn wir für Qnap eine Doku hätten, ich habe aber keine zum Testen …

Ralf

Hallo Ralf, schau einmal diesen Beitrag aus dem Qnap Forum.


Dort ist zwar die installation von Owncloud beschrieben, aber auch wie ein Composefile benutzt wird.
Ich dachte das auf den Modernen NAS Geräten keine Shell notwendig ist :).

Wenn Du docker-compose zur Verfügung hast kannst Du EGroupware ganz einfach auf der Qnap installieren.
Falls kein docker-compose von Qnap mitgeliefert wird, kann auch einfach ein kleines Shell Skript statt dessen verwenden, z.B. das von unserem docker-compose Paket (das startet docker-compose in einem Container):

Unser voll dokumentiertes docker-compose.yml File findest Du auf Github:

Ralf

Hallo Ralf,

docker-compose wird bei Qnap mitgeliefert.
Die docker-compose.yml habe ich nun etwas angepasst.
Wie im Qnap Forum habe ich auf der Qnap unter /share/container einen Ordner egroupware angelegt.

Meine Dateistruktur sieht nun so aus:
drwxrwxrwx 8 admin administrators 4.0K 2019-10-04 17:59 ./
drwxrwxrwx 7 admin administrators 4.0K 2019-10-04 15:42 …/
drwxrwxrwx 2 admin administrators 4.0K 2019-10-04 15:18 config/
drwxrwxrwx 3 33 33 4.0K 2019-10-04 17:55 data/
drwxrwx— 5 999 administrators 4.0K 2019-10-04 17:55 db/
-rw-rw-rw- 1 admin administrators 5.7K 2019-10-04 16:52 docker-compose.yml
drwxrwx— 2 admin administrators 4.0K 2019-10-04 17:04 extra/
-rw-rw-rw- 1 admin administrators 955 2019-10-04 17:56 install.sh
drwxrwxrwx 2 admin administrators 4.0K 2019-10-04 15:34 nginx/
drwxrwx— 34 admin administrators 4.0K 2019-10-04 17:04 sources/

Beim erstellen bekomme ich aber noch einen Fehler wenn der nginx Container erstellt wird:
[/share/container/egroupware] # docker-compose -f /share/container/egroupware/docker-compose.yml up -d
Creating egroupware-watchtower … done
Creating egroupware-db … done
Creating egroupware … done
Creating egroupware-nginx … error

ERROR: for egroupware-nginx Cannot start service nginx: oci runtime error: container_linux.go:265: starting container process caused “process_linux.go:368: container init caused “rootfs_linux.go:57: mounting \”/share/container/egroupware/nginx.conf\” to rootfs \"/share/CACHEDEV2_DATA/container/container-station-data/lib/docker/overlay2/756ef9f6ac317882c6889bff715b009972c207c742c538c529754e03ff1ae782/merged\" at \"/share/CACHEDEV2_DATA/container/container-station-data/lib/docker/overlay2/756ef9f6ac317882c6889bff715b009972c207c742c538c529754e03ff1ae782/merged/etc/nginx/conf.d/default.conf\" caused \“not a directory\”""
: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

ERROR: for nginx Cannot start service nginx: oci runtime error: container_linux.go:265: starting container process caused “process_linux.go:368: container init caused “rootfs_linux.go:57: mounting \”/share/container/egroupware/nginx.conf\” to rootfs \"/share/CACHEDEV2_DATA/container/container-station-data/lib/docker/overlay2/756ef9f6ac317882c6889bff715b009972c207c742c538c529754e03ff1ae782/merged\" at \"/share/CACHEDEV2_DATA/container/container-station-data/lib/docker/overlay2/756ef9f6ac317882c6889bff715b009972c207c742c538c529754e03ff1ae782/merged/etc/nginx/conf.d/default.conf\" caused \“not a directory\”""
: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

Meine Compose Datei würde ich auch gern hochladen, mir fehlen aber die Rechte.

Hier der Nginx Part aus dem Compose File:

  1.   nginx:
    
  2.     image: nginx:stable-alpine
    
  3.     volumes:
    
  4.     ##- sources:/usr/share/egroupware:ro
    
  5.     - /share/container/egroupware/sources:/usr/share/egroupware:ro
    
  6.     # to add a certificate create a certificate.pem containing (in that order)
    
  7.     # 1. private key
    
  8.     # 2. public key
    
  9.     # 3. (optional) chain certificates
    
  10.     # uncomment to the next line
    
  11.     # ./certificate.pem:/etc/ssl/private/certificate.pem
    
  12.     # AND uncomment the three lines starting with "listen 443", "ssl_certificate", "ssl_certificate_key" in nginx.conf
    
  13.     ##- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    
  14.     - /share/container/egroupware/nginx:/etc/nginx/conf.d/default.conf:ro
    
  15.     ports:
    
  16.     # if no webserver is running on the host, change (first) number to 80 or 443
    
  17.     - "8083:80"
    
  18.     - "4443:443"
    
  19.     depends_on:
    
  20.     - egroupware
    
  21.     container_name: egroupware-nginx
    

Die Conf Datei wird in Zeile 14 definiert?
Wenn ich diese Zeile wie im Beispiel Zeile 13 nutze wird im egroupware Ordner auf der Qnap ein nginx.conf Ordner angelegt.
Was ich auch nicht verstehe ist, das jeder Container eine eigene IP Adresse bekommen hat.
Somit sollte es möglich sein in Zeile 17 und 18 die Standard Ports zu nutzen.
Das schlägt aber fehl weil die Ports angeblich schon verwendet werden.
Das stimmt für die Qnap aber nicht für die IP Adresse in dem der Container läuft.

./nginx.conf nimmt die Datei aus dem Ordner der docker-compose.yml Datei

Wenn Du alle Ordner auf etwas anders änderst musst Du auch den Inhalt verschieben.

Ralf

Hallo Ralf, ok verstanden. Ich dachte die Compose Datei reicht. Es wird auch die nginx.conf benötigt.
Steht auch so in der Doku.

Zur Info, ich habe für jeden Versuch alle Docker Daten auch die Ordner leer gemacht.
Ich wollte vermeiden das ich unreproduzierbare Ergebnisse bekomme.

Nachdem ich verstanden habe das ich nun beide Files also docker-compose.yml und nginx.conf benötige habe ich versucht ohne weitere Änderung des compose Files die installation zu starten.
Dann wurden aber die Ordner nicht mit Daten gefüllt.
Also habe ich wieder die alte yml Datei mit Absoluten Pfaden genommen.
Das lief ja schon bis auf das der nginx nicht staten wollte.

Nachdem nun die nginx.conf mit im Verzeichnis ist. Startet auch der nginx.
Die Datebank wird gefüllt etc. leider wird mir noch kein login angezeigt.

Der Aufruf der Webseite zeigt mir noch: file not Found.
Die Docker Console vom nginx zeigt:

2019/10/05 19:11:56 [error] 8#8: *16 FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client: 192.168.1.22,
server: _, request: “GET /egroupware/index.php HTTP/1.1”, upstream: “fastcgi://172.29.0.4:9000”, host: “192.168.1.25:8083”

Das ist normal, solange Du noch keine Dateien hochgeladen hast.

Ich helfe Dir gerne EGroupware auf die QNAP zu bekommen, aber nur mit dem compose-file von uns, nicht irgendwas anderem.

Ralf

Hallo Ralf, ich nutze das Original Compose File.
Die einzige Änderung die ich gemacht habe sind die Absoluten Pfade die ich eingetragen habe.
Vielleicht habe ich mich etwas missverständlich ausgedrückt.

Die Verzeichnisse werden mit den Absoluten Pfaden auch mit Daten gefüllt.
Wäre natürlich besser wenn ich keine Pfade eintragen müsste.

Hallo, die Datenbank wurde erstellt der Zugriff funktioniert.
Allerdings nur wenn ich die Datenbank von der QNAP nehme.
Der Nginx läuft auch die Container habe ich soweit untersucht.
Der Nginx hat die conf Datei ich ich ihm mit dem Composefile übermittelt habe.

Schaue ich im Nginx Container hat der Zugriff auf den Egroupwarer Container.
Soweit kann ich folgen.
Allerdings bekomme ich keine Loginseite angezeigt.

2019/10/09 16:19:02 [error] 9#9: *22 FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client: 1
92.168.1.67, server: _, request: “GET /egroupware/index.php HTTP/1.1”, upstream: “fastcgi://172.29.0.4:9000”, host: “192.168.1.25:8083”

Habe ich jetzt noch etwas beim Konfigurieren übersehen oder fehlt im Compose File noch etwas?

Dh. das der FPM das Skript nicht findet.

Unser docker-compose File verwendet ein Volume das sich Nginx und FPM teilen und in das der FPM beim Start die Sourcen kopiert. Evtl. hast Du das beim Abändern auf die absoluten Pfade etwas falsch gemacht.

Ralf

Ich habe mir alle Docker Container angesehen.
Im Nginx sind Egroupware Dateien gemountet und im Egroupware Container ebenfalls.
Für mich sieht das erst einmal gut aus.
Kannst du mir sagen nach was ich suchen muss?
Welche Datei muss wo liegen?
Oder hilft es wenn ich hier von jedem Container ein df -m poste?

Hallo, ich habe es nun zum laufen bekommen.

Bei meinen Versuchen wurden eine Menge Ordner angelegt die man in der Qnap unter Volumes sehen konnte.
Diese habe ich alle weg gelöscht und noch einmal alles vorn von installiert, nun läuft es auf anhieb.

Sollte das hier jemand finden.

  1. per ssh auf die Qnap
    cd /share/CACHEDEV2_DATA/container
    mkdir egroupware
    cd egroupware
    mkdir config
    mkdir data
    mkdir db
    mkdir extra
    mkdir sources
    wget https://raw.githubusercontent.com/EGroupware/egroupware/master/doc/docker/docker-compose.yml7
    wget https://raw.githubusercontent.com/EGroupware/egroupware/master/doc/docker/nginx.conf3

In der docker-compse.yml den Port für Nginx anpassen, ich habe dort 8083 ausgewählt.

docker-compose up -d

und nach ein paar Minuten anmelden.
Die Anmeldedaten findet man unter data/egroupware-docker-install.log

Hallo Sven,

herzlichen Glückwunsch zu deinem Erfolg. Finde ich stark, dass du dich mit Ausdauer da durchgekämpft hast.

Könntest du bitte noch die Voraussetzungen bzw. deine Umgebung beschreiben?
Welche Modelle kommen in Frage, welcher Softwarestand ist nötig, usw… Das würde andere sicherlich auch interessieren.
Wir könnten das hier im Forum oder im GitHub-Wiki dokumentieren und dann auch im QNAP-Forum veröffentlichen.

Collabora Online und Rocket.Chat hast (noch) nicht integriert, oder?
Wie ist das für dich gefühlt von der Performance?

@jochene:
Wie weit bist du?

Gruß
Stefan

Habe aus Zeitgründen meine Aktivitäten erstmal zurück gestellt. Liege gerade am Strand und lasse mir den Bauch wärmen.:wink:
Nach dem Urlaub werde ich es aber nochmal angehen.
Gruss
Jochen

16 days later

Hallo Stefan, sorry wenn ich mich erst jetzt melde aber ich habe mich seit Tagen nicht mehr damit beschäftigt.

Zu deinen Fragen. Ich habe eine Qnap TS-453A und darauf habe ich es geschafft das die Installation durch läuft und ein Zugriff auf die Webseite war möglich.
Anschließend habe ich ein Testaccount angelegt und unter diesem ein Imap Konto erstellt.
Ich musste aber leider feststellen das die Container auf einem durch die Installation erstellen Virtual Switch läuft der kein Internetzugriff hat.
Ich habe leider keine Ahnung wie ich dem Switch den Zugriff auf das Internet erlauben kann.

Collabora und Rocket.Chat würde ich auch gern aktivieren aber ohne Internetzugriff macht das wohl wenig Sinn.

Zu der Frage der Performance. Die Webseite nach der Installation reagiert sehr schnell und fühlt sich sehr gut an.
Die Last auf der Qnap stieg kaum an wenn ich mit der Groupware gearbeitet habe.
Sobald ich weiß wie ich dem Container Internetzugriff erlauben kann, werde ich auch weiter machen.

Hallo, ich habe mich einmal versucht in das Thema docker-compose einzulesen.
Die Qnap hat die Docker Version 17.09.1 installiert.
Somit sollte Docker-compose in der Version 3.4 verstanden werden.
Damit der Container egroupware auch Internet Zugang bekommt gibt es für das yml File Optionen wie
networks:
network:
etc.
Leider interessiert es derzeit meine Container nicht und der Befehl docker-compose startet die Container immer mit den gleichen IP Adressen auf dem erzeugten Virtuellen Adapter.

Wenn jemand eine Idee bzw. ein Beispiel hat wie es Funktioniert, ich probiere es gerne aus.

1 month later

Hallo, ich wollte mich kurz melden das ich es endlich geschafft habe Egroupware auf der Qnap zum laufen zu bringen.
Eigentlich war es mehr Zufall da ich ein Problem mit OpenVpn hatte und deshalb ein Ticket bei Qnap aufgemacht habe.
Der Support wollte das ich ein Reset an der Qnap ausführe. Heißt 4 Sekunden lang den Reset Knopf an der Qnap drücken.
Dabei wird das Admin Kennwort und die Netzwerkeinstellungen zurück gesetzt, alle Daten bleiben dabei erhalten.

Nach dem Reset und löschen aller Docker Container habe ich dann im egroupware Verzeichnis
docker-compose up -d
ausgeführt.
Anschließend hatte Egroupware auch Zugriff aufs Internet und ich kann damit meine Emails lesen.
Keine Ahnung was da passiert ist, aber nun läuft es.