~tilde

Self-hosting my notes: what I learned

2026-09-12 · self-hosting

For years my notes lived in whatever app was fashionable that year, and every year I exported them into a slightly different mess. This spring I finally moved everything to plain files on a machine I control. Here is the honest version of how that went.

Plain files win

The single best decision was choosing plain text in folders over any database. grep works, backups are trivial, and nothing breaks when an app goes out of business. A folder of .md files is not glamorous, but it is durable.

notes/
├── daily/
│   └── 2026-09-12.md
├── projects/
│   └── homelab.md
└── index.md

How the sync works

Sync is the part everyone underestimates. If two devices edit the same file offline you get a conflict, and no amount of clever tooling makes that pleasant. What I ended up with is a small pipeline:

Pipeline: input, queue, worker

One writer at a time, one queue, one worker. Boring, and that is exactly why it works.

If your notes need a weekend of maintenance a month, they are not notes anymore.

What surprised me

Cross-device search was the other surprise. Local grep is instant; a browser is not. A single always-on node that re-indexes on a schedule solved it well enough.

Would I do it again

Yes, immediately. The setup is boring on purpose: a small box, a folder, a sync job, and a search index. Boring is the feature.