15 / 17
Sep 2023

Hallo!

Wir evaluieren jetzt nach grob einem Jahr erneut die Einführung von egroupware. Soeben wollten wir eine Test-Installation auf dem Ziel-Server vornehmen.
Nach einigen Stunden Spielerei mit docker lande ich aber immer wieder bei der Aussage “bitte über linux package installieren”.

Die dokumentierten docker compose setups funktionieren leider nicht out of the box.
Vorwiegend, weil nicht dokumentiert ist, dass man den swoole source selbst ablegen muss und weil der collabora-key container ständig crashed wegen fehlender config. (die angeblich über das package am host erzeugt würde)

Wie ich in einem anderen Thread lesen konnte, wird ein quasi ein blanker Debian host vorausgesetzt, damit das irgendwie sauber läuft. Das ist zum heutigen Stand der Technik irgendwie sehr schade.

Wir haben ein ziemlich gut aufgesetztes System, wo schon diverse Dienste (Jira, gitlab, etc) in docker laufen, hinter einem Apache als reverse-proxy (SSL termination). Problemlos, seit Jahren.
Es wäre wirklich wirklich schön, wenn das auch mit egroupware möglich wäre. Also ein paar container ergänzen, ein paar volumes mounten und fertig. (Dann hat man z.B. die Möglichkeit den rocket.chat zu entfernen, wenn man den gar nicht braucht.)

Gibt es Pläne, das in naher Zukunft mal auf ein reines Docker-setup umzustellen und von diesen rpm-packages wegzukommen?

  • created

    Apr '23
  • last reply

    Sep '23
  • 16

    replies

  • 1.5k

    views

  • 4

    users

  • 4

    likes

  • 8

    links

Wir verwenden DEB bzw. RPM Pakete, weil die in ihren Post-Installations Scripten halt genau das machen können, was Dir in der reinen Docker(-Compose) Installation fehlt:

  • Dateien und Verzeichnisse anlegen
  • den Reverse-Proxy auf dem Host einrichten
  • notwendige Veränderungen der Umgebung bei Updates vornehmen

Deine Aussagen über Deine Probleme mit der Docker(-Compose) Installation bestätigen das!

Grundsätzlich behebe ich auch Fehler / Probleme in der Docker-Compose Installation oder beantworte Fragen dazu.

Die reine Docker-Compose Installation benötigt halt immer mehr Wissen, Vorkenntnisse und permanentes Nacharbeiten bei Updates verglichen mit der (genauso Docker-Compose verwendeten) Installation per Linux Paketmanager.

Ralf

Hallo Ralf,

danke für deine Rückmeldung.

Ich erlaube mir ein paar Anmerkungen zu machen:

Das wäre eigentlich der Job von Entry-Scripts im container.
Die fixe Definition der volumes mit den Pfaden im compose-file bedingt halt leider auch, dass ich alle Ordner vorher anlegen muss. Ist aber okay, wenn das dokumentiert ist.

Reverse-Proxy auf Host einrichten? Warum das? Ihr hab ja schon nginx als container.
(Wenn es ein reiner reverse-proxy sein soll, dann ist “traefik” wohl sogar das bessere image)

Wir verwenden auf unserem Server einen Apache als reverse-proxy nativ, weil es noch ein paar native Applikationen gibt, wo das so einfacher ist, aber für reine Docker-Apps ist das eigentlich sogar komplizierter.

Das bezieht sich auf das compose-file?
Das ist natürlich ein legitimer Punkt, aber im Grunde sollte in einem Docker-basierten Setup das so ziemlich die einzige Datei am Host sein, die ich angreifen muss.
Ihr könntet ja für alle, die den Aufwand scheuen hier ein paar Zeilen bei einem update zu ändern, weiterhin die Pakete anbieten. Aber für alle, denen das kein Problem ist (gibt sichtlich mehrere Personen, wie ich hier so im Forum lese, die gerne ohne die Pakete auskommen würden), die können das selbst anpassen.

Was bestätigt das?
Meine Aussage war, dass das compose-file setup leider nicht vollständig ist/dokumentiert ist. Daraus folgen die Probleme.
Ich steuere gerne Dokumentations-Verbesserungen bei, wenn ich den Soll-Zustand wüsste. z.B.
Wie sollen swoole sources bezogen werden? Github release zip-download und entpacken?

Definitiv. Aber “know your tools”, und als Server-Admin ist das eigentlich Pflicht.

Aber wie oben geschrieben, es gibt mittlerweile genug Leute die dieses Wissen haben und die Menge der Nacharbeiten halten sich sehr in Grenzen, wenn nicht gerade neue Services dazukommen.
Wir möchten unsere System unter Kontrolle haben und das wird halt ungleich schwerer, wenn ein Tool/Paket selbst anfängt compose-files zu erzeugen und damit z.B. die exposed ports festlegt.

Ich betrachte das so: Eine container-isierte Anwendung sollte mit einem compose-file einwandfrei laufen. Wenn jemand damit Probleme hat, ist ein Paket hilfreich.

Aktuell ist aber überall zu lesen, dass nur die Paket-Methode empfohlen wird. Bei der manuellen compose-variante steht zum Teil sogar “fehlende Features”. Das ist wirklich bitter.

Wenn es grundsätzlich erwünscht ist, können wir gerne behilflich sein, die Dinge mehr in die Container zu bekommen. Aber wir investieren natürlich keine Resourcen, wenn das ohnehin nicht das Ziel ist.

Sorry, ich habe keine Zeit den gesamten Post zu kommentieren :frowning:

Hier ein paar Antworten zu Fragen die Du angesprochen hast:

Die Swoole Sourcen sind Teil des der EGroupware Sourcen und werden daher vom Container mitgeliefert:

