Memos provides pre-built binaries for multiple platforms. This is the simplest installation method if you prefer not to use Docker.
Pre-built binaries are available for:
Linux : amd64, arm64, armv7
macOS : amd64 (Intel), arm64 (Apple Silicon)
Windows : amd64
Binaries are built using the workflow in .github/workflows/build-binaries.yml:106-208.
Download
Download the latest release from GitHub:
https://github.com/usememos/memos/releases/latest
Binary naming format: memos_{version}_{os}_{arch}.tar.gz (or .zip for Windows)
Examples:
memos_0.28.1_linux_amd64.tar.gz
memos_0.28.1_darwin_arm64.tar.gz
memos_0.28.1_windows_amd64.zip
Installation
Linux
macOS (Intel)
macOS (Apple Silicon)
Windows
# Download for Linux amd64
wget https://github.com/usememos/memos/releases/download/v0.28.1/memos_0.28.1_linux_amd64.tar.gz
# Extract
tar -xzf memos_0.28.1_linux_amd64.tar.gz
# Make executable
chmod +x memos
# Move to system path (optional)
sudo mv memos /usr/local/bin/
Running Memos
Quick Start
Run Memos with default settings:
Memos will:
Start on port 8081
Store data in ~/.memos
Use SQLite database
Print access URL
With Custom Options
Use command-line flags from cmd/memos/main.go:95-107:
./memos --port 5230 --data /path/to/data
Available Flags
Flag Default Description --port8081HTTP server port --addr“ Bind address (empty = all interfaces) --data~/.memosData directory path --driversqliteDatabase driver: sqlite, mysql, postgres --dsn“ Database connection string --instance-url“ Public instance URL --demofalseEnable demo mode --unix-sock“ Unix socket path (overrides addr/port)
Using Environment Variables
Alternatively, use environment variables with MEMOS_ prefix:
export MEMOS_PORT = 5230
export MEMOS_DATA = / var / memos
./memos
External Database Configuration
MySQL
./memos \
--driver mysql \
--dsn "user:password@tcp(localhost:3306)/memos"
PostgreSQL
./memos \
--driver postgres \
--dsn "postgres://user:password@localhost:5432/memos?sslmode=disable"
Running as a System Service
Linux (systemd)
Create service file
Create /etc/systemd/system/memos.service: [Unit]
Description =Memos
After =network.target
[Service]
Type =simple
User =memos
WorkingDirectory =/opt/memos
ExecStart =/opt/memos/memos --port 5230 --data /var/lib/memos
Restart =on-failure
RestartSec =5s
[Install]
WantedBy =multi-user.target
Create user and directories
sudo useradd -r -s /bin/ false memos
sudo mkdir -p /opt/memos /var/lib/memos
sudo cp memos /opt/memos/
sudo chown -R memos:memos /opt/memos /var/lib/memos
Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable memos
sudo systemctl start memos
Check status
sudo systemctl status memos
sudo journalctl -u memos -f
macOS (launchd)
Create launch agent
Create ~/Library/LaunchAgents/com.usememos.memos.plist: <? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
< plist version = "1.0" >
< dict >
< key > Label </ key >
< string > com.usememos.memos </ string >
< key > ProgramArguments </ key >
< array >
< string > /usr/local/bin/memos </ string >
< string > --port </ string >
< string > 5230 </ string >
</ array >
< key > RunAtLoad </ key >
< true />
< key > KeepAlive </ key >
< true />
< key > StandardOutPath </ key >
< string > /tmp/memos.log </ string >
< key > StandardErrorPath </ key >
< string > /tmp/memos.err </ string >
</ dict >
</ plist >
Load and start service
launchctl load ~/Library/LaunchAgents/com.usememos.memos.plist
launchctl start com.usememos.memos
Windows (NSSM)
Use NSSM to run Memos as a Windows service:
Install service
nssm install Memos "C:\memos\memos.exe"
nssm set Memos AppParameters "--port 5230 --data C:\memos-data"
nssm set Memos AppDirectory "C:\memos"
Updating Memos
Download new binary
Download the latest release from GitHub.
Stop Memos
# If running in terminal: Ctrl+C
# If running as service:
sudo systemctl stop memos # Linux
launchctl stop com.usememos.memos # macOS
Replace binary
# Backup old binary
mv /usr/local/bin/memos /usr/local/bin/memos.backup
# Install new binary
tar -xzf memos_0.28.2_linux_amd64.tar.gz
sudo mv memos /usr/local/bin/
Start Memos
sudo systemctl start memos # Linux
launchctl start com.usememos.memos # macOS
Always backup your data directory before updating, especially when upgrading major versions.
Binary Details
Binaries are built with the following settings (.github/workflows/build-binaries.yml:147-168):
Go version : 1.25.7
CGO : Disabled (CGO_ENABLED=0)
Build flags :
-trimpath - Remove file system paths
-ldflags="-s -w -extldflags '-static'" - Strip symbols, static linking
-tags netgo,osusergo - Pure Go networking and user resolution
This produces fully static binaries with no external dependencies.
Next Steps