How this site is built
A static site, a self-hosted newsletter and no ports open to the internet. Here's the whole setup.
Every post on this site is a note in my Obsidian vault. When I deploy, the site rebuilds into plain HTML and gets served from a tiny nginx container. There’s no database behind the blog, so there’s nothing to patch and nothing to break.
Writing a post
A new post is one note. Its properties set the date and tags, and setting status to published puts it live.
---
description: Astro, Listmonk and one small VPS.
date: 2026-11-07
tags: [build-notes]
status: published
---
Every post on this site is a note in my Obsidian vault...
The newsletter
The signup box sends your address to Listmonk, a self-hosted mailing list manager. It emails you a confirmation link, remembers which lists you picked, and puts an unsubscribe link in every email.
No open ports Nothing on the server listens on a public port. Cloudflare Tunnel carries the traffic in, and the admin side is only reachable over my private Tailscale network.
[Continue the post…]