Da 3 Container die Sourcen benötigen, werden diese beim Starten des Containers in ein eigenen Volumen kopiert (und für 3-Party-Anwendungen) werden in dem Volumen auch noch auf dem Host unter /usr/share/egroupware installierte Anwendungen integriert.

Da die Namen und der Filesystem Pfad von Volumen vom Verzeichnis des docker-compose File abhängen, ist das im allg. Fall eines docker-compose Files halt nicht wirklich fest gelegt. Unser Linux Paket legt das docker-compose File unter /etc/egroupware-docker an und damit ergibt sich dann der folgende Pfad für die Swoole Sourcen:

Man könnte statt einem anonymen Volumen für die Sourcen auch ein Verzeichnis z.B. $PWD/sources verwenden, das dann natürlich wieder vorher angelegt werden muss, damit überhaupt irgendetwas funktioniert …

Wir verwenden einen Reverse Proxy auf dem Host, um diverse optionale Componenten wie Collabora, Rocket.Chat oder Guacamole zu integrieren und auch um die Installation eines Zertifikats so einfach wie möglich zu machen z.B. per Certbot.
Als Reverse Proxy unterstützen wir aktuell Nginx (per Default) oder Apache, falls schon auf dem Host installiert.

Traefik setze ich gerne ein z.B. in unserem Kubernetes basierenden Hosting, ist aber in der Konfiguration einfach nochmal komplexer, in Vergleich zu einem Nginx oder Apache, mit dem sich die meisten unserer Admins auskennen.

Ralf

@liayn,
tatsächlich bin ich daran auch schon gescheitert, habe aber nur sehr wenig Docker Erfahrung.

Ich hätte an einer Docker Only Installation auch Interessantes kann aber im Moment (noch) nichts dazu beitragen.
EGroupware ist mit seiner OSS Ausrichtung ein sehr interessantes Projekt wie ich finde.

Danke für die ausführliche Rückmeldung. Mein Text wurde etwas länger, ja. :wink:

Im aktuellen compose file wird diese volume aber nur am push-service verwendet und auch y´$PWD/sources... wird sonst nie befüllt. Dh die Ordner sind immer leer.

Was spricht dagegen den reverse proxy nicht einfach als container laufen zu lassen? letsencrypt geht ja zB mit jwilder/nginx-proxy easy und ich brauche gar nichts mehr am host.

Danke für den cross-link. Den Thread hab ich irgendwie nicht gefunden gestern.

Ich versuche es nochmal zu erklären:

  1. Es gibt ein Volumen "sources"das die EGroupware Sourcen enthält und von dem EGroupware Container befüllt und benutzt wird. Auch benutzt wird es von dem (internen) Nginx Container zum ausliefern der statischen Ressourcen.
  2. Diese “sources” Volumen hat einen Unterordner namens “swoolepush”, der als separates Volumen “sources-push” definiert werden muss und von vom “push” Container verwendet wird.

Ralf

Für fast alles gibt es mehrere (technische) Lösungen. Das heißt aber nicht, das es für uns sinnvoll ist jede mögliche zu unterstützen. Jede davon muss entwickelt und permanent gepflegt werden.

Dem EGroupware Benutzer ist es ziemlich egal ob der Proxy zwischen ihm und der EGroupware ein Nginx, Apache2 oder Traefik ist!

Ralf

Okay, danke ist verständlich und habe ich auch so verstanden.

Aber dann muss das “sources” volume zwangsweise auch ein bind-mount sein, sonst bleibt natürlich sources-push leer. (Wie bei mir passiert.)

Ich lege einen merge-request für das compose-file an.

6 months later

@liayn

darf ich fragen was aus dem Projekt geworden ist?
Setzt ihr EGroupware inzwischen ein und wie hast Du installiert (.deb oder Docker direkt)?

Hallo @itwo,

ja, wir setzen EGW nun ein. Wir haben aber unsere Pläne bezüglich Hosting nochmal geändert und haben das nicht, wie ursprünglich angedacht, in einen bestehenden Server integriert, sondern EGW hier einen eigenen vhost spendiert. (Hetzern CPX11 mit Debian 12)

Gute Wahl:

Wie ich das immer wieder ausführe:
Läuft auf so einem kleinen vHost für 5€.
Leider gibt es immer wieder Diskussionen, weil jemand EGw auf einem shared-Hosting für 79 Cent unter bringen will oder sich einen abbricht das auf einem NAS (Docker) ans laufen zu bringen. Die Diskussionen/Support kosten echt Zeit (und Geld). Alle.

Ich hatte da ja mal was zu geschrieben (dito bei IONOS):

Stefan

Nachtrag:
Da läuft auch noch ein Rocket.Chat und Collabora Online mit. Wenn nicht gerade viele Dokumente auf ein mal geöffnet werden.

Shared-Hosting ist hier tatsächlich etwas Fehl am Platz, da bin ich ganz bei dir.

Das in einer generellen Docker-Umgebung laufen zu lassen, egal ob jetzt NAS - sofern das docker-compose kann wie z.B. Synology DSM 7.2 - oder ein bestehender Server ist, sehe ich aber als sehr legitimen Wunsch an. Dazu müsste sich vielleicht das eine oder andere im compose-setup (bzw. init Prozess) noch vereinfachen, dann wirft das vielleicht weniger Fragen auf.

Absolut.
Dann aber bitte mit Ahnung was man da macht. Die NAS-Anwender haben aber meist wenig Expertise in Docker bzw das NAS-OS tickt anders/Docker wird dort abstrahiert.
Wir bauen ja auch sein geraumer Zeit die EGw-Container für Arm und PPC…

Stefan