Decentralization? We're still early!

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

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

    發布人 Brave 2024-08-27 14:54

    "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 都能提供简洁而强大的解决方案。

    Brave 回复 10 months, 3 weeks ago 1 成員 · 0 回复
  • 0 回复

歡迎留言回复交流。

Log in to reply.

讨论開始
00 回复 2018 年 6 月
現在