This site runs from my home
Why I moved my writing away from publishing platforms and onto a small NAS at home.
Platforms such as Medium solve a real problem: they let almost anyone publish with very little effort. I used them for exactly that reason, moving my writing between Medium, WordPress, and other platforms over time.
The catch is that a platform controls the rules. A service that looks free can change its business model, restrict distribution, or place writing behind a paywall that readers did not face before. Self-hosting removes that uncertainty: the domain, the files, and the decision about who can read them remain mine.
Those platforms also used to have a clear design advantage: they provided a polished, readable experience out of the box. AI now makes it much easier to design and refine a distinctive blog with the same care, so Medium and WordPress no longer hold the same advantage simply because they provide a ready-made interface.
A deliberately small setup
The goal was not to recreate WordPress with a database, plugins, an admin panel, and server-side code that this blog did not need. Instead, I used a static site generator: it turns Markdown and templates into finished HTML pages before they are deployed, leaving the home server with little more to do than serve files. For this site, I chose Eleventy.
For the self-hosted side, I kept the setup equally small:
- NAS: often underestimated as just a backup box, it is effectively a small, quiet server with hard drives for backups and the ability to run Docker containers.
- Docker: run the web server in an isolated, reproducible container that is easy to update or replace.
- Caddy: I was used to Nginx and Apache and had never tried Caddy before. It simplifies HTTPS by automatically obtaining and renewing TLS certificates and redirecting HTTP to HTTPS. With a tiny Caddyfile, it also serves static files and enables HTTP/2 and HTTP/3 by default.
- No database: avoid MySQL, PHP, an admin panel, and backend work for every visit.
- Domain and ports: point the blog subdomain to my fixed public IP and forward only web traffic to Caddy.
Keeping the site static makes it fast, portable, and easy to restore. It also removes services that would consume resources without adding value to this particular project.
Scale by doing less
Scalability does not simply mean adding more machines or capacity in advance. It also means designing efficient systems that can handle many requests with limited resources, which is exactly what static pages and no database help achieve. I will see how this setup performs and move to something more robust only if real traffic requires it.
The security trade-off
Using a tunnel would limit direct exposure, but it would also add another external dependency. For now, my fixed public IP exposes only the web ports to Caddy while the NAS administration stays private, with firewall updates and monitoring still required.
Conclusion
Small projects should consider self-hosting more often. AI makes these systems easier to build and maintain. The best default is to start simple and add complexity only when a real need—not hypothetical scale—demands it.