Memos :开源、自托管的备忘录平台

    • #23594

      “Your thoughts, your data, your control — no tracking, no ads, no subscription fees.” 你的想法,你的数据,你的掌控——无追踪、无广告、无订阅费用。


      一、什么是 Memos

      Memos 是一个开源、自托管的备忘录与知识管理平台,旨在提供一个简洁、高效的笔记服务。它基于 Golang(后端)和 React/TypeScript(前端) 开发,支持 Markdown 语法,允许用户轻松捕捉和分享自己的想法。

      你可以将 Memos 理解为一个”没有字数限制的自建 Twitter”——它采用类似社交媒体的时间线界面,让碎片化记录变得轻松自然,同时又具备强大的标签管理和搜索功能。

      🌟 核心理念

      理念说明
      🔒 数据主权所有数据存储在你自己的服务器上,完全由你掌控
      即时捕捉打开即写,一键记录,不打断思维流
      🎯 专注本质拒绝功能膨胀,只做笔记和备忘录的核心功能
      🆓 永久免费MIT 协议开源,无付费墙、无高级版、无隐藏费用

      截至 2026 年初,Memos 项目在 GitHub 上已获得超过 45,000 颗星标,拥有 340+ 贡献者的活跃社区,是自托管笔记领域最受欢迎的项目之一。


      二、主要特点与功能

      2.1 🔐 隐私至上:真正的数据自主

      Memos 将用户隐私置于首位,这是它与 Notion、Evernote 等云端服务的根本区别

      • 零遥测:不收集任何用户数据,无追踪代码、无分析脚本
      • 零外部依赖:完全自包含,无需连接任何外部云服务即可运行
      • 本地化存储:所有数据存储在你选择的数据库中(SQLite/MySQL/PostgreSQL)
      • EXIF 元数据剥离上传图片时自动移除 EXIF 元数据(位置信息、相机信息等),保护隐私安全

      💡 使用场景:如果你是律师、医生、研究人员或任何需要处理敏感信息的专业人士,Memos 的自托管特性可以帮助你满足数据合规要求。

      2.2 ⚡ 轻量高效:专注于速度

      • 本地优先架构(Local-first):即使管理数千条笔记也能实现零延迟响应
      • Go 语言后端:极低的资源占用,即使在树莓派上也能流畅运行
      • 即时保存:输入时自动保存,永不丢失任何一条备忘录
      • 快速创建:主页顶部直接显示输入框,无需点击即可开始记录

      2.3 📝 强大的 Markdown 支持

      Memos 提供完整的 Markdown 编辑体验:

      功能说明
      基础语法标题、粗体、斜体、列表、引用、代码块
      语法高亮支持多种编程语言的代码高亮显示
      表格支持创建和编辑 Markdown 表格
      LaTeX 数学公式支持行内和块级数学表达式渲染
      链接与图片插入超链接和图片资源
      HDR 媒体支持支持 HDR(高动态范围)图片和视频的上传与播放
      流式传输视频/音频文件采用流式加载,解决大文件内存问题

      2.4 🆓 开源免费:MIT 协议

      • 完全开源:所有代码托管在 GitHub
      • MIT 许可证:可自由使用、修改、分发,包括商业用途
      • 社区驱动:功能开发由社区投票和贡献者共同推进
      • 无付费层级:所有功能完全免费,没有”Pro 版”或”企业版”

      2.5 🌐 跨平台支持

      平台支持方式
      🖥️ Web 浏览器任何现代浏览器访问
      🍎 macOSDocker 部署 / 原生二进制
      🐧 LinuxDocker / Docker Compose / 二进制
      🪟 WindowsDocker Desktop / WSL2
      📱 移动端PWA(渐进式 Web 应用)可安装到主屏幕,支持离线使用
      ☁️ 云平台支持 Railway、Kubernetes 等一键部署

      三、安装与部署详解

      3.1 环境准备

      最低要求

      • 1 核 CPU / 512MB 内存(SQLite 模式)
      • Docker 20.10+ 或 Docker Compose v2+
      • 支持的数据库:SQLite(默认)、MySQL 5.7+ / 8.0+、PostgreSQL 12+

      3.2 Docker 快速部署(推荐)

      方式一:使用 docker run 命令

      docker run -d \
        --init \
        --name memos \
        --publish 5230:5230 \
        --volume ~/.memos/:/var/opt/memos \
        -e TZ=Asia/Shanghai \
        ghcr.io/usememos/memos:latest

      参数说明

      参数说明
      -d后台运行容器
      --init添加 init 进程,正确处理信号
      --name memos容器名称
      --publish 5230:5230端口映射(主机端口:容器端口)
      --volume ~/.memos/:/var/opt/memos数据持久化目录(必须配置!)
      -e TZ=Asia/Shanghai设置时区为中国标准时间

      方式二:使用 Docker Compose(生产环境推荐)

      创建 docker-compose.yml 文件:

      services:
        memos:
          image: ghcr.io/usememos/memos:latest
          container_name: memos
          restart: unless-stopped
          ports:
            - "5230:5230"
          volumes:
            - ./data:/var/opt/memos
          environment:
            - TZ=Asia/Shanghai

      启动服务:

      docker-compose up -d

      3.3 数据库配置(进阶)

      默认情况下,Memos 使用 SQLite 数据库,所有数据打包在单个 .db 文件中,备份只需复制该文件即可。

      如需使用 MySQL 或 PostgreSQL,需配置环境变量:

      # MySQL 配置示例
      environment:
        - MEMOS_DRIVER=mysql
        - MEMOS_DSN=user:password@tcp(host:3306)/memos?charset=utf8mb4
      
      # PostgreSQL 配置示例
      environment:
        - MEMOS_DRIVER=postgres
        - MEMOS_DSN=postgresql://user:password@host:5432/memos?sslmode=disable

      从 SQLite 迁移到 MySQL

      /usr/local/bin/memos \
        --driver mysql \
        --dsn 'dbuser:dbpass@tcp(dbhost)/dbname' \
        copydb --from sqlite://path_to_your_memos_prod.db

      3.4 首次使用配置

      1. 访问服务:浏览器打开 http://服务器IP:5230
      2. 注册账户:首个注册用户自动成为管理员(ADMIN)
      3. 设置语言:进入 设置 → 偏好设置 → 语言 选择中文界面
      4. 配置外观:可选择亮色/暗色主题

      ⚠️ 安全提示:生产环境建议配置 Nginx/Caddy 反向代理 + HTTPS 证书


      四、标签系统与智能捷径

      4.1 标签(Tags)

      Memos 采用内联标签设计,在笔记内容中直接使用 #标签名 即可创建标签:

      今天学习了 Docker 部署 #技术笔记 #Docker
      需要准备明天的会议材料 #工作 #待办

      标签特性

      • ✅ 自动识别并高亮显示
      • ✅ 点击标签可筛选相关备忘录
      • ✅ 侧边栏标签云可视化展示
      • 支持嵌套标签(如 #工作/项目A

      4.2 智能捷径(Shortcuts)——2025 新功能

      捷径功能允许你创建可复用的高级筛选器,快速访问符合特定条件的备忘录集合。

      支持的筛选条件

      类型运算符示例
      标签筛选包含、不包含标签包含 #工作
      可见性等于可见性 = 公开
      时间戳大于、小于、区间创建于最近 7 天
      逻辑运算AND、OR、NOT标签含 #工作 AND 创建于本周

      使用场景示例

      • 📋 “本周待办”:筛选本周创建的含 #待办 标签的备忘录
      • 📚 “学习笔记”:筛选所有含 #学习#读书 标签的内容
      • 🔒 “私密日记”:筛选可见性为”私密”的备忘录

      五、API 与第三方集成

      5.1 API 优先设计

      Memos 采用 API 优先(API-First)架构,提供完整的 RESTful 和 gRPC 接口:

      # 获取备忘录列表示例
      curl -X GET "https://your-memos-domain/api/v1/memos" \
        -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

      API 能力

      • 📝 创建、读取、更新、删除备忘录(CRUD)
      • 🏷️ 标签管理
      • 📎 资源文件上传与管理
      • 👤 用户信息获取
      • 🔍 高级搜索

      5.2 Webhook 事件通知

      Memos 支持 Webhook 推送,实现与外部系统的实时集成:

      支持的事件类型

      • memo.created — 新备忘录创建
      • memo.updated — 备忘录更新
      • memo.deleted — 备忘录删除

      集成平台示例

      平台类型示例
      即时通讯Slack、Discord、Microsoft Teams
      自动化工具Zapier、IFTTT、n8n、Make
      项目管理GitHub、GitLab、Jira

      5.3 Telegram Bot 官方集成

      Memogram 是 Memos 官方维护的 Telegram 集成服务,可将 Telegram 消息同步到 Memos:

      功能特性

      • 📨 发送文本消息自动保存为备忘录
      • 🖼️ 发送图片/文件自动保存为资源附件
      • 🔐 支持用户名白名单限制访问

      配置示例(Docker Compose):

      services:
        memogram:
          image: ghcr.io/usememos/telegram-integration:latest
          environment:
            - SERVER_ADDR=memos:5230
            - BOT_TOKEN=your_telegram_bot_token
            - ALLOWED_USERNAMES=your_username

      六、移动端与多端同步

      6.1 PWA 渐进式 Web 应用

      Memos 支持 PWA 技术,可将网页安装为”类原生应用”:

      安装方法

      • iOS(Safari):点击分享按钮 → “添加到主屏幕”
      • Android(Chrome):点击菜单 → “安装应用”
      • 桌面(Chrome/Edge):地址栏右侧安装图标

      PWA 特性

      • ✅ 主屏幕图标快速启动
      • ✅ 全屏沉浸式体验
      • 支持离线访问已缓存内容

      6.2 多端数据同步

      由于 Memos 是 Web 服务,天然具备多端同步能力:

      手机 ←→ Memos 服务器 ←→ 电脑 ←→ 平板
               ↑
            统一数据源

      优势:无需配置同步服务,数据实时一致。


      七、Memos 与其他工具对比

      特性MemosObsidianNotion
      自托管✅ 完全支持❌ 仅本地文件❌ 云端托管
      开源✅ MIT 协议❌ 闭源❌ 闭源
      数据格式SQLite + Markdown纯 Markdown 文件专有数据库
      离线访问✅ 通过 PWA✅ 原生支持⚠️ 有限支持
      协作功能⚠️ 基础支持💰 付费插件✅ 强大
      学习曲线🟢 简单🟡 中等🟡 中等
      资源占用🟢 极低🟡 中等
      适用场景碎片化记录、日记、闪念知识管理、双链笔记团队协作、项目管理

      选择建议

      💡 “Notion 是我工作的地方,Obsidian 是我思考的地方,Memos 是我随手记录的地方。” — 来自 Medium 用户评论

      • 选 Memos:如果你需要快速记录碎片想法、重视隐私、想要自托管
      • 选 Obsidian:如果你需要构建个人知识图谱、喜欢双向链接
      • 选 Notion:如果你需要强大的团队协作和项目管理功能

      八、进阶技巧与最佳实践

      8.1 备份策略

      SQLite 模式(最简单):

      # 定时备份脚本
      cp ~/.memos/memos_prod.db ~/backups/memos_$(date +%Y%m%d).db

      Docker 数据卷备份

      docker run --rm \
        -v memos_data:/data \
        -v $(pwd):/backup \
        alpine tar cvf /backup/memos_backup.tar /data

      8.2 性能优化建议

      场景建议
      备忘录数量 < 5000SQLite 足够
      备忘录数量 > 10000考虑迁移到 PostgreSQL
      多用户高并发使用 PostgreSQL + 连接池
      外网访问配置 CDN 加速静态资源

      8.3 安全加固

      • ✅ 配置 HTTPS(推荐使用 Caddy 自动证书)
      • ✅ 使用强密码并定期更换
      • ✅ 配置防火墙,仅开放必要端口
      • 定期更新到最新版本
      • 限制注册(可在管理后台关闭公开注册)

      九、学习资源

      资源链接
      🏠 官方网站usememos.com
      📖 官方文档usememos.com/docs
      💻 GitHub 仓库github.com/usememos/memos
      🐳 Docker 镜像ghcr.io/usememos/memos
      📣 Telegram 集成github.com/usememos/telegram-integration
      💬 社区讨论GitHub Discussions

      十、小结

      Memos 是一个功能强大且易于使用的开源备忘录工具,特别适合以下用户:

      • 🔒 重视隐私,希望数据完全自主掌控
      • 追求效率,需要快速捕捉碎片化想法
      • 🛠️ 技术爱好者,喜欢自托管开源软件
      • 💰 预算有限,不想为笔记软件付费订阅
      • 🔧 需要定制,希望通过 API 扩展功能

      通过开源和免费的特性,用户可以根据自己的需求进行定制和扩展。无论是个人知识管理、团队协作还是构建公开的微博客,Memos 都能提供简洁而强大的解决方案。

  • 抱歉,回覆主題必需先登入。