newt-cloudflare-tailscale-integration
Docker Newt Cloudflared TaileScale Integration
1.8K
This Docker image provides a secure access gateway that integrates Pangolin's Newt client, Cloudflare Tunnels, and Tailscale for flexible and secure access to your services. You can use any combination of these technologies simultaneously to create a secure, zero-trust access layer for your applications.
Before using this image, you'll need:
# Feature Flags
ENABLE_NEWT=true|false
ENABLE_CLOUDFLARE=true|false
ENABLE_TAILSCALE=true|false
# Newt Configuration (required if ENABLE_NEWT=true)
NEWT_ID=your-newt-id
NEWT_SECRET=your-newt-secret
PANGOLIN_ENDPOINT=https://example.com
# Cloudflare Configuration (required if ENABLE_CLOUDFLARE=true)
CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
# OR
CLOUDFLARE_TUNNEL_ID=your-tunnel-id
# Tailscale Configuration (required if ENABLE_TAILSCALE=true)
TAILSCALE_AUTH_KEY=tskey-auth-xxxxx-xxxxxxxxxxxxx
TAILSCALE_HOSTNAME=your-preferred-hostname
TARGET_PORTS=3000,8080,9000 # Ports to forward via Tailscale
TAILSCALE_ACCEPT_DNS=true|false
TAILSCALE_ACCEPT_ROUTES=true|false
TAILSCALE_ADVERTISE_EXIT_NODE=true|false
TAILSCALE_ADVERTISE_ROUTES=
TAILSCALE_SSH=true|false
This example shows how to connect to a Pangolin server using Newt to securely expose services.
services:
secure-proxy:
image: hhftechnology/newt-cloudflare-tailscale-integration:latest
environment:
- ENABLE_NEWT=true
- ENABLE_CLOUDFLARE=false
- ENABLE_TAILSCALE=false
- NEWT_ID=your-newt-id
- NEWT_SECRET=your-newt-secret
- PANGOLIN_ENDPOINT=https://your-pangolin-server.com
restart: unless-stopped
webapp:
image: nginx:alpine
expose:
- "80"
This example demonstrates using both Newt and Cloudflare Tunnel for redundant access methods.
services:
secure-proxy:
image: hhftechnology/newt-cloudflare-tailscale-integration:latest
environment:
- ENABLE_NEWT=true
- ENABLE_CLOUDFLARE=true
- ENABLE_TAILSCALE=false
- NEWT_ID=your-newt-id
- NEWT_SECRET=your-newt-secret
- PANGOLIN_ENDPOINT=https://your-pangolin-server.com
- CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
volumes:
- ./cloudflared:/etc/cloudflared
restart: unless-stopped
webapp:
image: nginx:alpine
expose:
- "80"
This example shows how to expose a simple web application through Cloudflare Tunnel.
services:
secure-proxy:
image: hhftechnology/newt-cloudflare-tailscale-integration:latest
environment:
- ENABLE_NEWT=false
- ENABLE_CLOUDFLARE=true
- ENABLE_TAILSCALE=false
- CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
volumes:
- ./cloudflared:/etc/cloudflared
restart: unless-stopped
webapp:
image: nginx:alpine
expose:
- "80"
This example demonstrates using Tailscale for private access to an internal dashboard.
version: '3'
services:
secure-proxy:
image: hhftechnology/newt-cloudflare-tailscale-integration:latest
cap_add:
- NET_ADMIN
environment:
- ENABLE_NEWT=false
- ENABLE_CLOUDFLARE=false
- ENABLE_TAILSCALE=true
- TAILSCALE_AUTH_KEY=tskey-auth-xxxxx-xxxxxxxxxxxxx
- TAILSCALE_HOSTNAME=internal-dashboard
- TARGET_PORTS=3000
volumes:
- ./data/tailscale:/var/lib/tailscale
devices:
- /dev/net/tun:/dev/net/tun
dashboard:
image: grafana/grafana
expose:
- "3000"
This example shows how to use all three technologies together for comprehensive access options.
services:
secure-proxy:
image: hhftechnology/newt-cloudflare-tailscale-integration:latest
cap_add:
- NET_ADMIN
environment:
- ENABLE_NEWT=true
- ENABLE_CLOUDFLARE=true
- ENABLE_TAILSCALE=true
- NEWT_ID=your-newt-id
- NEWT_SECRET=your-newt-secret
- PANGOLIN_ENDPOINT=https://your-pangolin-server.com
- CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
- TAILSCALE_AUTH_KEY=tskey-auth-xxxxx-xxxxxxxxxxxxx
- TAILSCALE_HOSTNAME=hybrid-app
- TARGET_PORTS=9000,5432
volumes:
- ./data/tailscale:/var/lib/tailscale
- ./data/cloudflared:/etc/cloudflared
devices:
- /dev/net/tun:/dev/net/tun
api:
image: node:alpine
expose:
- "80" # Public API via Cloudflare and Pangolin
management:
image: portainer/portainer-ce
expose:
- "9000" # Access via Tailscale and Pangolin
database:
image: postgres:alpine
expose:
- "5432" # Private database access via Tailscale and Pangolin
This example shows a microservices architecture with different access patterns for different services.
services:
secure-proxy:
image: hhftechnology/newt-cloudflare-tailscale-integration:latest
cap_add:
- NET_ADMIN
environment:
- ENABLE_NEWT=true
- ENABLE_CLOUDFLARE=true
- ENABLE_TAILSCALE=true
- NEWT_ID=your-newt-id
- NEWT_SECRET=your-newt-secret
- PANGOLIN_ENDPOINT=https://your-pangolin-server.com
- CLOUDFLARE_TUNNEL_TOKEN=your-tunnel-token
- TAILSCALE_AUTH_KEY=tskey-auth-xxxxx-xxxxxxxxxxxxx
- TAILSCALE_HOSTNAME=microservices
- TARGET_PORTS=8080,9090,3000,5432
volumes:
- ./data/tailscale:/var/lib/tailscale
- ./data/cloudflared:/etc/cloudflared
devices:
- /dev/net/tun:/dev/net/tun
gateway:
image: nginx:alpine
expose:
- "80" # Public API Gateway via all methods
auth-service:
image: node:alpine
expose:
- "8080" # Private auth service via Tailscale and Newt
metrics:
image: prom/prometheus
expose:
- "9090" # Private metrics via Tailscale and Newt
admin-dashboard:
image: grafana/grafana
expose:
- "3000" # Private dashboard via Tailscale and Newt
database:
image: postgres:alpine
expose:
- "5432" # Private database via Tailscale and Newt
When using multiple technologies together, the secure-proxy container acts as a gateway:
| Technology | Open Ports Required | Public Access | Private Access | Auth Method |
|---|---|---|---|---|
| Newt (Pangolin) | No | Yes (via Pangolin) | Yes | Pangolin Auth |
| Cloudflare Tunnel | No | Yes | Limited | Cloudflare Zero Trust |
| Tailscale | No | No | Yes | Tailscale Auth |
# Check Newt status
docker exec secure-proxy newt status
# Check Tailscale status
docker exec secure-proxy tailscale status
# Check Cloudflare tunnel status
docker exec secure-proxy cloudflared tunnel info
# View logs
docker logs secure-proxy
# Check iptables rules
docker exec secure-proxy iptables -t nat -L PREROUTING
# Verify network interfaces
docker exec secure-proxy ip addr show
For issues, feature requests, or contributions, please visit our GitHub repository: https://github.com/hhftechnology/newt-cloudflare-tailscale-integration
MIT License - See LICENSE file for details
Content type
Image
Digest
sha256:73c9d84c7…
Size
190.8 MB
Last updated
over 1 year ago
docker pull hhftechnology/newt-cloudflare-tailscale-integration:20250312