GoDaddy
The registrar. It keeps our domain registration and renewal. We used it to change the nameservers.
FIELD NOTES / 01 · HOSTING AT HOME
We built a website, then gave it a home on an always-on Mac mini. Here’s how the pieces fit—one simple picture at a time.
Follow a visitor’s request ↓01 / START WITH THE PIECES
Our GoDaddy account had a domain and a free website builder. We already had custom HTML, CSS and JavaScript files, so we needed a server to deliver those files. Other GoDaddy hosting products exist; this was a decision about the plan we had.
The registrar. It keeps our domain registration and renewal. We used it to change the nameservers.
The DNS provider and public front door. It answers address lookups, handles visitor HTTPS and routes requests into our tunnel.
The host. Two background programs run here: cloudflared connects the tunnel; Caddy serves the website files.
02 / GIVE THE ADDRESS NEW DIRECTIONS
The domain stayed registered with GoDaddy. Changing its nameservers told the .be registry, DNS Belgium, to direct DNS lookups to Cloudflare.
GoDaddy is not a stop on every website visit.
The browser and its DNS resolver first check what they remember. When a full lookup is needed, the resolver follows the directory:
Root → .be → Cloudflare DNS
The answer is Cloudflare’s public IP address, not our home IP. The browser then connects to Cloudflare. DNS gives directions; it does not carry the website page.
03 / SEE IT HAPPEN
The Mac opens the tunnel first and keeps it connected. The animation below follows a visitor’s request through that existing connection, then follows the answer back.
The connector starts an outgoing connection from the Mac. Cloudflare carries requests down that connection. We didn’t open a public incoming port on the home router.
HTTPS protects the browser-to-Cloudflare connection. The tunnel encrypts the Cloudflare-to-Mac connection. Local HTTP between the connector and Caddy stays inside our Mac. This is not a guarantee against every security risk.
04 / THE SETUP WE ACTUALLY USED
This is our tested setup, not a promise that every account has identical screens. The examples use generic paths and placeholders. Never copy someone else’s tunnel credentials or assigned nameservers.
Our dist/ folder holds the website. Notes, credentials, logs and personal documents stay outside it. A local preview let us check the design before publishing.
“127.0.0.1” means this computer. Typing it on your phone points to the phone, not the Mac.
With Homebrew already installed, we installed Caddy and cloudflared:
brew install caddy cloudflaredNeither needs an app window. Caddy is the web server; cloudflared is the tunnel connector.
This simplified configuration accepts the website’s hostname but listens only on the Mac’s loopback interface. Replace the example path with your public website folder.
{
admin off
auto_https off
}
http://:8787 {
bind 127.0.0.1
root * "/ABSOLUTE/PATH/TO/PUBLIC/dist"
encode gzip
file_server
}Cloudflare handles public HTTPS in this setup. auto_https off here applies to Caddy’s local server, not the visitor’s connection. Directory browsing is not enabled.
caddy validate --config /PATH/TO/Caddyfile --adapter caddyfile
caddy run --config /PATH/TO/Caddyfile --adapter caddyfileThis runs in the foreground. For our ongoing setup, we configured macOS LaunchAgents for both programs, with restart-on-exit and log files. They start at user login; we have not verified recovery before login after a reboot.
We added our domain to Cloudflare, selected its Free plan, created a named tunnel and connected the Mac. The dashboard supplied a secret connector token. We saved it through hidden input in a private file, readable only by our Mac user.
cloudflared tunnel run --token-file /PRIVATE/PATH/tunnel-tokenNo real token appears in this article. Keep credentials outside the served folder and source control. A “Healthy” tunnel confirms a connection; it does not yet prove the website is live.
We compared the complete GoDaddy DNS list with Cloudflare’s import. The scan had missed an email alias, which we restored. We preserved email-related MX, TXT, CNAME and SRV records, and checked DNSSEC status before the move.
Then we entered Cloudflare’s assigned nameservers in GoDaddy. The registrar sent the updated delegation to the .be registry. If DNSSEC is already enabled, follow the provider’s migration instructions before switching.
We added published application routes for the main domain and its www version. Both point to http://127.0.0.1:8787. Their proxied DNS records point to the named tunnel.
Old website A records prevented automatic DNS creation. After recording the old values, we replaced those website records with the tunnel destination. Email records stayed in place.
Use the destination generated for your own tunnel. Don’t delete unrelated DNS records.
We waited for DNS activation and an active Universal SSL certificate, then enabled Always Use HTTPS. On 22 September 2026, both public HTTPS addresses returned the exact homepage served by the Mac, and HTTP redirected to HTTPS.
www.05 / THE THINGS THAT TAUGHT US SOMETHING
No fallback was configured. The Mac’s cached DNS lookup still returned the old GoDaddy IP while current DNS returned Cloudflare. A direct request to Cloudflare showed the new website. Different caches can expire at different times.
Compare a fresh browser session and mobile data before changing DNS again. Clearing one device’s cache does not clear the router’s or internet provider’s cache.
Our first Caddy configuration matched only the loopback hostname. Requests using the public hostname returned an empty 200 response. We fixed hostname matching while retaining bind 127.0.0.1, then compared actual page contents.
The connector is a background command-line program called cloudflared. It does not need an Applications icon, an open Terminal window or an open browser once configured as a service.
Yes. Caddy serves the live dist/ files. Changes there become available immediately, although browsers may cache assets. Preview changes separately, keep backups, and use versioned asset URLs when publishing updates.
Visitors normally receive a Cloudflare error if the tunnel or origin is unavailable. The Mac must stay awake and online. Our services start at user login; power-loss and reboot recovery still need testing.
THE PICTURE TO REMEMBER
Start with a small public site. Understand each connection. Keep private files outside the shop window.
Replay the journey ↑