- Organized 252 files across project - Root directory: 187 → 2 files (98.9% reduction) - Moved configuration guides to docs/04-configuration/ - Moved troubleshooting guides to docs/09-troubleshooting/ - Moved quick start guides to docs/01-getting-started/ - Moved reports to reports/ directory - Archived temporary files - Generated comprehensive reports and documentation - Created maintenance scripts and guides All files organized according to established standards.
4.5 KiB
4.5 KiB
Automated Setup via Cloudflare API
Complete automation of all manual steps using Cloudflare API from .env file.
Overview
This automated setup uses your Cloudflare API credentials from .env to:
- ✅ Create tunnels in Cloudflare
- ✅ Configure tunnel routes
- ✅ Create DNS records
- ✅ Create Cloudflare Access applications
- ✅ Save credentials automatically
Prerequisites
✅ .env file with Cloudflare API credentials:
CLOUDFLARE_API_TOKEN="your-api-token"
# OR
CLOUDFLARE_API_KEY="your-api-key"
CLOUDFLARE_EMAIL="your-email@example.com"
CLOUDFLARE_ACCOUNT_ID="your-account-id" # Optional, will be auto-detected
CLOUDFLARE_ZONE_ID="your-zone-id" # Optional, will be auto-detected
DOMAIN="d-bis.org"
Quick Start
Option 1: Complete Automated Setup (Recommended)
cd scripts/cloudflare-tunnels
./scripts/automate-cloudflare-setup.sh
./scripts/save-credentials-from-file.sh
./scripts/setup-multi-tunnel.sh --skip-credentials
Option 2: Step-by-Step
Step 1: Create Tunnels, DNS, and Access via API
./scripts/automate-cloudflare-setup.sh
This will:
- Create 3 tunnels:
tunnel-ml110,tunnel-r630-01,tunnel-r630-02 - Configure tunnel routes for each Proxmox host
- Create DNS CNAME records (proxied)
- Create Cloudflare Access applications
- Save credentials to
tunnel-credentials.json
Step 2: Save Credentials to VMID 102
./scripts/save-credentials-from-file.sh
This automatically loads credentials from tunnel-credentials.json and saves them to VMID 102.
Step 3: Install Systemd Services
./scripts/setup-multi-tunnel.sh --skip-credentials
Step 4: Start Services
# From Proxmox host or via SSH
ssh root@192.168.11.10 "pct exec 102 -- systemctl start cloudflared-ml110 cloudflared-r630-01 cloudflared-r630-02"
ssh root@192.168.11.10 "pct exec 102 -- systemctl enable cloudflared-*"
Step 5: Verify
./scripts/check-tunnel-health.sh
What Gets Created
Tunnels
tunnel-ml110→ ml110-01.d-bis.org → 192.168.11.10:8006tunnel-r630-01→ r630-01.d-bis.org → 192.168.11.11:8006tunnel-r630-02→ r630-02.d-bis.org → 192.168.11.12:8006
DNS Records
ml110-01.d-bis.org→ CNAME →<tunnel-id>.cfargotunnel.com(Proxied)r630-01.d-bis.org→ CNAME →<tunnel-id>.cfargotunnel.com(Proxied)r630-02.d-bis.org→ CNAME →<tunnel-id>.cfargotunnel.com(Proxied)
Cloudflare Access Applications
Proxmox ml110→ ml110-01.d-bis.orgProxmox r630-01→ r630-01.d-bis.orgProxmox r630-02→ r630-02.d-bis.org
Each with basic access policy requiring email authentication.
Manual Steps (If Needed)
If automation fails, you can manually:
Save Individual Tunnel Credentials
./scripts/save-tunnel-credentials.sh ml110 <tunnel-id> <tunnel-token>
./scripts/save-tunnel-credentials.sh r630-01 <tunnel-id> <tunnel-token>
./scripts/save-tunnel-credentials.sh r630-02 <tunnel-id> <tunnel-token>
Update Access Policies
Access applications are created with basic policies. To enhance:
- Go to Cloudflare Zero Trust → Access → Applications
- Edit each application
- Add MFA requirement
- Configure additional policies
Troubleshooting
API Authentication Fails
# Test API credentials
cd /home/intlc/projects/proxmox
./scripts/test-cloudflare-api.sh
Tunnel Creation Fails
- Check API token has
Account:Cloudflare Tunnel:Editpermission - Verify account ID is correct
- Check Zero Trust is enabled
DNS Records Not Created
- Check API token has
Zone:DNS:Editpermission - Verify zone ID is correct
- Check domain is managed by Cloudflare
Access Applications Not Created
- Check API token has
Account:Access:Editpermission - Verify Zero Trust is enabled
- Check account has Access plan
Files Created
tunnel-credentials.json- Contains all tunnel IDs and tokens (keep secure!)
Security Notes
⚠️ Important:
tunnel-credentials.jsoncontains sensitive tokens- File is created with
chmod 600(owner read/write only) - Do not commit to version control
- Consider deleting after credentials are saved to VMID 102
Next Steps
After automated setup:
- ✅ Verify all services are running
- ✅ Test access to each Proxmox host
- ✅ Configure enhanced Access policies (MFA, etc.)
- ✅ Set up monitoring:
./scripts/monitor-tunnels.sh --daemon - ✅ Configure alerting: Edit
monitoring/alerting.conf
All manual steps are now automated! 🎉