10 KiB
DBIS Core - Cloudflare DNS Configuration
Overview
This document provides recommended Cloudflare DNS entries for the DBIS Core Banking System containers deployed on Proxmox VE.
Architecture
Internet → Cloudflare DNS → Cloudflare Tunnel → cloudflared LXC → DBIS Core Containers
Container Summary
| Service | VMID | IP Address | Ports | Public Access |
|---|---|---|---|---|
| Frontend Admin Console | 10130 | 192.168.11.130 | 80, 443 | ✅ Yes |
| API Primary | 10150 | 192.168.11.150 | 3000 | ✅ Yes (or via frontend) |
| API Secondary | 10151 | 192.168.11.151 | 3000 | ✅ Yes (HA) |
| PostgreSQL Primary | 10100 | 192.168.11.100 | 5432 | ❌ No (Internal only) |
| PostgreSQL Replica | 10101 | 192.168.11.101 | 5432 | ❌ No (Internal only) |
| Redis Cache | 10120 | 192.168.11.120 | 6379 | ❌ No (Internal only) |
Recommended DNS Entries
Primary Public Endpoints
1. Frontend Admin Console
Purpose: Main web interface for DBIS Core administration
DNS Record:
Type: CNAME
Name: dbis-admin
Target: <tunnel-id>.cfargotunnel.com
TTL: Auto
Proxy: 🟠 Proxied (orange cloud)
Full Domain: dbis-admin.d-bis.org
Tunnel Ingress Configuration:
Subdomain: dbis-admin
Domain: d-bis.org
Service: http://192.168.11.130:80
Alternative Names:
dbis.d-bis.org(main entry)admin.d-bis.org(alternative)dbis-console.d-bis.org(descriptive)
2. API Primary Endpoint
Purpose: Backend API for DBIS Core services
DNS Record:
Type: CNAME
Name: dbis-api
Target: <tunnel-id>.cfargotunnel.com
TTL: Auto
Proxy: 🟠 Proxied (orange cloud)
Full Domain: dbis-api.d-bis.org
Tunnel Ingress Configuration:
Subdomain: dbis-api
Domain: d-bis.org
Service: http://192.168.11.150:3000
Alternative Names:
api.d-bis.org(if no other API exists)dbis-api-primary.d-bis.org(descriptive)
3. API Secondary Endpoint (High Availability)
Purpose: Backup API endpoint for load balancing and failover
DNS Record:
Type: CNAME
Name: dbis-api-2
Target: <tunnel-id>.cfargotunnel.com
TTL: Auto
Proxy: 🟠 Proxied (orange cloud)
Full Domain: dbis-api-2.d-bis.org
Tunnel Ingress Configuration:
Subdomain: dbis-api-2
Domain: d-bis.org
Service: http://192.168.11.151:3000
Note: This can be used for load balancing or as a backup endpoint.
Internal Services (No Public DNS)
⚠️ DO NOT create public DNS entries for these services:
- PostgreSQL (VMID 10100, 10101) - Database should remain internal
- Redis (VMID 10120) - Cache should remain internal
These services should only be accessible from:
- Other containers on the same network (192.168.11.0/24)
- VPN connections
- Direct internal network access
Complete DNS Configuration Table
| Service | Type | Name | Target | Proxy | Purpose |
|---|---|---|---|---|---|
| Frontend | CNAME | dbis-admin |
<tunnel-id>.cfargotunnel.com |
🟠 Proxied | Admin console UI |
| Frontend (Alt) | CNAME | dbis |
<tunnel-id>.cfargotunnel.com |
🟠 Proxied | Main entry point |
| API Primary | CNAME | dbis-api |
<tunnel-id>.cfargotunnel.com |
🟠 Proxied | Backend API |
| API Secondary | CNAME | dbis-api-2 |
<tunnel-id>.cfargotunnel.com |
🟠 Proxied | HA backup API |
Tunnel Ingress Configuration
Complete Ingress Rules
In Cloudflare Zero Trust Dashboard → Networks → Tunnels → Configure:
ingress:
# Frontend Admin Console
- hostname: dbis-admin.d-bis.org
service: http://192.168.11.130:80
- hostname: dbis.d-bis.org
service: http://192.168.11.130:80
# API Primary
- hostname: dbis-api.d-bis.org
service: http://192.168.11.150:3000
# API Secondary (HA)
- hostname: dbis-api-2.d-bis.org
service: http://192.168.11.151:3000
# Catch-all (404)
- service: http_status:404
SSL/TLS Configuration
Automatic SSL
Cloudflare automatically provides SSL certificates when:
- ✅ DNS record has proxy enabled (orange cloud)
- ✅ Domain is managed by Cloudflare
- ✅ SSL/TLS mode is set to "Full" or "Full (strict)"
SSL/TLS Settings
Recommended: Full (strict)
- SSL/TLS encryption mode: Full (strict)
- Always Use HTTPS: On
- Minimum TLS Version: TLS 1.2
- Automatic HTTPS Rewrites: On
Security Considerations
1. Frontend Access
- ✅ Public access via Cloudflare
- ✅ Protected by Cloudflare DDoS protection
- ✅ SSL/TLS encryption
- ⚠️ Consider adding Cloudflare Access (Zero Trust) for additional authentication
2. API Access
- ✅ Public access via Cloudflare
- ✅ Protected by Cloudflare DDoS protection
- ✅ SSL/TLS encryption
- ⚠️ IMPORTANT: API should have authentication (JWT tokens, API keys)
- ⚠️ Consider rate limiting in Cloudflare
3. Database & Cache
- ❌ NEVER expose publicly
- ✅ Internal network access only
- ✅ Firewall rules should restrict access
Load Balancing (Optional)
If you want to use Cloudflare Load Balancing for the API endpoints:
1. Create Load Balancer Pool
Pool Name: dbis-api-pool
Origin Servers:
- dbis-api.d-bis.org (Primary)
- dbis-api-2.d-bis.org (Secondary)
Health Check: HTTP GET /health
2. Create Load Balancer
Name: dbis-api-lb
Hostname: api.d-bis.org
Pool: dbis-api-pool
TTL: 30 seconds
3. DNS Record
Type: CNAME
Name: api
Target: dbis-api-lb.d-bis.org
Proxy: 🟠 Proxied
Health Check Endpoints
API Health Check
Endpoint: https://dbis-api.d-bis.org/health
Expected Response:
{
"status": "healthy",
"database": "connected",
"redis": "connected",
"timestamp": "2025-12-26T01:00:00Z"
}
Frontend Health Check
Endpoint: https://dbis-admin.d-bis.org/health
Expected Response:
healthy
Testing DNS Configuration
1. Verify DNS Resolution
# Test DNS resolution
dig dbis-admin.d-bis.org
nslookup dbis-admin.d-bis.org
# Should resolve to Cloudflare IPs (if proxied)
2. Test HTTPS Access
# Test frontend
curl -I https://dbis-admin.d-bis.org
# Test API
curl -I https://dbis-api.d-bis.org/health
3. Test Tunnel Connection
# Check tunnel status in Cloudflare dashboard
# Zero Trust → Networks → Tunnels → Status should be "Healthy"
Step-by-Step Setup
Step 1: Create DNS Records in Cloudflare
-
Navigate to Cloudflare Dashboard
- Go to your domain (d-bis.org)
- Click DNS → Records
-
Add Frontend Record
- Click Add record
- Type: CNAME
- Name:
dbis-admin - Target:
<your-tunnel-id>.cfargotunnel.com - Proxy status: 🟠 Proxied
- Click Save
-
Add API Primary Record
- Click Add record
- Type: CNAME
- Name:
dbis-api - Target:
<your-tunnel-id>.cfargotunnel.com - Proxy status: 🟠 Proxied
- Click Save
-
Add API Secondary Record (Optional)
- Click Add record
- Type: CNAME
- Name:
dbis-api-2 - Target:
<your-tunnel-id>.cfargotunnel.com - Proxy status: 🟠 Proxied
- Click Save
Step 2: Configure Tunnel Ingress
-
Navigate to Cloudflare Zero Trust
- Go to Zero Trust → Networks → Tunnels
- Click on your tunnel
- Click Configure
-
Add Public Hostnames
- Click Public Hostname tab
- Add each hostname with corresponding service URL
- Save configuration
-
Verify Tunnel Status
- Tunnel should show "Healthy" status
- Check logs for any errors
Step 3: Verify Configuration
-
Test DNS Resolution
dig dbis-admin.d-bis.org -
Test HTTPS Access
curl -I https://dbis-admin.d-bis.org -
Test API Health
curl https://dbis-api.d-bis.org/health
Alternative Configurations
Option 1: Single Domain with Path Routing
If you prefer a single domain with path-based routing:
DNS Record:
Type: CNAME
Name: dbis
Target: <tunnel-id>.cfargotunnel.com
Proxy: 🟠 Proxied
Tunnel Ingress:
ingress:
- hostname: dbis.d-bis.org
path: /api
service: http://192.168.11.150:3000
- hostname: dbis.d-bis.org
service: http://192.168.11.130:80
Access:
- Frontend:
https://dbis.d-bis.org - API:
https://dbis.d-bis.org/api
Option 2: Subdomain with API Proxy
Frontend proxies API requests:
DNS Records:
dbis.d-bis.org→ Frontend (192.168.11.130:80)- No separate API DNS entry needed
Frontend Configuration:
- Nginx configured to proxy
/api/*tohttp://192.168.11.150:3000 - All requests go through frontend
Monitoring & Maintenance
DNS Health Checks
- Monitor DNS resolution:
dig dbis-admin.d-bis.org - Monitor SSL certificate status in Cloudflare dashboard
- Monitor tunnel health in Zero Trust dashboard
Performance Monitoring
- Use Cloudflare Analytics to monitor traffic
- Set up alerts for high error rates
- Monitor API response times
Security Monitoring
- Review Cloudflare Security Events
- Monitor for DDoS attacks
- Review access logs
Troubleshooting
DNS Not Resolving
- Verify DNS record type is CNAME
- Verify proxy is enabled (orange cloud)
- Check target is correct tunnel domain
- Wait for DNS propagation (up to 5 minutes)
Tunnel Not Connecting
- Check tunnel status in Cloudflare dashboard
- Verify tunnel token is correct
- Check cloudflared service logs
- Verify network connectivity
Container Not Accessible
- Verify container is running:
pct status 10130 - Test direct access:
curl http://192.168.11.130:80 - Check tunnel ingress configuration matches DNS
- Verify firewall allows traffic from cloudflared container
Quick Reference
DNS Records Summary
dbis-admin.d-bis.org → Frontend (192.168.11.130:80)
dbis-api.d-bis.org → API Primary (192.168.11.150:3000)
dbis-api-2.d-bis.org → API Secondary (192.168.11.151:3000)
Health Check URLs
https://dbis-admin.d-bis.org/health
https://dbis-api.d-bis.org/health
Internal Services (No DNS)
PostgreSQL: 192.168.11.100:5432 (internal only)
Redis: 192.168.11.120:6379 (internal only)
Last Updated: December 26, 2025 Status: Ready for Implementation