Hallo,
dies ist mein erster Post in diesem Forum und ich bin noch relativer Neuling in Sachen Docker, Server, mailcow und Co.
Ich richte gerade meinen ersten Server (NetCup VPS 1000 G9) mittels Docker auf Basis von Dockerbuch https://github.com/docbuc/dockerbuch ein. Das Buch habe ich mir gekauft und eingängig studiert und damit dann das Docker Setup aufgebaut.
Ich möchte nun gerne auch mailcow hinter meinem Reverse Proxy installieren und habe dazu einige Verständnisfragen bzw. versuche ich meine bisheriges Reverse Proxy Setup in Einklang mit dem mailcow Setup zu bringen.
Ich möchte nicht einfach drauf los “basteln” und damit meine bisherige sehr gut laufende Umgebung in Gefahr bringen. Sorry, für die etwas längliche Herleitung :-)
Ich habe bisher folgendes Docker Images/Container am laufen:
- Reverse Proxy
- Nextcloud als
cloud.mydomain.de
- Eine kleine Webanwendung in einer separaten Subdomain
webapp.mydomain.de
- PhpMyAdmin als
phpmyadmin.mydomain.de
für die Konfiguration von MariaDB
Zertifikate
Die Let’s Encript Zertifikate habe ich über Docker (certbot) in die Reverse Proxy Umgebung, jeweils für die einzelnen drei Subdomains, installiert, mit:
sudo docker run -it --rm \
-v proxy_certs:/etc/letsencrypt \
-v proxy_certs-data:/data/letsencrypt \
certbot/certbot \
certonly \
--webroot --webroot-path=/data/letsencrypt \
-d mysubdomain.mydomain.de
Fragen: Wie läuft die Zertifikat Installation bei mailcow ab? Muss ich diese ebenfalls manuell in meine vorhandene Reverse Proxy Umgebung (wie oben) installieren oder macht mailcow dies selber?
Muss ich dann SKIP_LETS_ENCRYPT=y
in mailcow.conf
eintragen, wenn ich es manuell mache?
Konfiguration des Reverse Proxy
Hier die Docker compose des Reverse Proxy:
version: '3'
services:
proxy:
container_name: proxy
image: nginx:1.19
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./conf.d:/etc/nginx/conf.d
- certs:/etc/letsencrypt
- certs-data:/data/letsencrypt
networks:
- backend
- frontend
volumes:
certs:
certs-data:
networks:
backend:
external: true
frontend:
external: true
Für jede Subdomain (Docker Service) habe ich eigene ./conf.d/subdomain.conf
Dateien innerhalb der Reverse Proxy Umgebung erstellt, z. B. für phpmyadmin.mydomain.de:
# Proxy conf for subdomain phpmyadmin.mydomain.de, ./conf.d/phpmyadmin.conf
server {
listen 80;
server_name phpmyadmin.mydomain.de;
client_max_body_size 200M;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://phpmyadmin.frontend:56703;
proxy_read_timeout 90;
proxy_buffering off;
proxy_request_buffering off;
### Edit start
# Added to pass security check: https://securityheaders.com
add_header Permissions-Policy "interest-cohort=(),geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),full
screen=(self),payment=()";
add_header Strict-Transport-Security "max-age=15768000";
# add_header Content-Security-Policy "default-src 'none';";
### Edit end
}
location ^~ /.well-known {
allow all;
root /data/letsencrypt/;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/phpmyadmin.mydomain/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/phpmyadmin.mydomain.de/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf;
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}
Fragen: Muss ich auch so eine entsprechende ./conf.d/mail.conf
Datei für mailcow anlegen?
Leitet sich diese gemäß https://github.com/docbuc/dockerbuch (Nginx) ab?
Netzwerk
Ich habe zwei Netzwerkbereiche konfiguriert:
Frontend (172.22.0.x): Hier kommuniziert der Proxy mit den Nginx’s der jeweiligen Services (cloud, webpapp, phpmyadmin).
Backend (172.21.0.x): Hier kommunizieren die Nginx’s der jeweiligen Services (cloud, webpapp, phpmyadmin) mit den restlichen Containern (MariaDB, Nextcloud, …) der jeweiligen Services.
Hier habe ich überhaupt keine Sicht wie nun die Netzwerke in Richtung mailcow aufzusetzen sind.
Frage: Wie gehe hier vor?
DNS
Die DNS Einträge erfolgen gemäß den Angaben von DNS setup https://github.com/docbuc/dockerbuch.
Frage: Reicht zunächst die “minimal DNS configuration”?
Kann ich dann die DNS Installation von DKIM, SPF and DMARC nach der Erstinstallation nachholen?
Konfiguration mailcow
Mit ./generate_config.sh
konfiguriere ich ja das mailcow Setup.
Die initiale Frage irritiert mich ein wenig: Mail server hostname (FQDN) - this is not your mail domain, but your mail servers hostname:
Ich bin davon ausgegangen hier dann mail.mydomain.de
einzugeben habe.
Frage: ist dies korrekt so?
Vielen Dank für eine Unterstützung und Eure Geduld.
kkarsten62