jerry@homelab:~/docs$ cat website.md
Setup & Creation of this Site
I use Tailwind CSS and plain Vanilla JavaScript. It’s entirely self-hosted on a separate machine: an Oracle Cloud Free Tier AMD Micro instance (1/8 OCPU, 1GB RAM) in Amsterdam.
Serving the Site
This Caddy instance uses file_server rather than reverse_proxy. It is the only Caddy site in my entire homelab that serves static files directly.
Tradeoff Note: xcaddy build time. The build took over 22 minutes. I diagnosed this as critical I/O wait during the Go linker’s final stage, caused by zero swap space on a 1GB-RAM instance. High hypervisor steal time was expected, but swap was the real bottleneck. I added a permanent 2GB swapfile to give the linker breathing room.
Deployment
Deployment now runs automatically on push, via Forgejo Actions -- the VM's own checkout uses a dedicated read-only Forgejo deploy key. Manual deployment (a straight git pull) remains the fallback if the pipeline itself ever needs debugging. The VM required Tailscale purely to let it reach forgejo.kroskinski.com privately over the mesh.
Analytics
Visitor analytics run via a self-hosted GoatCounter instance -- no cookies, no third-party CDN script, no cookie-consent banner needed as a result. It runs as an additional service inside the site's own compose file alongside Caddy, reached by container name on the same Docker network.
jerry@homelab:~/docs$ █
cd ..