Beiträge von Bud

    Ich pack dir mal meine Doku dazu in den Spoiler, vielleicht hilft die dir ein wenig weiter:

    Spoiler anzeigen

    Certbot installieren

    sudo apt install certbot python3-certbot-apache -y

    Config-Datei für die zu zertifizierende Domain…

    sudo nano /etc/apache2/sites-available/example.com.conf

    …mit folgendem (Beispiel-) Inhalt…

    …erstellen.

    Alternativ zum Standard-Verzeichnis `/var/www/html/` kann auch `/var/www/example.com/` oder ähnliches als Verzeichnis verwendet werden.

    Den HTTPS Port 443 (falls nicht bereits geschehen) zur Firewall hinzufügen

    sudo ufw allow 443/tcp

    Ein Zertifikat für die Domain example.com anfordern:

    sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email letsencrypt@example.com -d example.com -d www.example.com

    Die example.com.conf sowie die zugehörige example.com-le-ssl.conf aktivieren:

    sudo a2ensite example.com.conf

    sudo a2ensite example.com-le-ssl.conf

    Eventuell die 000-default.conf deaktivieren:

    sudo a2dissite 000-default.conf

    Apache neu laden

    sudo systemctl reload apache2

    Oh, aktuell sogar ohne Einrichtungsgebühr

    Die musste ich noch nie zahlen... Hab extra für dich mal nachgeschaut:


    Den Spanier hab ich seit 11 / 23, und den Amerikaner seit 04 / 24 - jeweils ohne Einrichtungsgebühr

    Den Amerikaner werde ich aber zum Vertragsende hin kündigen, der bringt mir nichts...

    Den Teil kannst du an sich weggelassen, da die exposden Ports von einem Container innerhalb vom Docker Netzwerk erreichbar sind.

    Aber ich dachte das der erste Teil, also in dem Fall 8081 der "interne exposed" Port ist?

    Das brauchst du auch nicht, da jeder Container quasi ein eigener Server ist, daher auch seine eignen Ports hat bzw. diese nicht in Konflikt miteinander geraten.

    Aber nginx selbst fragt ja auch nach einem "Forwarded Port"

    Ich habe das Gefühl ich habe irgendwo einen Denkfehler, bzw Verständnisfehler.

    Welche IP hast du verwendet? Du musst die interne von Docker verwenden (nicht die deines Servers). Aber den Namen zu verwenden ist eh besser, da sich die interne IP auch mal ändern können (Das mit den Namen funktioniert, da Docker intern die Namen zu den Ips auflöst, innerhalb eines Netzwerkes)

    Keine IP, siehe Screenshot. Ich nutzte die Namen der Container, also z. B. portainer oder wikijs-one, und die sind alle in dem Netzwerk nginx_default

    Zusammenfassend habe ich gedacht:
    8081:80 bedeutet, dass der Container im Netzwerk nginx_default den Port 8081 hat, und so die Zuordnung durch nginx funktioniert. 80 ist für mich der Port, über welchen der Dienst publiziert wird, aber nginx packt ein LE-Zertifikat davor und publiziert über 443 inkl. Zuordnung der Subdomain.

    Wenn ich das richtig verstanden habe, läuft mein Docker so wie von TBT beschrieben. Incoming-Traffic wird komplett geblockt, außer für 22 und 4949 (Munin). 80 und 443 werden von Docker selbst weitergeleitet.

    Deswegen ja meine obige Frage. Wenn ein Dienst auf 8081:80 läuft, wird er von nginx hinter der FW weitergeleitet (http - service - 8081), mit einem Zertifikat versehen und nach außen über 443 geleitet.

    pasted-from-clipboard.png

    Oder habe ich das falsch verstanden? Über IP:PORT ist nichts erreichbar.
    Ich würde ja sogar gerne 80 aus der UFW entfernen, aber ich hatte mal irgendwo gelesen, dass dies trotzdem keine gute Idee ist. Ich glaube, LE braucht den, oder?

    Die Banken schaffen also bankrotte Kunden.

    So ist es. Ich bin meinen Eltern unendlich dankbar, dass sie mich dementsprechend erzogen haben. Außer für Immobilien habe ich noch nie einen Kredit aufgenommen, selbst meine Handyverträge sind immer monatlich kündbar. Auch Autos etc. werden bei mir nicht auf pump gekauft.

    Guten Morgen CK111 - vielen Dank für die Erklärung!

    Dadurch, dass meine Webinterface-Dienste alle im gleichen Netzwerk laufen, wäre die Konfiguration dann wie folgt – oder?

    Dienst 1: 8081:80
    Dienst 2: 8082:80
    Dienst 3: 8083:80
    Dienst 4: 8084:80
    Dienst 5: 8085:80

    Und dann jeweils subdomain:443 -> localhost:808X?

    Welche Relevanz hat der angegeben Port in diesem Fall? Ich habe ja http portainer 9000 angegeben, und jetzt erst gemerkt das portainer bei mir unter 8000 bzw 9443 läuft - warum funktioniert das trotzdem?

    Soll ich bei weiteren Containern dann auch einfach http container name 9000 angeben?

    Denn als ich soeben das gleiche für nginx versucht habe, hat es mit Port 81 nicht funktioniert.

    Edit: Funktioniert nicht, stimmt so nicht, das Zertifikat will nicht - weil Plesk dazwischen funkt?! Wo kommt das denn her?!

    pasted-from-clipboard.png

    Nice, das hat funktioniert!

    Durch den nginx Stack wurde das Netzwerk nginx_default hinzugefügt. Ich habe jetzt portainer ebenfalls dem nginx_default hinzugefügt, und den Proxy Host auf http - portainer - 9000 geändert, und es funkioniert. Sogar das LE-Zertifikat hat auf Anhieb funkioniert.

    Danke! Dann probiere ich mal weiter... Eine Frage aber noch:

    Also heißt das, ich muss (abgesehen von SSH, 80 und 443) keine Ports durch UFW öffnen?
    Denn nginx "fängt" alle konfigurierten Anfragen über 80 bzw 443 ab und leitet sie intern, also hinter UFW, weiter?

    Hier bin ich wieder ;)

    Ich habe einen Docker-Server aufgesetzt und versuche gerade eine Subdomain auf das Portainer UI zu bekommen. Hierfür habe ich als ersten (bzw. zweiten) Container nginx angelegt. UI auch erreichbar, Proxy Host konfiguriert, funktionieren will es trotzdem nicht. Die entsprechenden Ports sind aber in der ufw (Achtung: ufw-docker) angelegt. Die Domain portainer.example.com zeigt auf die IP des Servers.

    nginx

    Habe ich etwas übersehen?