You had a thought in the shower, typed half of it into Apple Notes, forgot which folder you used, and never found it again. Or you opened Notion to log a server IP and spent four minutes picking an icon for a page you'll never reorganize.
Memos is the opposite energy: open the app, write in Markdown, done. ~60k GitHub stars, MIT licensed, self-hosted, and deliberately lightweight — a timeline for quick capture, not a second job as a knowledge manager.
What it actually does
Memos is a note feed, not a wiki tree. New entries land on a timeline — thoughts, links, snippets, daily logs, paste-this-config-here reminders. Tags help you filter later; there's no mandatory folder hierarchy or Notion-style database views.
Markdown is native. Code blocks render cleanly, links work, images embed when you need them. Export is straightforward because the underlying format is plain text you can grep, back up, or rsync without a proprietary export wizard.
Under the hood it's a single Go binary in a ~20 MB Docker image. Default storage is SQLite in a mounted volume — fine for one person or a small team. MySQL and PostgreSQL are supported if you outgrow SQLite or want managed DB backups.
There's a REST API and gRPC for integrations — pipe alerts into Memos, sync from scripts, build your own mobile client if you're ambitious. For most people the web UI on port 5230 is enough.
Why self-host notes?
Your thoughts aren't training data. Cloud note apps are convenient until you read what happens to content uploaded to US-hosted SaaS. Client notes, credentials-adjacent snippets, internal runbook drafts — self-hosting keeps them on disks you control.
Radical simplicity. Memos doesn't want to be your CRM, calendar, and project manager. If you need a quick private scratch pad for ops, homelab, or personal journaling, it starts fast and stays out of the way.
Portable by design. SQLite file plus Markdown-ish storage means migration is copying a directory, not negotiating with a vendor. Back up ~/.memos (or whatever you mount at /var/opt/memos) and you're done.
Cheap to run. 512 MB RAM and a gig of disk is enough for a personal instance. This runs comfortably on the same Canadian VPS that hosts your Uptime Kuma and Stirling-PDF — no dedicated note-taking subscription.
What running it takes
docker run -d \
--name memos \
--restart unless-stopped \
-p 5230:5230 \
-v ~/.memos:/var/opt/memos \
neosmemo/memos:stable
Open https://your-host:5230, create the admin user on first visit, start typing. Use the stable tag in production — not latest, which tracks development builds.
For HTTPS, put nginx or Caddy in front and set MEMOS_INSTANCE_URL to your public URL so links and assets resolve correctly. Enable auth — Memos supports user accounts; don't leave a fresh instance wide open on the internet.
Back up the volume regularly. SQLite is one file (memos_prod.db in the data dir); copy it while Memos is running with normal filesystem backups, or stop the container for a cold copy if you're paranoid. Scale to Postgres when multiple people hammer it daily or you need HA — most homelab and solo-business setups never get there.
Who it's for (and who should skip it)
Good fit: developers and ops people who want a private timeline for snippets, homelab admins logging config changes, anyone fleeing Notion complexity for "just let me write it down," teams wanting a simple internal micro-blog or status log.
Maybe skip it: if you need collaborative docs with comments, permissions matrices, and embedded databases — Memos is capture-first, not Confluence. If you're all-in on Apple Notes or Obsidian sync and happy there, you don't need another app — unless you specifically want server-side ownership.
Hosting it in Canada
We run Memos on Canadian Docker hosting for clients who want a private notes timeline next to their other self-hosted tools — TLS, backups on the data volume, and the same Alberta team that answers when something stops responding.
Tell us how many users and whether SQLite is enough — for most setups it is, and we'll keep the box small on purpose.