~/ziphub — zsh
ZipHub·~/catalog~/articles~/feed~/sellers~/hire
auth login
[article]category · new-cat

Cloudflare Tunnel mit Docker Compose: Sicherer Zugriff auf Container ohne offene Ports

@dignezzz · author2 min read2026-03-15free

TL;DR: So konfigurieren Sie Cloudflare Tunnel mit Docker Compose und erhalten sicheren HTTPS-Zugriff auf Ihre Container, ohne Ports weiterleiten zu müssen.

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

  1. Registrieren Sie sich und fügen Sie Ihre Domain zu Cloudflare hinzu.

  2. Installieren Sie cloudflared lokal und führen Sie die Autorisierung durch:

bash
1cloudflared login
  1. Erstellen Sie einen Tunnel:
bash
1    cloudflared tunnel create my-tunnel
  1. Weisen Sie eine DNS-Adresse zu:
bash
1    cloudflared tunnel route dns my-tunnel app.example.com
  1. Kopieren Sie die .json-Datei mit den Zugangsdaten (normalerweise unter ~/.cloudflared/) in Ihr Projektverzeichnis, z. B. ./cloudflared.

Schritt 2. Projektstruktur

yaml
1projekt/
2├── docker-compose.yml
3├── cloudflared/
4   ├── config.yml
5   └── <hier Ihre Tunnel-ID>.json
6

Schritt 3. config.yml — Tunnelkonfiguration

yaml
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

yaml
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

bash
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 iptables und 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.

~2 min read · scroll to continue ↓

## discussion

$ topics --entity=article0
sign in to start or join a discussion
No discussions yet — start one to break the ice.
↑↓ nav open⌘K palettei install? help