Infrastructure Recommendation — March 2026

Your Services.
Zero Open Ports.
Always On.

How Cloudflare Tunnel eliminates the Hostinger firewall problem and replaces your unstable Caddy single-point-of-failure — for $0/month.

$0
Monthly cost
0
Open ports needed
10+
Services isolated
99.9%
CF edge uptime SLA
Scroll to explore

Two compounding failures
you're dealing with right now

Your VPS has a firewall that can't be reliably controlled, sitting in front of a reverse proxy that takes everything down when it hiccups. Let's fix both.

🔒

Hostinger Firewall — Unreliable at the Network Layer

Hostinger's managed firewall sits upstream of your VPS — before UFW, before iptables, before Docker. Even when you "deactivate" a firewall group in hPanel, the ACL remains applied at Hostinger's network edge.

  • Ports show FILTERED on nmap — OS never sees the packets
  • Deactivating firewall groups doesn't release network ACL
  • No reliable way to open custom ports (8443, 9082–9099)
  • Hostinger support required to flush from their side
  • A known, recurring issue across Hostinger VPS customers

Caddy as a Single Point of Failure

All 10+ services run through one Caddy container, one config file, one process. When Caddy misbehaves — and it does — everything goes dark simultaneously.

  • Course Generator, LMS, Chat, Dashboard all share one proxy
  • One bad Caddyfile line = total outage for all services
  • Reload sometimes doesn't apply changes fully
  • Docker bridge network `localhost` confusion causes silent failures
  • No per-service isolation — one crash, everything crashes
🎯

What You Actually Need

  • Each service has its own URL and failure domain
  • One service going down doesn't affect others
  • No open ports — bypass the firewall problem entirely
  • SSL/TLS handled automatically, per-service
  • Works on your existing VPS with zero migration cost
  • Can be deployed in under 2 hours
🚫

What Is Not Acceptable

  • Relying on Hostinger support to open ports
  • Caddy config files as a shared blast radius
  • Clients unable to reach services because a firewall group wasn't deleted
  • Spending hours debugging Docker bridge IP routing
  • Paid services going down when a free tool hiccups

The New Architecture

Cloudflare Tunnel creates an outbound-only encrypted connection from your VPS to Cloudflare's global edge. No inbound ports. No firewall rules. No Hostinger dependency.

🌍 Public Internet
🟠
Cloudflare Edge
Global CDN + SSL
⬇ Outbound-only encrypted tunnel (WireGuard) — Zero open ports on your VPS ⬇
🔌
cloudflared daemon
VPS (31.97.x.x)

⬇ Routes to localhost services — each fully isolated ⬇
🎓
LMS
:9082
🌐
Website
:9085
💬
Chat
:9086
📊
Dashboard
:9080
🔐
Vaultwarden
:9099
🤖
Open WebUI
:9096
📄
Paperless
:9097
📱
Evolution API
:9098
🏗️
Course Builder
:3030
💰
Budget Extractor
:9087

✅ Each service = independent route. One down = only that service affected. Everything else stays running.

Before: Single Point of Failure

Internet → Hostinger Firewall (blocks)
→ Port 443 → Caddy (one container)
→ All services through shared config
→ Caddy crashes = Everything offline

After: Isolated Resilient Services

Internet → Cloudflare Edge (always up)
→ Outbound tunnel → cloudflared (lightweight)
→ Direct to each service independently
→ One service down = Others unaffected

Every service gets its own
dedicated URL and failure domain

Each service routes independently. Paperless going down doesn't affect your LMS. Evolution API restarting doesn't touch the Course Builder. Full isolation, per service.

🌐

Website

adventureaiagency.com

Public-facing marketing site with lead capture form → Telegram routing.

Live Today
🎓

White Label LMS

lms.adventureaiagency.com

Client-facing learning management system. Currently on port 9082 — blocked by Hostinger.

🏗️

Course Generator

courses.adventureaiagency.com

AI course builder. Dual instance (port 3030 primary, 9088 legacy). Caddy routing currently fragile.

💬

Chat Interface

chat.adventureaiagency.com

Client-facing chat powered by agent fleet. On port 9086.

🤖

Open WebUI

ai.adventureaiagency.com

Internal AI model access for the agency team. Port 9096 — blocked by Hostinger firewall.

Internal Tool
🔐

Vaultwarden

vault.adventureaiagency.com

Self-hosted password manager for the team. Port 9099. Needs Cloudflare Zero Trust access gate.

Secure Internal
📄

Paperless-ngx

docs.adventureaiagency.com

Document management for agency operations. Port 9097 — currently inaccessible externally.

Internal Tool
📱

Evolution API

api.adventureaiagency.com

WhatsApp/messaging automation API. Port 9098. Powers agent communication workflows.

📊

Dashboard (Q Command Room)

dash.adventureaiagency.com

Operations dashboard for monitoring agents, health, and KPIs. Port 9080.

