The Memos project

Tired of your notes being scattered across cloud apps?

Memos is a self-hosted, no-fuss note-taking app that runs right on your own server or device.

Simple, fast, and totally yours.

No accounts. No sync issues. No one looking over your shoulder. Just a clean way to keep your ideas, thoughts, and reminders in one place — where you’re in charge.

Your Private Notes, Fully Under Your Control

Why Self-Hosters Love Memos

Here’s what makes Memos a great fit for your self-hosting club setup:

  • 🔐 You Own Everything Your notes stay on your server. No cloud, no tracking, no monthly fees.

  • Super Lightweight Runs fast even on small setups like a Raspberry Pi. Made with Go and React.js for performance and low resource use.

  • ✍️ Easy to Use Just open it and start typing. Notes show up in a simple timeline — perfect for quick thoughts or daily logs.

  • 🧾 Supports Markdown Use formatting, checklists, images, or code blocks. All the basics are there if you want them.

  • 🏷️ Use Hashtags to Organize Just add tags like #idea or #todo to your notes. Search and filter later, no folders needed.

  • 📤 Optional Sharing Want to share a note? You can create a public link — but only when you want to.

  • 👐 Open Source & Free MIT-licensed. No hidden features or paywalls. Made by the community, for the community.

Self-Hosting Memos: The Docker Way

Deploying Memos is incredibly straightforward, thanks to its robust Docker support.

This is the recommended method for most self-hosters.

Option 1: Quick Start with Docker Run

For a rapid deployment or testing, the docker run command gets Memos up and running in moments:

docker run \
  -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos/:/var/opt/memos \
  neosmemo/memos:stable

Let’s break down this command:

  • -d: Runs the container in “detached” mode (in the background).
  • --name memos: Assigns a readable name to your container.
  • -p 5230:5230: Maps port 5230 on your host machine to port 5230 inside the container. You’ll access Memos by navigating your browser to http://your-server-ip:5230.
  • -v ~/.memos/:/var/opt/memos: Crucial for persistence! This volume mount maps a directory on your host machine (e.g., ~/.memos/ which expands to your user’s home directory /memos/ folder, or you can specify any path like /opt/memos-data/) to the /var/opt/memos directory inside the container. This is where Memos stores its SQLite database file and any uploaded resources. Without this, your data would be lost if the container is removed!
  • neosmemo/memos:stable: Specifies the Docker image to pull and run. neosmemo/memos is the official repository, and stable ensures you get the latest stable version.

Option 2: Robust Deployment with Docker Compose (Recommended)

For more organized deployments, easier management, and seamless updates, docker compose is the ideal method. Create a docker-compose.yml file in your desired Memos directory:

#version: '3.8'

services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    restart: unless-stopped
    ports:
      - "5230:5230" # Host_Port:Container_Port
    volumes:
      - memos_data:/var/opt/memos # Use a named volume for persistence

volumes:
  memos_data:
    # Docker will create and manage this named volume.
    # Its data typically resides in /var/lib/docker/volumes/memos_data/_data
    # You can specify a driver or custom options if needed, but for simplicity,
    # leaving it blank works fine for a local volume.

Explanation of the docker-compose.yml:

  • version: '3.8': Specifies the Docker Compose file format version.
  • services:: Defines the containers for your application.
    • memos:: The name of your service.
    • image: neosmemo/memos:stable: The Docker image to use.
    • container_name: memos: Assigns a specific name to the running container.
    • restart: unless-stopped: Ensures the container restarts automatically.
    • ports:: Maps the host port to the container port.
    • volumes:: This utilizes a named volume for data persistence.
      • memos_data:/var/opt/memos: Mounts the named volume memos_data to the container’s data directory.
  • volumes:: Declares the named volume memos_data. Docker handles its creation and storage.

To start Memos using this docker-compose.yml file, navigate to the directory where you saved it and run:

docker compose up -d

In case you need:

  1. To stop Memos:
docker compose down
  1. Memos uses a SQLite database, so you can find it in the volume you mounted.
sudo su # Or just prepend sudo to your cd command
cd /var/lib/docker/volumes/memos_data/_data # Replace with the exact Mountpoint from inspect
ls
#memos_prod.db  memos_prod.db-shm  memos_prod.db-wal
  1. You won’t be able to “see” the Markdown directly by just listing the files or opening them with a standard text editor.

The Markdown content is inside the memos_prod.db file, structured within database tables.

To actually view the Markdown of your notes: You need a SQLite database browser/editor.

The most common and user-friendly tool is “DB Browser for SQLite”. You can download it for Windows, macOS, or Linux.

sudo apt update && sudo apt install sqlite3
sqlite3 memos_prod.db

Memos Database

Which will match your posts:

Memos First Post

After Deployment

Once Memos is running, open your web browser and go to http://your-server-ip:5230.

Memos Signup / First Login

You’ll be greeted by the Memos interface, ready for you to start capturing your thoughts:

Memos UI

The first user to register will become the administrator.

Memos does not have a default username and password in the traditional sense like “admin/admin.”

Conclusion

Memos provides an elegant, efficient, and privacy-respecting solution for personal knowledge management.

It reminds me of some kind of Twitter/X interface…but without the bloat.

It even has a referencing feature that allows you to link to other memos, which is a great way to create a knowledge base.

Memos Referencing Posts

Its straightforward Docker deployment makes it an excellent choice for anyone looking to self-host their notes and ensure their digital brain remains entirely their own.

Embrace the freedom of owning your data and start creating with Memos today!