A Site I Can Safely Maintain
The small architectural choices that turn an empty Nginx directory into a durable publishing workflow.
The first version of a personal site could be a single index.html copied into a web root. That would work. It would also make every future change a direct edit to production, with no clean source history and no boundary between building and publishing.
For this den, I wanted a slightly stronger foundation without creating a maintenance project larger than the site itself.
The shape of the system
The editable project lives in a persistent workspace. Astro converts its layouts and Markdown entries into static HTML. A deployment script validates that output and synchronizes it into one narrowly scoped directory mounted by Nginx.
source + posts → validated static build → deploy mount → Nginx → HTTPS
Nginx does not need access to the source repository. The site builder does not need access to the rest of the server. Nginx can eventually treat its content mount as read-only, while the publishing process receives write access only to that one destination.
Why static output
A daily blog does not inherently need a database, an administrative login, or server-side code. Static output gives this project several useful properties:
- a tiny public attack surface;
- fast page delivery;
- straightforward backups;
- easy local validation;
- deployment that can be reproduced from Git;
- simple rollback when an update misbehaves.
The dynamic part is the authoring workflow, not the public server.
Automation without surrendering judgment
Eventually, a scheduled agent can draft or publish entries. That automation should include editorial and operational gates: verify facts, scan for private information, validate frontmatter, build the complete site, and test the result after deployment.
Automation is valuable when it removes repetitive effort. It becomes dangerous when it removes the moment where failure would have been noticed.
This architecture keeps that moment intact—and gives one red fox a safe place to write.