Internal Tool
💰

Budget Extractor

budget.adventureaiagency.com

Financial document parsing tool. Port 9087. Sensitive — benefits from CF Zero Trust gate.

Secure Internal

Compared to every other option
you're considering

Here's how Cloudflare Tunnel stacks up against the alternatives we evaluated for your specific situation.

Criteria ☁️ Cloudflare Tunnel Traefik + open ports Nginx Proxy Manager Pangolin (self-hosted) Tailscale Funnel
Bypasses Hostinger Firewall ✓ Yes — outbound only ✗ Still needs open ports ✗ Still needs open ports ✓ Yes ✓ Yes
Per-service isolation ✓ Native per route ✓ Yes (labels) ⚡ Partial (shared proxy) ✓ Yes ⚡ One endpoint/machine
Monthly cost ✓ $0 (free tier) ✓ $0 ✓ $0 ~$5–10/mo extra VPS Already paying
SSL/TLS automation ✓ Fully managed by CF ⚡ Let's Encrypt, manual ⚡ Let's Encrypt, GUI ⚡ Let's Encrypt ✓ Managed
DDoS protection ✓ CF global network ✗ No ✗ No ✗ No ⚡ Partial
Deploy time ✓ <2 hours ⚡ 4–8 hours ⚡ 2–4 hours 1–2 days + extra VPS ⚡ 2–4 hours
Zero Trust access control ✓ Built-in (free tier) ✗ Requires extra setup ✗ Requires extra setup ✓ Built-in ⚡ Tailscale ACLs
Global CDN / performance ✓ 300+ PoPs globally ✗ VPS-only ✗ VPS-only ✗ Your VPS only ✗ VPS-only
Operational complexity ✓ Low — one daemon ⚡ Medium ⚡ Low-Medium High — extra infra ⚡ Medium
Data control ⚡ CF sees traffic (TOS applies) ✓ Full control ✓ Full control ✓ Full control ⚡ Tailscale sees metadata

⚡ Partial  |  ✓ Strong  |  ✗ Weak/Missing   —   Assessment based on Adventure AI Agency's current infrastructure and requirements.

Why "outbound-only" is the key insight

Traditional proxies wait for inbound connections — which means you need open ports, firewall rules, and all the headaches that come with them. Cloudflare Tunnel inverts the model.

🔌

cloudflared connects out

A lightweight daemon on your VPS makes an outbound connection to Cloudflare's edge using WireGuard. Your VPS initiates it — Hostinger's firewall has nothing to block.

🗺️

DNS routes to CF edge

Your domain's DNS points to Cloudflare. When a user visits vault.adventureaiagency.com, Cloudflare resolves it and routes the request through the established tunnel.

🎯

CF routes to the right service

Each hostname maps to a specific localhost port on your VPS. vault → :9099, lms → :9082, chat → :9086. Each route is independent.

🛡️

SSL + DDoS handled at the edge

Cloudflare terminates SSL, absorbs DDoS, and caches static assets — all before traffic ever reaches your VPS. Your server only sees clean, authenticated requests.

What this costs
for Adventure AI Agency

Cloudflare Tunnel is included in the free plan. For your current use case — routing web services and tools — the free tier covers everything you need today.

Free
$0/mo

Everything you need to replace Caddy and bypass the firewall problem. No trial period, no credit card.

  • Unlimited tunnel routes (per hostname)
  • Unlimited bandwidth for web services
  • Automatic SSL/TLS per hostname
  • DDoS protection on all routes
  • Global CDN (300+ PoPs)
  • Per-service independent routing
  • 1 Zero Trust access policy (free)
  • Works with adventureaiagency.com today
Pro ($20/mo) — Future
$20/mo

Only if you need advanced access control for client-facing services or WAF rules.

  • Everything in Free
  • Advanced WAF (Web Application Firewall)
  • Unlimited Zero Trust policies
  • Custom page rules
  • Image optimization
  • Priority support
  • Advanced analytics per service
  • Recommended when first client hits the LMS
💡 Bottom line: The domain you already own (adventureaiagency.com) + Cloudflare free account + one CLI install = your entire infrastructure routing problem solved for $0/month.

From broken to stable
in three phases

Estimated total deployment time: 2–3 hours. Zero downtime on currently working services.

Phase 1 — 30 min

Cloudflare Account + Domain Setup

Create free Cloudflare account, add adventureaiagency.com, update nameservers at your registrar. Cloudflare will import your existing DNS records automatically.

⏱ 30 minutes (includes DNS propagation)
# Steps:
# 1. Sign up at cloudflare.com (free)
# 2. Add site: adventureaiagency.com
# 3. Update nameservers at registrar to:
nameserver1: dana.ns.cloudflare.com
nameserver2: wade.ns.cloudflare.com
Phase 2 — 45 min

Install cloudflared + Create Tunnel

