Memos

Getting Started

Run Memos locally with Docker, create the first admin user, and write your first memo.

The shortest path to a running instance is one Docker command with SQLite and a local data volume. Harden deployment and storage once the instance is up.

Prerequisite

  • Docker installed on the machine running Memos

1. Start a local instance

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

What this gives you:

  • 5230 exposed on the host
  • a persistent data directory at ~/.memos
  • SQLite by default
  • one container that is easy to inspect and replace

On a fresh instance, this command initializes private access: ordinary memo pages require sign-in and anonymous Explore is unavailable. In 0.31, the saved ACCESS instance setting controls this policy independently of the canonical URL. The stable image follows stable releases; to pin this release explicitly, use neosmemo/memos:0.31.0.

If you want a checked-in deployment file, use Docker Compose. If you need a custom or pinned build, use Build From Source. Contributors should start with Development.

2. Verify the instance

Open the UI after the container starts:

  • Docker default: http://localhost:5230
  • Binary default: http://localhost:8081

If you want to verify the service from the terminal first:

docker logs memos

3. Create the first admin account

The first user becomes the host admin and can configure registration, authentication, storage, and other global settings.

Recommended first actions:

  • use a strong password
  • choose private or public access in instance settings; configure the canonical instance URL separately
  • decide whether user registration should remain disabled or be opened later
  • decide whether public memos should be allowed at all

4. Create your first memo

Open the global composer from the sidebar. You can create a memo from any authenticated route. Check the selected Space and visibility, then try a memo that exercises the main features:

# Welcome to Memos

This is my first memo.

## Tasks
- [x] Install Memos
- [ ] Write a real note

## Tags
Trying #memos and #getting-started

## Code
```ts
console.log("hello from memos");
```

Useful things to try immediately:

  • choose PRIVATE, PROTECTED, PUBLIC, or SPACE visibility; SPACE requires an assigned Space
  • add a checklist with - [ ]
  • upload a screenshot or document
  • create tags inline with #tagname
  • pin an important memo so it stays visible

5. Understand visibility

Each memo uses one of four visibility levels. New memos default to PRIVATE; you can change the default in your settings or pick a level in the editor.

  • PRIVATE: only you can read it
  • PROTECTED: authenticated users on the instance can read it
  • PUBLIC: anonymous visitors can read it when public instance access is enabled
  • SPACE: active members of the memo's assigned Space can read it

In private mode, ordinary PUBLIC memo pages still require sign-in. Explicit share links remain accessible without sign-in until revoked or expired. SPACE memos cannot have share links. Placement and visibility are independent; see Spaces.

6. Explore the core workflows

After the first memo, the next high-value workflows are:

Common first-run issues

  • If http://localhost:5230 does not load, check docker logs memos.
  • If the data directory is not writable, verify permissions on ~/.memos.
  • For anonymous public profiles and Explore, enable public access in instance settings. For a reverse proxy, set MEMOS_INSTANCE_URL to the canonical HTTP(S) URL independently of that policy.
  • For version-specific changes, read Upgrading to 0.31.

On this page