I got tired of my notes living in someone else's cloud, so I built my own. It's called notes-site — a personal
notes web app where every byte stays on your own disk.
## What it is
A single-file Node.js server using the built-in node:sqlite — zero native dependencies, zero external services.
Clone, npm install, npm start, done.
- Markdown notes with tags and autosave
- Photo / video / audio attachments (upload straight from your phone's camera)
- Auto-converts downloads to MP4 / MP3 / PNG via ffmpeg cache
- Full-text search, 5 sort orders, 30-day trash bin
- Dark mode, responsive layout (add to phone home screen, feels native)
- Export everything to JSON / Markdown / plain text
- Automatic encrypted backups: the whole data dir packed into an AES-256-GCM archive you can sync to any cloud drive — the provider sees nothing
- Every note also mirrored as a plain
.txt— readable in Notepad even if the app is gone
## How I run it
It lives on an old laptop at home. The laptop lid stays closed, it auto-starts on boot via a watchdog script, and I
reach it from my phone over Tailscale. Honestly, it feels like a commercial notes app — instant sync, works from
anywhere — except the "data center" is a laptop under my desk, and my monthly bill is about $2 of electricity.
Total cost: $0 in services. No subscription, no VPS, no Docker.
## Why not Notion / Obsidian sync / etc.?
I wanted three things at once: my data on my hardware, access from my phone anywhere, and real backups I control.
Everything I tried made me pick two. So I picked all three and wrote the missing piece.
## Try it
Source (MIT): https://github.com/A20103/notes-site
Requires Node.js ≥ 22.20 (for the built-in SQLite). Windows users get a start.bat — double-click and go.
I'd love feedback, issues, and PRs. What does your self-hosted notes setup look like?
Top comments (0)