โ† back to projects

This Website

A self-hosted personal site built with Astro and Tailwind, served by Caddy and exposed publicly via Cloudflare Tunnel.

Astro Tailwind CSS Caddy Cloudflare Tunnel Debian Docker
โ‘  Edit โ‘ก Push โ‘ข Pull & Build VS Code Remote SSH Edit .astro files git push GitHub homelab-site Version control git pull Deploy Script websiteCT Pulls & builds npm run build โ‘ฃ Build โ‘ค Serve โ‘ฅ Tunnel Astro Build Static output HTML ยท CSS ยท JS serves Caddy Web Server websiteCT ยท :80 outbound Cloudflare Tunnel No open ports encrypted โ‘ฆ Public Cloudflare Edge DDoS ยท CDN ยท SSL HTTPS Internet wilsh.co.uk Publicly accessible websiteCT ยท 192.168.1.245 Code pipeline Build Serve pipeline Public

Why Build It

The homelab started as a purely personal project โ€” self-hosting services, learning Linux, breaking things and fixing them, wanted somewhere to document it all. Not just as a record for myself but as a showcase of what's been built, the decisions made along the way and the problems solved. I imagine this will only be for me but if anyone finds anything useful from it thats cool to. :)

The Stack

The site is built with Astro โ€” a static site framework that builds to pure HTML and CSS with zero JavaScript overhead unless explicitly added. It was chosen over a traditional CMS like Ghost or WordPress because the goal was a fully custom design with complete control over layout and structure, not a template with limited flexibility. Astro fits that well โ€” pages and components are written directly in .astro files, content lives as markdown where needed, and the build output is fast static files.

Styling is handled by Tailwind CSS v4 using utility classes directly in the markup. Caddy serves the built static files โ€” it's simpler to configure than Nginx and handles HTTPS automatically.

Hosting

Everything runs inside websiteCT โ€” a lightweight Debian LXC container on Proxmox, allocated minimal resources since a static site barely registers on the host. Public access is handled by a Cloudflare Tunnel โ€” an outbound connection from the container to Cloudflare's network that means no ports need to be opened on the router and the home IP is never exposed.

Development Workflow

The site is developed directly on the container over VS Code Remote SSH, with the Astro dev server running locally for live preview. Changes are version controlled in a GitHub repository. When a new build is ready, a deploy script pulls the latest changes, runs the Astro build and reloads Caddy โ€” keeping the deployment process simple and repeatable.

What's Next

The site is still early. The project pages are being filled out as the homelab grows and the blog section will be used for writeups and guides as things get documented properly. The longer term goal is for it to become a reasonably complete showcase of everything running in the homelab. A work in progress much like everything else.