Install the cloudflared daemon on your VPS, authenticate with Cloudflare, and create a named tunnel. This is a single binary — no Docker required.

⏱ 45 minutes
# On VPS (31.97.132.157):
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared

# Authenticate with your CF account:
cloudflared tunnel login

# Create the tunnel:
cloudflared tunnel create adventure-ai

# → Outputs a tunnel UUID you'll use in config
Phase 3 — 45 min

Configure Per-Service Routes

Write the tunnel config mapping each subdomain to its local service port. Each entry is completely independent — one broken entry doesn't affect others.

⏱ 45 minutes
# ~/.cloudflared/config.yml on VPS:

tunnel: your-tunnel-uuid-here
credentials-file: /root/.cloudflared/your-tunnel-uuid.json

ingress:
  - hostname: adventureaiagency.com
    service: http://localhost:9085
  - hostname: lms.adventureaiagency.com
    service: http://localhost:9082
  - hostname: chat.adventureaiagency.com
    service: http://localhost:9086
  - hostname: courses.adventureaiagency.com
    service: http://localhost:3030
  - hostname: vault.adventureaiagency.com
    service: http://localhost:9099
  - hostname: ai.adventureaiagency.com
    service: http://localhost:9096
  - hostname: docs.adventureaiagency.com
    service: http://localhost:9097
  - hostname: api.adventureaiagency.com
    service: http://localhost:9098
  - hostname: dash.adventureaiagency.com
    service: http://localhost:9080
  - service: http_status:404 # catch-all
Phase 4 — 15 min

Start as System Service + Create DNS Records

Install cloudflared as a systemd service (auto-restarts on crash) and create CNAME DNS records pointing each subdomain to your tunnel. Done.

⏱ 15 minutes
# Install as system service:
cloudflared service install
systemctl start cloudflared
systemctl enable cloudflared

# Create DNS records (via CF CLI or dashboard):
cloudflared tunnel route dns adventure-ai adventureaiagency.com
cloudflared tunnel route dns adventure-ai lms.adventureaiagency.com
cloudflared tunnel route dns adventure-ai chat.adventureaiagency.com
# ... repeat for each subdomain

# Verify all routes are live:
cloudflared tunnel info adventure-ai

Built-in protection
you're not getting today

Beyond just solving the firewall problem, Cloudflare Tunnel adds meaningful security layers to your entire stack.

🔒

Zero Open Ports

Your VPS has no open inbound ports. Attackers cannot port scan, probe, or brute-force your services directly. The attack surface is effectively zero.

🛡️

DDoS Absorption

Cloudflare's network absorbs volumetric attacks before they reach your VPS. You get enterprise-grade DDoS protection on every service, including the free tier.

🔐

Zero Trust Access

Lock down internal tools (Vaultwarden, Paperless, Budget Extractor) behind Cloudflare Access — require Google/GitHub SSO login before the service is even reachable.

🔑

Automatic SSL/TLS

Every subdomain gets a valid SSL certificate automatically — no Let's Encrypt renewal scripts, no cert expiry alerts, no outages from missed renewals.

📡

Real IP Hidden

Your VPS IP address (31.97.132.157) is never exposed in DNS. All public records point to Cloudflare — your origin is invisible to attackers.

📋

Per-Service Audit Logs

Cloudflare logs every request, by service, with IP, user agent, and response code. Instant visibility into who's hitting what — no server-side log parsing needed.

What you get back

Quantifying the value of solving infrastructure problems you're actively dealing with.

$0
Monthly infrastructure cost
to solve all of this
2h
Total deployment time
to go live
10+
Services independently
routed and isolated
0
Hostinger support tickets
needed going forward
$300/hr
Gregg's time saved by never
debugging Caddy again

"We build systems where one failure domain doesn't cascade into a total outage. Cloudflare Tunnel gives us per-service isolation, zero port management, and enterprise-grade routing — at a price point that makes the Caddy problem look embarrassing in retrospect."

— Q, Digital Counterpart to Gregg Singer | Adventure AI Agency

Ready to build this?

Press the button and Q will SSH into your VPS, install cloudflared, create the tunnel, write the full config for all 10 services, and install it as a systemd service — autonomously. You'll get a Telegram update when it's live.

Tunnel Docs ↗

✅ Deployment Checklist

□ Q can do autonomously  ·  ⚠️ Needs your input first

□ SSH into VPS (31.97.132.157)
⚠️ Create Cloudflare account
□ Install cloudflared binary
⚠️ Update nameservers at registrar
□ Create tunnel (adventure-ai)
□ Authenticate with CF account
□ Write config.yml (10 services)
□ Create CNAME DNS records
□ Install as systemd service
□ Test all 10 service routes
□ Add ZT policy for Vault + Budget
⚠️ Add adventureaiagency.com to CF

Complete the ⚠️ steps first, then hit Build It — Q handles the rest.