Your Notes, Your Server, No Subscriptions
Memos is an open-source, lightweight note-taking application you can run entirely on your own hardware – no cloud accounts, no monthly fees, and no third-party access to your writing. If you have been looking for a self-hosted alternative to Notion or Evernote that does not require a full database server or complex configuration, Memos is worth the thirty minutes it takes to get running.

What Memos Actually Is
Memos is a Twitter-style note server built for capturing quick thoughts, code snippets, links, and longer writing – all in Markdown. Each entry is called a “memo” and appears in a chronological timeline. You can tag entries, make them public or private, and search across everything instantly. The interface is minimal by design, which keeps the focus on writing rather than organizing.
The application is built with a Go backend and a React frontend, which means the binary is small and the resource footprint is low. Running on a Raspberry Pi 4 or a basic VPS with 512MB RAM is entirely realistic. The database engine Memos uses by default is SQLite, so there is no PostgreSQL or MySQL setup required – the entire data store is a single file on disk.
Memos also exposes a REST API, which opens up automation options. You can push notes from a terminal, pull entries into other workflows, or connect it to webhook-style tools. If you already run something like Ntfy as a self-hosted push notification server, you can wire the two together to send yourself alerts when specific memo tags are created.
Versioning is built in, meaning each memo tracks edits over time. This matters if you use Memos for draft writing or iterating on ideas rather than just capturing static notes. The public sharing feature is also genuinely useful – you can flip individual memos to public and share a URL without exposing the rest of your notes or creating a guest account.

Installing and Configuring Memos with Docker
Docker is the fastest path to a working Memos instance. Before starting, make sure Docker and Docker Compose are installed on your host. Any modern Linux distribution works – Ubuntu 22.04 and Debian 12 are the most common choices for home servers. You will also want a dedicated directory to hold the SQLite database file so data persists across container restarts.
Create a directory for Memos data and a Compose file:
- Run mkdir -p ~/memos/data to create the data directory.
- Create a file called docker-compose.yml inside ~/memos.
- Paste the following into that file:
services:
memos:
image: neosmemo/memos:stable
container_name: memos
restart: unless-stopped
ports:
– “5230:5230”
volumes:
– ./data:/var/opt/memos
Run docker compose up -d from inside the ~/memos directory. Docker will pull the latest stable image and start the container in the background. Within about thirty seconds, Memos will be accessible at http://your-server-ip:5230. On first load, you will be prompted to create an admin account. Use a strong password – this account controls all settings, user management, and system-level configuration.
From the admin panel, you can enable or disable open registration, set your instance name, and configure storage options. By default, all uploaded images and files are stored inside the same SQLite-backed volume. If you plan to attach a lot of images to notes, consider mounting a separate volume for the assets directory to keep the database file lean. The setting for this is under Settings > Storage in the admin interface, where you can also point Memos at an S3-compatible bucket if you prefer offloaded object storage.
Putting Memos behind a reverse proxy is worth doing if you want HTTPS and a clean domain name. Nginx Proxy Manager and Caddy are both popular choices for home lab setups. The simplest Caddy configuration requires only three lines – your domain, a TLS directive, and a reverse proxy pointing to port 5230. With a valid domain and automatic Let’s Encrypt certificates handled by Caddy, the entire HTTPS setup adds less than five minutes to the process. After that, Memos is reachable at https://notes.yourdomain.com with a valid certificate and no browser warnings.
Using Memos Day to Day

The daily workflow inside Memos is intentionally fast. The compose box sits at the top of the timeline and accepts plain text or Markdown – headers, bold, code blocks, and task checkboxes all render correctly. Tags work by typing a hash symbol directly in the note body, which means there is no separate tagging interface to navigate. The tag sidebar on the left updates in real time as you write, so your organizational structure builds itself as you go.
Mobile access works through the browser without any dedicated app. The interface is responsive and the compose experience on a phone is usable, though a growing number of users run Memos alongside the open-source Moe Memos iOS and Android client for a more native feel. Backups require only one thing: copying the data directory, since everything – notes, tags, user accounts, settings – lives in that single SQLite file. Automating a nightly copy of that directory to a remote location takes one cron job and keeps your entire note history protected.
Frequently Asked Questions
Does Memos require a separate database like PostgreSQL?
No. Memos uses SQLite by default, so the entire database is a single file on disk with no additional database server needed.
Can I access Memos from my phone?
Yes. The web interface is mobile-responsive, and third-party apps like Moe Memos offer a native mobile experience for iOS and Android.





