1 / 36
Sep 2019

Hallo,

habe gesehen, das ich auf meiner QNAP TS-651 auch Docker installieren kann.

Würde dort gerne mal anfangen, egw als Test laufen zu lassen. Habe allerdings gesehen, das es dort verschieden egw Versionen gibt.
Gibt es da vielleicht eine Anleitung, was dort alles installiert werden sollte, damit ein funktionierendes System erstellt wird. Mein erster Versuch ging leider daneben.

Danke

Gruß
Jochen

Hallo Jochen,

mir ist keine Anleitung bezüglich Installation auf einem QNAP bekannt.

Du meinst auf DockerHub?
Natürlich sind da eine Menge EGw-Container von verschiedenen Leuten.
Das ist der “Offizielle” von uns:
https://hub.docker.com/r/egroupware/egroupware19
Installations-Informationen findest du ebenfalls dort.

Dann gibt es noch die von @AndreS:
https://hub.docker.com/r/sneaky/egroupware3
https://hub.docker.com/r/sneaky/egroupware-extended2
Da kann Andre eher noch etwas dazu sagen.

Wenn sich hier sonst niemand zu QNAP/Docker meldet, müsstest du das mal in einem QNAP-Forum ansprechen. Ich kenne niemand, der das auf einem QNAP betreibt.

Was ging daneben? Wo ist das Problem?

Gruß
Stefan

Hallo Stefan,

ich habe die Docker egroupware/egroupware einfach installiert (ohne etwas zu lesen).
Nach dem Start kamen nur Fehlermeldungen auf der Konsole.

Ich werde es aber nun nochmal versuchen, vorher aber mal die Beschreibung lesen.:grinning:

Wenn ich da nicht weiter komme, frage ich mal im QNAP-Forum.

Danke

Gruß
Jochen

Kannst du das bitte mit ein paar screenshots dokumentieren?

Was für Fehlermeldungen?

Du musst schon mehr beschreiben und dokumentieren. Sonst kann dir niemand, auch nicht im QNAP-Forum, helfen.

Gruß
Stefan

Hallo Stefan,

bin gerade dabei.
Folgende Meldung erscheint beim ersten Start der Docker.

Habe dann mal noch auf der QNAP MYSQL installiert und dem Benutzer “root” das Password “mysql” vergeben. Mit dem selben Ergebnis.

Gruß
Jochen

Noch vergessen,

die Container:

  • egroupware-nginx running Nginx as webserver (by default http only on port 8080)
  • egroupware-db latest MariaDB 10.4
  • egroupware-watchtower updating all above container automatically daily at 4am

finde ich im Dockerangebot auf der QNAP nicht.

Gruß
Jochen

Da hast du ja schon mal erkannt, dass da eine Datenbank gefragt ist. Die ist natürlich nicht in dem Docker-Image.
Die Info wo die DB ist und wie die Zugangsdaten lauten müssen nun irgendwie übergeben werden. Wie das funktioniert kann ich auch nicht sagen. Ich verwende unsere Paket-Installationsscripte.

Aber das Thema ist schon einmal klar.

Stefan

Hi Jochen,

EGroupware ist nicht ein einzelner Docker Container sondern mehrere.

Deswegen haben wir ein docker-compose.yaml Datei, das die notwendigen Container zusammen startet:

Ob die QNAP docker-compose.yaml Dateien versteht oder nur einzelne Container starten kann, kann ich Dir nicht sagen.

Ralf

Hallo Ralf,

Die Docker egw mit der QNAP-SQL funktionierte soweit.
DB wurde angelegt und gefüllt.
Jetzt fehlt wohl nur noch ein Webserver, da ich das Teil nicht erreichen konnte.

Da habe ich wohl noch ein wenig Arbeit.:grinning:
Vielleicht ziehe ich mir aber auch eine VM hoch, ist wohl bestimmt weniger Arbeit.:grinning:

Danke

Gruß
jochen

1 month later

Hallo, darf ich mich in diesen thread einklinken?

Ich habe ebenfalls eine Qnap und Egrouware installiert.
Es ist mein erstes Mal das ich mich mit Docker beschäftige,

Wo teile ich dem Container mit welche Datenbank er nutzen soll?
Wenn ich den Container starte sehe ich auf der Console das er sofort eine Datenbank erreichen möchte, kann aber keine Konfiguration vornehmen.
In der erweiterten Einstellungen kann ich nur Pfade und Geräte zuweisen.

Pfade macht Sinn, solltest Du Dein bisheriges /var/lib/egroupware Verzeichnis zuweisen.

Ich würde mal erwarten, dass Du auch Environment Variablen setzen kannst. Damit kannst Du EGroupware die Datenbank zuweisen.

Allerdings ist es alleine Damit nicht getan, da EGroupware aus zwei Containern besteht, sprich Du musst noch den Nginx / Webserver als zweiten Container starten und die beiden verlinken.

Einfacher wäre wenn Du unser docker-compose.yml File verwenden könntest:

Darin findest Du auch die Namen der Environment Variablen für die Datenbank.

Ralf

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”