Beiträge von noahbeeri

    Das ist imho nicht nötig, da auch die Node.js App mit Benutzeranmeldung mit dem SMTP Server auf der gleichen Kiste kommunizieren müsste. Ob Du da nun die Zugangsdaten für einen anderen Server angibst oder für einen lokalen Container, ist erst mal wurst.


    Ein Vorteil von Kompartimentierung ist, dass Du Dir nicht beides zerschießt, wenn Du ein Problem mit einem hast. Es geht definitiv, dass man Mailserver und Node.js auf einen Server packen kann, allerdings braucht man dafür schon einiges an Erfahrung im Umgang mit Docker. Und diese fehlt Dir anscheinend bisher. Daher wäre es für beide Anwendungen erst einmal einfacher, diese separat auf unterschiedlichen VServern aufzubauen. Ein Vorteil dieser Herangehensweise auch noch: sollte eine der beiden Anwendungen schneller wachsen als die andere, kannst Du einen der beiden Server skalieren.

    Hier soll natürlich nicht mail.example.com stehen, sonder mail.meinedomain.de . Allerdings sind die beiden Einträge +mx +a:mail.meinedomain.de in diesem Fall ohnehin redundant.

    Okay, bin überzeugt, dann mache ich es langfristig auf getrennte Server. Wie gesagt kann der Mail-Server erstmal weggelassen werden.

    Dennoch habe ich es bisher noch nicht geschafft, die Node-App erreichbar zu machen.

    Was wäre nun der einfachste Weg, diese samt SSL erreichbar zu machen? Rausfinden, warum es mit NPM nicht läuft, oder das ganze nochmal umwerfen?

    Erstmal vorweg, langfristig sollte die Node.js-App auch in der Lage sein, Mails zu senden. Hab ich zwar in PHP auf normalen Webservern schon oft genug gemacht, aber wie genau es in Node funktioniert, habe ich mir tatsächlich noch nicht angeschaut. Das wird erst später relevant. Wäre aber auch gut, wenn man über die gleiche Domain manuell Mails verschicken kann. Daher bin ich davon ausgegangen, dass es Sinn macht, den Mailserver auf dem gleichen Server zu haben.

    Währe zwar nett, während der Entwicklung den Mailserver direkt parat zu haben, wichtiger wäre aber erstmal die Node-App. Wenn es für die Node-App irrelevant wäre, auf welchem Server der Mailserver läuft, kann man das auch noch trenne. Aber gerade während der Entwicklung wäre es nützlich, alles beisammen zu haben.


    Bevor ich versucht habe, das über NPM zu machen, war die App schonmal über die Domain erreichbar. Zumindest teilweise. Die Index.html konnte man aufrufen, aber keine statischen Assets, da gab es einen Fehler aufgrund von fehlendem SSL. Sowas war mir auch neu, aber ich dachte mir, bevor ich jetzt versuche, einen Workaround zu suchen, mach ich einfach SSL drauf, dann weiß ich auch gleich, wie das geht. Hier hab ich mich vom CCP etwas in die Irre führen lassen, da unter "Kostenloses SSL" angezeigt wurde "Ihre Domain erfüllt die Anforderungen nicht", dachte ich, ich brauche ein anderes Zertifikat. Und deshalb habe ich jetzt ein RapidSSL Zertifikat. Sowas nennt man glaube ich im Fachjargon einen "Anfängerfehler". Waren nur ein paar Euro, aber da ich das Zertifikat nun schon habe, kann ich es ja auch verwenden. Ich muss es ja nicht verlängern und kann dann später auf Let's Encrypt umsteigen.


    Wenn ich mit docker inspect das Netzwerk anschaue, sehe ich meinen Container dort aufgelistet. Mailcow zwar nicht, aber das können wir wie gesagt erstmal zurückstellen.


    Das ist der Output:



    DNS sieht wie folgt aus für die Domain:

    Host Type MX Destination Gültig
    * A [IPv4 des Servers] yes
    @ A [IPv4 des Servers] yes
    @ MX 10 mail.meinedomain.de yes
    @ TXT v=spf1 +a +mx +a:mail.example.com -all yes
    dkim._domainkey TXT v=DKIM1;k=rsa;t=s;s=email;p=[...] yes
    ftp A [IPv4 des Servers] yes
    mail [IPv4 des Servers] yes
    www CNAME @ yes
    _dmarc TXT v=DMARC1; p=none yes


    Bei genauerem Hinsehen wundert mich gerade der Eintrag mit mail.example.com. War das ein automatisch generierter Platzhalter oder wo kommt der her? Muss ich daran etwas anpassen oder ihn entfernen, und sieht der Rest in Ordnung aus?


    Ich kann mich nicht genug für die kontinuierliche Unterstützung bedanken, aber trotzdem nochmal vielen Dank für die Hilfe bisher.

    tom434  TBT

    tom434 Vielen Dank, ich habe versucht die Schritte zu befolgen. Ich wollte zunächst einmal testen, ob es ohne SSL grundsätzlich funktioniert, ich habe also meindedomain.de als Domain eingestellt, vorerst mal http ausgewählt, als hostname meine-node-docker-app-1 (wie der container laut docker ps heißt), und eben Port 8000 (die App gibt beim Starten den Port aus und es ist in der Tat 8000). Jedoch gibt es im Frontend nur einen 502 Bad Gateway Fehler.

    Wie kann ich herausfinden wo es hakt?

    Die zweite Frage betrifft das SSL-Zertifikat. Wie bereits gesagt haben wir bereits ein RapidSSL-Zertifikat, falls möglich würde ich das gerne verwenden. Ich habe auch in NPM die Option gefunden, ein "Custom" Zertifikat auszuwählen, mir ist aber nicht ganz klar, welche Dateien ich hier laden muss. Von Netcup habe ich nach wie vor CSR, Zertifikat und Key. In NPM werden Zertifikat, Key (soweit so klar) und ein Intermediate Certificate gefordert. Ist damit der CSR gemeint oder ist das etwas anderes?


    Nochmals vielen Dank für deine Unterstützung.

    tom434 vielen Dank für die Beschreibung und auch Danke an Loxley und TBT für die Ergänzungen.

    Ich habe jetzt den NPM installiert und kann die GUI nutzen. Zudem habe ich ein Docker-Network erstellt und das für beide Anwendungen in der docker-compose.yml hinzugefügt.


    Habe ich das richtig verstanden, dass ich die Port-Bindings einfach aus der docker-compose.yml von Mailcow sowie meiner App entfernen muss?


    Ich bin mir auch nicht ganz sicher, was ich bei NPM jetzt eintragen muss. Bei Domain Names vermutlich meinedomain.de bzw. dann mail.meinedomain.de, als Scheme vermutlich HTTPS, da das ja mein Ziel ist, was ich bei Forward Hostname / IP und Forward Port eintragen muss, ist mir nicht ganz klar.

    Meine Node.js-App läuft standardmäßig auf Port 8000, geb ich dann den an? Und bei Mailcow dann einfach 80?

    Hallo,


    Ich bin noch ziemlich unerfahren, was sysadmin-Themen angeht und bräuchte noch etwas Unterstützung.


    Mein Ziel wäre folgendes:

    • Mailcow soll über mail.meinedomain.de erreichbar sein.
    • Mein Node.js-Server soll über meinedomain.de erreichbar sein.
    • meinedomain.de soll mit HTTPS gesichert sein, für mail.meinedomain.de ist es erstmal nicht notwendig.

    Stand der Dinge ist:

    Mailcow läuft via Docker auf dem Server und ist über meinedomain.de erreichbar. Der Node.js-Server liegt theoretisch auch als Image bereit, kann aber aktuell nicht gleichzeitig mit Mailcow laufen, da beide auf Port 80 wollen.

    Ich habe ein RapidSSL DV Zertifikat, davon kann ich den CSR, das Zertifikat und den Key im Controlpanel bei Netcup abrufen. In den Tutorials, wie ich diese in Node.js einbinde wird jedoch davon ausgegangen, dass ich ein CA-Bundle habe, mir ist aber nicht ganz klar, was das ist, bzw. wie ich das bekommen/erstellen kann.


    Die erste Frage ist daher, wie ich das mit Hostname, Ports und Mailcow regeln kann, dass Mailcow unter mail.meinedomain.de erreichbar ist und meinedomain.de bzw. Port 80 frei ist für den Node.js-Server.

    Die zweite Frage wäre, wie das mit dem CA-Bundle funktioniert.


    Vielen Dank im Voraus für alle Hinweise, Tipps und weiterführende Infos!

    Ersetze also mal in der Zeile

    Code
    if docker compose version --short | grep "^2." > /dev/null 2>&1; then

    das

    Code
    grep "^2."

    durch

    Code
    grep "^[v]\?2."

    Dann deckst du sicherheitshalber beides ab.

    Tatsächlich, jetzt funktioniert es! Aber sehr verwunderlich, dass sowas passiert.

    Auf jeden Fall kann ich die Einrichtung jetzt fortsetzen, besten Dank!

    Wie hast du docker-compose denn installiert? So wie in dem Tutorial beschrieben? Bleibt die Fehlermeldung die gleiche? Was genau führst du denn aus? Bei welchem Schritt kommt diese Fehlermeldung?

    Mit apt-get hat es nicht funktioniert, daher habe ich es entsprechend dieser Anleitung gemacht:

    https://docs.docker.com/compose/install/other/


    Der Fehler kommt bei Schritt 3 ./generate_config.sh


    Ursprünglich hatte ich meines Verständnisses nach das plugin als mit dem docker compose command. Jetzt habe ich zusätzlich die standalone mit docker-compose insttaliert. Das Skript scheint aber beides nicht zu finden.

    Achtung! docker compose != docker-compose


    Du brauchst das extra docker-compose binary (Entweder über dein OS installieren, z.B. apt install docker-compose oder über pip (pip install docker-compose). Die haben auch ganz unterschiedliche Versionen. Wenn man nicht viel mit Docker macht, kann das sehr verwirrend sein am Anfang.

    Danke für den Hinweis, ich habe nun die docker-compose standalone installiert, bekomme mit docker-compose version die Version v2.12.2 angezeigt, nur klappt es leider immer noch nicht.

    Hallo alle zusammen,

    Ich versuche gerade entsprechend dieser Anleitung: https://community.netcup.com/d…-mailserver-with-mailcow/

    einen Mailserver auf meinem Rootserver einzurichten.

    Bei Schritt 3 bekomme ich jedes mal den Fehler:


    Cannot find Docker Compose with a Version Higher than 2.X.X.

    Please update/install it manually regarding to this doc site: https://mailcow.github.io/mail…docs/i_u_m/i_u_m_install/


    Wenn ich aber mit docker version die Docker Version prüfe, dann habe ich hier die 20.10.21, docker compose version ergibt die Version v2.2.3.

    Laut diesem Supportartikel von Mailcow:


    You need Docker (a version >= 20.10.2 is required) and Docker Compose (a version >= 2.0 is required).


    Sollte das ja eigentlich passen. Also warum erhalte ich den Fehler oben?


    Vielen Dank im Voraus für jegliche Unterstützung!