Diagram of the acme.sh DNS-01 certificate automation across Cloudflare, Lets Encrypt, a local cert cache, and SSH push to internal hosts

Let's Encrypt for Internal Hosts with DNS-01 and SSH Push

How I replaced a dozen ad hoc certbot setups with one central acme.sh instance. It uses DNS-01 validation through Cloudflare and pushes each certificate to its host over SSH.

October 1, 2026 · Updated October 14, 2026 · 8 min · Roland Hill
Diagram of the self-hosted mail flow through postscreen, milters, Dovecot, direct delivery and webmail

Self-Hosted Email: Running My Own Mail Server Again

How I moved my domain’s email from a hosted provider to a self-hosted Postfix and Dovecot server in my home lab, the design choices behind it, and what I learned along the way.

October 1, 2026 · Updated October 14, 2026 · 7 min · Roland Hill
The Matomo analytics dashboard showing visits over time and a visitor map of New Zealand

Self-Hosted Matomo Behind a Reverse Proxy

How I self-host Matomo analytics for a static Hugo site. Matomo stays on an internal server, and a DMZ reverse proxy carries the tracking traffic, with the real visitor IP and GeoLite2 geolocation preserved.

October 1, 2026 · Updated October 14, 2026 · 6 min · Roland Hill
The Jellyfin Live TV guide showing a grid of channels and programme schedules

Live TV in Jellyfin with NextPVR

How I run NextPVR alongside Jellyfin in a single LXC container to provide live TV, and how a one-line config setting broke every channel behind a generic transcoder error.

October 1, 2026 · Updated October 14, 2026 · 6 min · Roland Hill
The live comment box on a hillnet.co.nz post, showing one existing comment and a reply form

Self-Hosted Hugo Comments with Private Gitea

How I built a secure, self-hosted comment system for Hugo using private Gitea as the backend, proxied safely through Nginx.

March 2, 2026 · Updated October 14, 2026 · 2 min · Roland Hill