Skip to content

chriscurrycc/memos

 
 

Repository files navigation

Chris Curry's Memos

简体中文 | 繁體中文 | 日本語

Chris Curry's Memos

A lightweight, self-hosted memo hub for capturing and organizing your thoughts.

This is a customized fork of usememos/memos, forked from v0.23.0.

Versioning

This project uses two independent version numbers:

  • Application version (e.g., v0.30.0) — the release version, incremented when new features or improvements are added. This is what you see in Docker tags and GitHub releases.
  • Database schema version (e.g., 0.25.2) — the database migration version, only incremented when the database structure changes. Defined in store/migration/SCHEMA_VERSION.

The application version may increase without any database schema change. For example, multiple feature releases can share the same schema version if they only involve frontend or API changes.

Note: You don't need to worry about the database schema version in daily use. It only matters when migrating from the original usememos/memos. The original project ties its database version to the application version — even if the database hasn't changed, the version number still increases with each minor release (e.g., v0.26 → v0.27). So the compatibility range "v0.24.0 ~ v0.26.2" below refers to the original project's application version, not actual database changes.

What's Different

See CHANGELOG.md for a detailed list of features and improvements compared to the original Memos.

Highlights:

  • Tag management with pinning and emoji support
  • Export memos as beautiful images
  • Pinned memos displayed in separate column/drawer
  • Code block collapse/expand
  • Improved calendar heatmap
  • URL-based filter persistence
  • And more...

Features

  • Privacy First - Self-hosted, your data stays with you
  • Markdown Support - Write with familiar markdown syntax, including task lists, code blocks, and more
  • Tag Organization - Organize memos with tags, pin important tags, add emoji icons
  • Timeline View - Browse your memos chronologically with activity heatmap
  • Multi-platform - Access from any device via web browser, responsive design for mobile
  • Lightweight - Minimal resource usage with SQLite as default database
  • RESTful API - Full API support for integration and automation
  • SSO Support - OAuth2 identity provider integration
  • Webhook - Event notifications for automation workflows
  • Multi-language - i18n support for multiple languages

Tech Stack

Frontend Backend
React Go
TypeScript SQLite / MySQL / PostgreSQL
Tailwind CSS gRPC + REST API
Vite

Quick Start

Docker (Recommended)

docker run -d \
  --init \
  --name memos \
  --restart unless-stopped \
  --publish 5230:5230 \
  --volume ~/.memos/:/var/opt/memos \
  chriscurrycc/memos:latest

Then visit http://localhost:5230 in your browser.

Docker Compose

services:
  memos:
    image: chriscurrycc/memos:latest
    container_name: memos
    restart: unless-stopped
    ports:
      - 5230:5230
    volumes:
      - ~/.memos/:/var/opt/memos

Build from Source

See Development Guide for detailed instructions.

Configuration

Memos can be configured via environment variables:

Variable Description Default
MEMOS_PORT Server port 5230
MEMOS_MODE Running mode (prod, dev, demo) prod
MEMOS_DRIVER Database driver (sqlite, mysql, postgres) sqlite
MEMOS_DSN Database connection string ~/.memos/memos_prod.db

Example with MySQL:

docker run -d \
  --name memos \
  --restart unless-stopped \
  --publish 5230:5230 \
  -e MEMOS_DRIVER=mysql \
  -e MEMOS_DSN="user:password@tcp(host:3306)/memos" \
  chriscurrycc/memos:latest

Update

With Watchtower (Recommended)

One-time update:

docker run --rm \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --run-once \
  memos

Scheduled auto-update (e.g., at 3:00 AM UTC+8 daily):

docker run -d \
  --name watchtower \
  --restart unless-stopped \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  -e TZ=Asia/Shanghai \
  containrrr/watchtower \
  --schedule "0 0 3 * * *" \
  memos

Without Watchtower

docker pull chriscurrycc/memos:latest
docker stop memos && docker rm memos
docker run -d \
  --init \
  --name memos \
  --restart unless-stopped \
  --publish 5230:5230 \
  --volume ~/.memos/:/var/opt/memos \
  chriscurrycc/memos:latest

Migration from usememos/memos

If you are migrating from the original usememos/memos project:

Compatibility:

  • From v0.23.0 ~ v0.23.1: Fully compatible
  • From v0.24.0 ~ v0.26.2: Compatible after running the migration repair script below

For detailed information about what changed at the database level and what the repair script does, see the Migration Guide.

WARNING: Back up your data BEFORE migrating. This step is NOT optional.

If the migration fails or produces unexpected results, having a backup is the ONLY way to recover your data. Stop the service first, then copy your data directory (default: ~/.memos/). For MySQL/PostgreSQL users, your database is on an external server, so you also need to run mysqldump/pg_dump. See the Migration Guide for detailed backup instructions.

Migration Repair:

If migrating from upstream v0.24.0 ~ v0.26.2, run the migration repair script before starting this fork's service, to fix database schema differences and create missing tables. The script requires sqlite3, mysql, or psql CLI tools depending on your database driver:

# SQLite (default path: ~/.memos/memos_prod.db)
curl -sL https://raw.githubusercontent.com/chriscurrycc/memos/main/scripts/migration-repair.sh | bash -s -- --driver sqlite --dsn ~/.memos/memos_prod.db

# MySQL
curl -sL https://raw.githubusercontent.com/chriscurrycc/memos/main/scripts/migration-repair.sh | bash -s -- --driver mysql --dsn "user:password@tcp(host:3306)/memos"

# PostgreSQL
curl -sL https://raw.githubusercontent.com/chriscurrycc/memos/main/scripts/migration-repair.sh | bash -s -- --driver postgres --dsn "postgresql://user:password@host:5432/memos"

The script is idempotent and safe to run multiple times.

MCP Server

Use the MCP server to connect AI assistants (Claude Code, Claude Desktop, Cursor, etc.) to your Memos instance:

npx @chriscurrycc/memos-mcp

17 tools for memo CRUD & search, tags, resources, relations, and review — plus 6 workflow prompts (digest, review, relation graph, etc.). See the memos-mcp repo for setup instructions.

Documentation

Contributing

Contributions are welcome! Feel free to:

Acknowledgements

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

If you have any questions, feel free to contact me.

About

My own memo system

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Contributors

Languages

  • Go 48.7%
  • TypeScript 48.3%
  • Shell 2.2%
  • Less 0.4%
  • JavaScript 0.2%
  • Dockerfile 0.1%
  • Other 0.1%