Einleitung
Cloudflare Tunnel ermöglicht die sichere Veröffentlichung Ihrer lokalen Dienste im Internet, ohne Ports öffnen oder HTTPS manuell verwalten zu müssen. In diesem Leitfaden lernen Sie, wie Sie einen Tunnel in Kombination mit Docker Compose einrichten, um den Zugriff auf gewünschte Container automatisch zu proxyn, als wären sie eine normale öffentliche Website.
Warum ist das notwendig?
- Kein Bedarf an einer statischen IP-Adresse.
- Keine Portweiterleitung auf dem Router oder in der Firewall.
- Cloudflare bietet HTTPS, WAF, DDoS- und Bot-Schutz.
- Alles kann in Containern ausgeführt werden – ohne zusätzliche Konfiguration von nginx, certbot usw.
Beispiel: Veröffentlichung einer Webanwendung über einen Tunnel
Angenommen, wir haben einen Container namens my-app, der auf http://my-app:3000 läuft. Wir möchten, dass er unter https://app.example.com erreichbar ist.
Schritt 1. Cloudflare-Vorbereitung
-
Registrieren Sie sich und fügen Sie Ihre Domain zu Cloudflare hinzu.
-
Installieren Sie
cloudflaredlokal und führen Sie die Autorisierung durch:
1cloudflared login
- Erstellen Sie einen Tunnel:
1 cloudflared tunnel create my-tunnel
- Weisen Sie eine DNS-Adresse zu:
1 cloudflared tunnel route dns my-tunnel app.example.com
- Kopieren Sie die
.json-Datei mit den Zugangsdaten (normalerweise unter~/.cloudflared/) in Ihr Projektverzeichnis, z. B../cloudflared.
Schritt 2. Projektstruktur
1projekt/
2├── docker-compose.yml
3├── cloudflared/
4│ ├── config.yml
5│ └── <hier Ihre Tunnel-ID>.json
6
Schritt 3. config.yml — Tunnelkonfiguration
1tunnel: my-tunnel
2credentials-file: /etc/cloudflared/<hier Ihre Tunnel-ID>.json
3
4ingress:
5 - hostname: app.example.com
6 service: http://my-app:3000
7 - service: http_status:404
Schritt 4. docker-compose.yml
1version: '3.8'
2
3services:
4 my-app:
5 image: your-image
6 container_name: my-app
7 expose:
8 - 3000
9 networks:
10 - app-network
11
12 cloudflared:
13 image: cloudflare/cloudflared:latest
14 container_name: cloudflared
15 restart: always
16 command: tunnel --config /etc/cloudflared/config.yml run
17 volumes:
18 - ./cloudflared:/etc/cloudflared
19 networks:
20 - app-network
21
22networks:
23 app-network:
24 driver: bridge
Schritt 5. Start
1docker compose up -d
Wenn Sie nun https://app.example.com aufrufen, gelangen Sie in Ihren my-app-Container, ohne Ports nach außen zu öffnen.
Fazit
Die Verwendung von Cloudflare Tunnel in Kombination mit Docker Compose ermöglicht:
- Vereinfachte Veröffentlichung von Diensten.
- Beseitigung der Notwendigkeit einer manuellen HTTPS-Konfiguration.
- Erhöhung der Sicherheit ohne komplizierte Konfigurationen mit
iptablesund nginx.
Alles funktioniert in Containern – transparent und ohne Magie. Eine hervorragende Möglichkeit, Verwaltungsbereiche, Dashboards oder APIs zu proxyn, die Sie nicht direkt exponieren möchten.