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:stableWhat this gives you:
5230exposed 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 memos3. 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, orSPACEvisibility;SPACErequires 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 itPROTECTED: authenticated users on the instance can read itPUBLIC: anonymous visitors can read it when public instance access is enabledSPACE: 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:5230does not load, checkdocker 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_URLto the canonical HTTP(S) URL independently of that policy. - For version-specific changes, read Upgrading to 0.31.