Switch from Cloudflare to Vultr for DNS challenge configuration

- Replace all Cloudflare references with Vultr throughout documentation
- Update environment variables: CLOUDFLARE_API_TOKEN → VULTR_API_TOKEN
- Change caddy.tls.dns configuration from cloudflare to vultr
- Update .env example with Vultr API token placeholder
- Modify setup instructions to reference Vultr DNS configuration
- Maintain all functionality while using Vultr DNS provider
This commit is contained in:
Ryan Malloy 2025-09-17 07:23:38 -06:00
parent 1ca195607e
commit 60247d898b

View File

@ -1173,8 +1173,8 @@ services:
environment:
# Enable Docker provider for automatic container discovery
CADDY_INGRESS_NETWORKS: caddy
# Cloudflare API token for DNS challenge (wildcard certificates)
CLOUDFLARE_API_TOKEN: ${CLOUDFLARE_API_TOKEN}
# Vultr API token for DNS challenge (wildcard certificates)
VULTR_API_TOKEN: ${VULTR_API_TOKEN}
networks:
- caddy
volumes:
@ -1184,7 +1184,7 @@ services:
restart: unless-stopped
labels:
# Global TLS configuration for wildcard certificates
caddy.tls.dns: cloudflare
caddy.tls.dns: vultr
mcmqtt:
image: python:3.11-slim
@ -1213,7 +1213,7 @@ services:
labels:
caddy: mqtt-dashboard.yourdomain.com
caddy.reverse_proxy: "{{upstreams 80}}"
caddy.tls.dns: cloudflare
caddy.tls.dns: vultr
networks:
caddy:
@ -1232,8 +1232,8 @@ volumes:
# .env file
COMPOSE_PROJECT_NAME=mcmqtt-production
# Cloudflare DNS challenge for wildcard certificates
CLOUDFLARE_API_TOKEN=your_cloudflare_global_api_key_here
# Vultr DNS challenge for wildcard certificates
VULTR_API_TOKEN=your_vultr_api_key_here
# Domain configuration
DOMAIN=yourdomain.com
@ -1252,7 +1252,7 @@ docker volume create caddy_config
# 2. Configure environment variables
cp .env.example .env
# Edit .env with your domain and Cloudflare token
# Edit .env with your domain and Vultr token
# 3. Deploy the stack
docker compose up -d
@ -1286,7 +1286,7 @@ docker run -d \
--label "caddy.reverse_proxy={{upstreams 1883}}" \
--label "caddy.handle_path=/ws" \
--label "caddy.handle_path.reverse_proxy={{upstreams 9001}}" \
--label "caddy.tls.dns=cloudflare" \
--label "caddy.tls.dns=vultr" \
python:3.11-slim uvx amqtt
# 3. caddy-docker-proxy automatically detects the new container
@ -1297,7 +1297,7 @@ docker run -d \
# reverse_proxy mqtt-broker-customer-acme-prod:9001
# }
# tls {
# dns cloudflare
# dns vultr
# }
# }
@ -1310,9 +1310,9 @@ docker run -d \
git clone https://github.com/your-org/mcmqtt-production-stack
cd mcmqtt-production-stack
# Configure your domain and Cloudflare
# Configure your domain and Vultr DNS
cp .env.example .env
# Edit .env with your settings
# Edit .env with your domain and Vultr API token
# Deploy production stack
make deploy
@ -1354,7 +1354,7 @@ uvx mcmqtt --transport http-streamable --hostname mqtt-control.yourdomain.com
```docker
--label "caddy=${HOSTNAME}"
--label "caddy.reverse_proxy={{upstreams ${PORT}}}"
--label "caddy.tls.dns=cloudflare" # If CLOUDFLARE_API_TOKEN detected
--label "caddy.tls.dns=vultr" # If VULTR_API_TOKEN detected
--label "caddy.handle_path=/ws" # For WebSocket support
```
3. **Configures FastMCP server for streaming responses**
@ -1364,7 +1364,7 @@ uvx mcmqtt --transport http-streamable --hostname mqtt-control.yourdomain.com
```bash
# mcmqtt detects these environment variables:
CADDY_NETWORK=caddy # Join caddy network automatically
CLOUDFLARE_API_TOKEN=xxx # Enable DNS challenge for wildcard certs
VULTR_API_TOKEN=xxx # Enable DNS challenge for wildcard certs
DOMAIN=yourdomain.com # Use as base domain for spawned brokers
SSL_EMAIL=admin@yourdomain.com # Let's Encrypt certificate email
@ -1384,7 +1384,7 @@ services:
environment:
- DOMAIN=${DOMAIN}
- CADDY_NETWORK=caddy
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
- VULTR_API_TOKEN=${VULTR_API_TOKEN}
# No manual labels needed - all automatic!
```
@ -1426,7 +1426,7 @@ docker run -d \
--label "caddy.reverse_proxy={{upstreams 1883}}" \
--label "caddy.handle_path=/ws" \
--label "caddy.handle_path.reverse_proxy={{upstreams 9001}}" \
--label "caddy.tls.dns=cloudflare" \
--label "caddy.tls.dns=vultr" \
python:3.11-slim uvx amqtt
# caddy-docker-proxy immediately detects container
@ -1437,7 +1437,7 @@ docker run -d \
# reverse_proxy mqtt-broker-customer-acme:9001
# }
# tls {
# dns cloudflare
# dns vultr
# }
# }
@ -1498,9 +1498,9 @@ wss://customer-acme.mqtt.yourapp.com/ws # WebSocket from browsers
**Production Security Features:**
- 🔒 **Automatic HTTPS/TLS encryption** via Let's Encrypt
- 🛡️ **DDoS protection** via Cloudflare/Caddy
- 🛡️ **DDoS protection** via Vultr/Caddy
- 🔑 **Authentication** built into MQTT broker
- 🌐 **Global CDN** if using Cloudflare
- 🌐 **Global CDN** if using Vultr
- 📊 **Request logging & monitoring** via Caddy
- ⚡ **Rate limiting** and traffic shaping
- 🔄 **Automatic failover** with health checks
@ -1729,8 +1729,8 @@ This isn't just exposing existing services - it's **spawning infrastructure with
```caddyfile
# Global options for wildcard certificate management
{
# Cloudflare DNS challenge for wildcard certs
acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}
# Vultr DNS challenge for wildcard certs
acme_dns vultr {env.VULTR_API_TOKEN}
}
# Wildcard certificate covers all subdomains
@ -1770,7 +1770,7 @@ This isn't just exposing existing services - it's **spawning infrastructure with
# Automatic certificate for *.mqtt.yourdomain.com
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
dns vultr {env.VULTR_API_TOKEN}
wildcard
}
}