Mailcow zu Hause hosten und über FRP/VPS ins Internet bringen

Eine Schritt-für-Schritt-Anleitung, wie du auf deinem lokalen Homeserver (Debian 12) mit Mailcow einen Mailserver betreibst, obwohl keine Ports direkt weitergeleitet sind, und diesen über einen günstigen VPS (Debian 12) per FRP und WireGuard öffentlich erreichbar machst. Hinweis: Passe IP-Adressen, Domains und Passwörter an deine Umgebung an. Voraussetzungen Lokaler Mailserver VPS: öffentliche IPv4-Adresse Domain: z. B. example.com Root- oder sudo-Zugriff auf beide Server 1. Mailcow auf dem Homeserver installieren Docker & Compose installieren sudo apt update sudo apt install -y \ ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/debian/gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin Mailcow herunterladen & konfigurieren cd /opt sudo git clone https://github.com/mailcow/mailcow-dockerized.git mailcow cd mailcow sudo ./generate_config.sh MAILCOW_HOSTNAME=mail.example.com HTTP_PORT=80, HTTPS_PORT=443 (falls noch frei) DB-Passwort, Timezone etc. Mailcow starten sudo docker-compose pull sudo docker-compose up -d 2. FRP-Server auf dem VPS einrichten 🔒 FRP herunterladen wget https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_linux_amd64.tar.gz tar xzf frp_0.63.0_linux_amd64.tar.gz sudo mv frp_0.63.0_linux_amd64/frps /usr/local/bin/ sudo mkdir -p /etc/frp sudo touch /etc/frp/frps.toml rm frp_0.63.0_linux_amd64.tar.gz sudo rm -r frp_0.63.0_linux_amd64 Token generieren export FRP_TOKEN=$(openssl rand -hex 16) && echo $FRP_TOKEN /etc/frp/frps.toml bearbeiten bindPort = 7000 auth.method = "token" auth.token = "<FRP TOKEN>" Systemd-Service /etc/systemd/system/frps.service [Unit] Description=FRP Server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml Restart=always [Install] WantedBy=multi-user.target aktivieren & starten sudo systemctl daemon-reload sudo systemctl start frps sudo systemctl enable --now frps 3. FRP-Client auf dem Homeserver installieren FRP herunterladen & installieren wget https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_linux_amd64.tar.gz tar xzf frp_0.63.0_linux_amd64.tar.gz sudo mv frp_0.63.0_linux_amd64/frpc /usr/local/bin/ sudo mkdir -p /etc/frp sudo touch /etc/frp/frpc.toml rm frp_0.63.0_linux_amd64.tar.gz sudo rm -r frp_0.63.0_linux_amd64 /etc/frp/frpc.toml bearbeiten serverAddr = "<VPS PUBLIC IP>" serverPort = 7000 auth.method = "token" auth.token = "<VPS FRP TOKEN>" [[proxies]] name = "smtp" type = "tcp" localIP = "127.0.0.1" localPort = 25 remotePort = 25 [[proxies]] name = "smtps" type = "tcp" localIP = "127.0.0.1" localPort = 465 remotePort = 465 [[proxies]] name = "submission" type = "tcp" localIP = "127.0.0.1" localPort = 587 remotePort = 587 [[proxies]] name = "imap_ssl" type = "tcp" localIP = "127.0.0.1" localPort = 993 remotePort = 993 [[proxies]] name = "pop3_ssl" type = "tcp" localIP = "127.0.0.1" localPort = 995 remotePort = 995 Optional auch HTTP und HTTPS tunneln (nicht empfohlen) ...

Juli 28, 2025 · 4 Min. Lesezeit · 710 Wörter · Johann Judek