Complete documentation suite for KiteStacks covering all 11 services across 2-host active-active architecture. Includes beginner track (with AI, 8 files) and advanced track (without AI, 7 files) with time estimates, real troubleshooting cases, and command-by-command explanations. Updates certifications roadmap to reflect July 7 2026 A+ Core 2 exam goal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.9 KiB
Step 2 — DNS and Cloudflare Setup
Track: With AI (Beginner)
Time for this step: 1–2 hours
In this step you will set up Cloudflare so your domain points to Cloudflare's servers, and you will create the Cloudflare Tunnel that allows the internet to reach your home computer without exposing your home IP address.
What Is Happening Here?
When someone types www.kitestacks.com into a browser, their computer asks a system
called DNS: "What is the IP address for kitestacks.com?"
Normally, that answer would be your home IP address. But we do NOT want that — your home IP could change, could be targeted by attackers, or could be blocked by your ISP.
Instead, the DNS answer will be Cloudflare's IP address. Traffic goes to Cloudflare, Cloudflare sends it to your computer through a tunnel, and your home IP is never involved.
Ask your AI: "Can you explain in simple terms how Cloudflare Tunnel works?"
Step 2A — Add Your Domain to Cloudflare
If you bought your domain from Cloudflare Registrar, skip to Step 2B.
If you bought it elsewhere (Namecheap, GoDaddy, etc.):
- Log in to Cloudflare at cloudflare.com
- Click "Add a site"
- Enter your domain name
- Choose the Free plan
- Cloudflare will give you two nameserver addresses (like
vera.ns.cloudflare.com) - Go to your domain registrar's website and replace the nameservers with Cloudflare's
Ask your AI: "How do I change nameservers on [your registrar]?"
It can take up to 24 hours for nameserver changes to propagate worldwide, but usually it happens within an hour.
Step 2B — Create Your Cloudflare Tunnel
A Cloudflare Tunnel is the invisible connection between your home computer and Cloudflare. Your home computer reaches out to Cloudflare (outbound connection). Cloudflare holds that connection open. When someone visits your website, Cloudflare sends the request back through that existing connection. Your home router never needs to be configured.
To create a tunnel:
- In your Cloudflare dashboard, go to: Zero Trust → Networks → Tunnels
- Click "Create a tunnel"
- Choose "Cloudflared" as the connector type
- Name your tunnel (e.g.,
kitestacks-tunnel) - Cloudflare will show you a token — a long string of characters starting with
eyJ - Save this token somewhere safe — you will need it in Step 3
Step 2C — Add Public Hostnames to the Tunnel
A public hostname tells Cloudflare: "When someone visits this URL, send the traffic to this container on my home computer."
You will set up hostnames for all eleven of your services. For each one:
- In the tunnel settings, click "Public Hostnames"
- Click "Add a public hostname"
Add all of these (you will complete the services in later steps, but adding the hostnames now means they are ready):
| Subdomain | Domain | Service | URL |
|---|---|---|---|
| www | yourdomain.com | http://homepage:3000 | www.yourdomain.com |
| auth | yourdomain.com | http://authentik:9000 | auth.yourdomain.com |
| gitforge | yourdomain.com | http://forgejo:3000 | gitforge.yourdomain.com |
| ai | yourdomain.com | http://kite-openwebui:8080 | ai.yourdomain.com |
| links | yourdomain.com | http://karakeep:3000 | links.yourdomain.com |
| kavita | yourdomain.com | http://kavita:5000 | kavita.yourdomain.com |
| grafana | yourdomain.com | http://grafana:3000 | grafana.yourdomain.com |
| status | yourdomain.com | http://uptime-kuma:3001 | status.yourdomain.com |
| wiki | yourdomain.com | http://bookstack:80 | wiki.yourdomain.com |
| tasks | yourdomain.com | http://osticket-app:80 | tasks.yourdomain.com |
| portainer | yourdomain.com | https://portainer:9443 | portainer.yourdomain.com |
For the portainer entry, enable "No TLS Verify" (Portainer uses its own self-signed certificate internally).
Replace yourdomain.com with your actual domain throughout.
Ask your AI: "What does the 'service' field in a Cloudflare Tunnel hostname mean?
Why do I use http://homepage:3000 instead of an IP address?"
Step 2D — Create the Docker Network
Everything in this homelab runs in Docker (covered in the next step), and all the containers need to be able to talk to each other and to the Cloudflare connector. They do this by being on the same Docker network.
On your home computer, run:
docker network create kitestacks
You will also do this on your cloud VPS in a later step.
Ask your AI: "What is a Docker network and why do all containers need to be on the same one?"
Checkpoint
Before moving to Step 3, make sure:
- Your domain is on Cloudflare (nameservers changed or bought from Cloudflare)
- You created a Cloudflare Tunnel and saved the tunnel token
- You added all 11 public hostnames to the tunnel
- You ran
docker network create kitestackson your home computer