DEV Community

Elias
Elias

Posted on

I built a self-hosted notes app on a single Node.js file — no cloud, my own hardware

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)