私有 Markdown 笔记部署:Docker 一键部署 Memos 笔记
本文基于 neosmemo/memos:stable 镜像实测版本0.29.1Ubuntu 24.04 服务器实测怕笔记放 Notion、飞书、语雀数据不在自己手里Memos是一款开源、可自托管的轻量笔记服务——镜像约20MB默认SQLite一条docker run就能跑。打开浏览器写 Markdown、打#标签、按时间线翻旧笔记手机电脑同步访问数据全在你自己的服务器上。本文带你完成一次Memos 一条命令 Docker 部署从轩辕镜像拉取、docker run一键启动、读懂启动日志到浏览器注册管理员、切换中文界面、写下第一条 memo——全程零基础可跟做文末附6 张实测截图。国内用户从 Docker Hub 拉取neosmemo/memos可能较慢本文使用 轩辕镜像 加速域docker.xuanyuan.run。官方文档见 usememos.com/docs源码仓库 usememos/memos。一、Memos 是什么Memos是一款开源、自托管的轻量笔记服务主打「打开就写、数据在自己手里」。核心能力能力说明快速记录时间线 UI打开即写无需文件夹层级数据自主自托管部署笔记以 Markdown 存储零遥测极轻量单 Go 二进制Docker 镜像约20MB默认SQLite无需 MySQL / Redis可扩展MIT 许可提供 REST 与 gRPC API便于二次集成典型使用场景个人灵感库、碎片待办、读书摘抄小团队轻量知识库数据不经过第三方 SaaS替代部分 Notion / 飞书文档的「随手记」场景强调隐私与简单与云笔记的区别Memos 没有复杂协作与模板市场胜在部署简单、资源占用极低、数据完全可控。若需要块级编辑与知识图谱可考虑 SiYuan 等更重型的方案。二、环境要求项目建议操作系统Linux本文 Ubuntu 24.04Docker已安装 Docker 与 Docker Compose V2内存≥ 512 MB空闲约 5080 MBCPU单核即可双核更从容磁盘≥ 1 GB镜像 SQLite 附件端口5230Memos 默认 Web 端口验证 Dockerdocker--versiondockercompose version若尚未安装 Docker可使用轩辕镜像一键脚本bash(wget-qO- https://xuanyuan.cloud/docker.sh)更多安装说明见 轩辕镜像使用手册。三、快速体验单容器部署适合个人试用、内网随手记、资源有限的 VPS。3.1 创建数据目录sudomkdir-p/www/wwwroot/memos/datasudochown-R$USER:$USER/www/wwwroot/memoscd/www/wwwroot/memos3.2 拉取并启动容器拉取镜像若已拉取可跳过dockerpull docker.xuanyuan.run/neosmemo/memos:stable启动 Memosdockerrun-d\--namememos\--restartunless-stopped\-p5230:5230\-v/www/wwwroot/memos/data:/var/opt/memos\docker.xuanyuan.run/neosmemo/memos:stable各参数说明配置说明-p 5230:5230对外暴露 Web 访问端口-v ...:/var/opt/memos持久化 SQLite 数据库与本地附件stable生产推荐标签实测对应0.29.1--restart unless-stopped宿主机重启后自动拉起官方镜像轩辕镜像加速拉取neosmemo/memos:stabledocker pull docker.xuanyuan.run/neosmemo/memos:stable3.3 验证启动查看日志dockerlogs-fmemos成功时终端类似输出Ubuntu 24.04 实测time2026-06-28T05:11:44.804Z levelINFO msginitializing new database with latest schema time2026-06-28T05:11:44.826Z levelINFO msgdatabase initialized successfully schemaVersion0.28.1 Memos 0.29.1 started successfully! Data directory: /var/opt/memos Database driver: sqlite Server running on port 5230 Access your memos at: http://localhost:5230 Happy note-taking!看到Memos 0.29.1 started successfully!与Server running on port 5230即表示启动成功。另开终端快速探测curl-Ihttp://127.0.0.1:5230应返回 HTTP200或302重定向到登录/注册页。日志提示首次打开浏览器时可能出现refresh token not found的client error属于未登录时的正常请求不影响使用。确认容器状态dockerps|grepmemos3.4 首次注册创建管理员账户浏览器打开http://你的服务器IP:5230首次访问会进入创建账户页面。第一个注册的用户自动成为站点管理员Memos 无固定默认账号密码。填写用户名与密码点击注册即可登录。安全提示若对公网开放 5230请尽快完成注册避免他人抢先注册成为管理员。生产环境建议关闭公网直连改用第五节 Compose 反向代理 HTTPS。3.5 登录后主界面注册成功后会进入 Memos 主界面左侧为日历、标签与导航中间上方为「Any thoughts…」输入框下方为时间线 feed。此时还没有任何 memo会显示「No data found.」属正常状态。3.6 切换简体中文默认界面为英文。点击左下角用户头像→Language→ 选择简体中文界面即可切换为中文。切换后搜索框变为「搜索备忘录…」输入框提示变为「此刻的想法…」标签区提示「您可以通过输入 ‘#标签’ 创建标签」。3.7 写第一条 memo在输入框中写下内容例如记录我此时此刻的想法。点击保存。memo 会按时间线展示在下方支持私有 / 公开可见性切换。日常用法速记正文中写#工作、#灵感会自动生成标签点标签可筛选顶部搜索框按关键词检索标题与正文手机浏览器访问同一地址即可跨设备同步数据在自建服务器上3.8 附件与多媒体可选输入框左侧「」可插入更多内容不限于纯文字菜单项用途Media插入图片、视频录制音频浏览器内录音适合语音备忘文件上传附件链接备忘录关联另一条 memo添加位置为 memo 附加地理位置更多展开其他扩展项3.9 捷径过滤器可选Memos 支持用表达式创建捷径Shortcut快速筛选 pinned、特定标签、未完成待办等。点击左侧捷径图标 →创建捷径可参考右侧示例示例表达式含义置顶pinned仅显示置顶 memo近 1 小时created_ts now() - 60 * 60最近一小时内创建工作标签tag in [work]含指定标签四、生产推荐Docker Compose适合长期运行、需要可复现配置、便于git管理部署文件的场景。4.1 目录结构cd/www/wwwroot/memos将包含/www/wwwroot/memos/ ├── docker-compose.yml └── data/ # SQLite 与附件自动创建4.2 编写docker-compose.ymlservices:memos:image:docker.xuanyuan.run/neosmemo/memos:stablecontainer_name:memosrestart:unless-stoppedports:-5230:5230volumes:-./data:/var/opt/memosenvironment:MEMOS_PORT:5230MEMOS_DRIVER:sqlite# 生产环境填公网 URL便于链接、Cookie 与分享正确# MEMOS_INSTANCE_URL: https://memos.example.com4.3 启动与运维dockercompose up-ddockercomposepsdockercompose logs-fmemos常用运维命令# 查看日志dockercompose logs-fmemos# 停止保留 data 目录dockercompose down# 升级拉新镜像后重建dockercompose pulldockercompose up-d4.4 可选PostgreSQL 后端默认SQLite对个人与小团队足够。若用户较多或需独立数据库备份可改用 PostgreSQLservices:memos:image:docker.xuanyuan.run/neosmemo/memos:stablecontainer_name:memosrestart:unless-stoppedports:-5230:5230volumes:-./data:/var/opt/memosenvironment:MEMOS_DRIVER:postgresMEMOS_DSN:postgresql://memos:请改为强密码memos-db:5432/memos?sslmodedisableMEMOS_INSTANCE_URL:https://memos.example.comdepends_on:-memos-dbmemos-db:image:docker.xuanyuan.run/library/postgres:16-alpinecontainer_name:memos-dbrestart:unless-stoppedenvironment:POSTGRES_USER:memosPOSTGRES_PASSWORD:请改为强密码POSTGRES_DB:memosvolumes:-memos_pgdata:/var/lib/postgresql/datavolumes:memos_pgdata:使用外部数据库时./data卷仍用于本地附件等实例数据请一并备份。4.5 生产环境注意HTTPS将 Memos 放在 Nginx、Caddy 或 Traefik反向代理之后对外只暴露 443。详见 官方反向代理文档。MEMOS_INSTANCE_URL设为公网 URL如https://memos.example.com确保分享链接与登录 Cookie 正确。备份定期备份./data目录含memos_prod.db与上传文件使用 PostgreSQL 时另备份数据库卷。防火墙若必须直连端口可sudo ufw allow 5230/tcp云服务器需在安全组放行。更推荐仅反代对外、5230 仅内网访问。4.6 镜像标签说明标签适用场景stable生产推荐跟随稳定发布线实测0.29.10.29.1等版本号完全固定版本便于审计与回滚latest偏开发向不建议生产使用五、常用环境变量速查摘自 官方 Docker 文档变量默认用途MEMOS_PORT5230HTTP 监听端口MEMOS_ADDR空绑定地址空 所有网卡MEMOS_DATA/var/opt/memos数据目录MEMOS_DRIVERsqlite数据库类型sqlite/postgres/mysqlMEMOS_DSN自动postgres / mysql 连接串MEMOS_INSTANCE_URL空实例公网访问地址MEMOS_MODEprod运行模式prod/dev/demoMEMOS_LOG_LEVELinfo日志级别debug/info/warn/error六、常见问题 FAQQ15230端口被占用怎么办单容器启动时改映射例如宿主机用 8080dockerrun-d--namememos--restartunless-stopped\-p8080:5230\-v/www/wwwroot/memos/data:/var/opt/memos\docker.xuanyuan.run/neosmemo/memos:stable浏览器访问http://服务器IP:8080。Compose 中把ports改为8080:5230即可。Q2数据存在哪里宿主机挂载目录上例为/www/wwwroot/memos/data容器内路径为/var/opt/memos。其中包含 SQLite 数据库如memos_prod.db与用户上传的附件。删除该目录会丢失全部笔记升级镜像时请勿删除此目录。Q3如何升级 Memos# 单容器dockerpull docker.xuanyuan.run/neosmemo/memos:stabledockerstop memosdockerrmmemos# 再执行第三节 docker rundata 卷不变# Composecd/www/wwwroot/memosdockercompose pulldockercompose up-dQ4日志里出现refresh token not found正常吗正常。首次打开页面、尚未登录时浏览器会尝试刷新 token服务端返回Unauthenticated并记一条client error不影响注册与使用。注册登录后该日志一般不再出现。Q5忘记密码怎么办Memos 无内置「忘记密码邮件」的默认流程需参考官方文档或通过数据库重置。请参阅https://usememos.com/docs建议在注册时使用强密码并妥善保存生产环境可限制注册或仅内网访问。Q6与 Docker Hub 官方镜像neosmemo/memos的关系功能相同。docker.xuanyuan.run/neosmemo/memos:stable为轩辕镜像加速的 Docker Hub 同步版便于国内拉取。配置中将镜像名替换为轩辕域即可其余命令与官方文档一致。Q7可以多人同时使用吗可以。管理员可在设置中管理用户与权限。小团队用 SQLite 通常足够用户量较大时建议第四节 PostgreSQL 方案。Q8如何停止与卸载# 单容器保留 data 目录dockerstop memosdockerrmmemos# Compose保留 data 目录cd/www/wwwroot/memosdockercompose down# 删除数据目录慎用笔记将全部丢失rm-rf/www/wwwroot/memos/dataQ9容器启动后浏览器无法访问依次检查docker ps确认容器为Updocker logs memos看报错本机curl -I http://127.0.0.1:5230是否通云服务器安全组 / 防火墙是否放行 5230若仅绑定了内网 IP需用正确地址访问。七、命令速查操作命令拉取镜像docker pull docker.xuanyuan.run/neosmemo/memos:stable快速启动docker run -d --name memos --restart unless-stopped -p 5230:5230 -v /www/wwwroot/memos/data:/var/opt/memos docker.xuanyuan.run/neosmemo/memos:stableCompose 启动cd /www/wwwroot/memos docker compose up -d查看日志docker logs -f memos或docker compose logs -f memos健康检查curl -I http://127.0.0.1:5230Web 访问http://服务器IP:5230停止服务docker stop memos docker rm memos八、延伸阅读主题链接项目首页https://usememos.com官方文档https://usememos.com/docsDocker 部署https://usememos.com/docs/deploy/dockerDocker Composehttps://usememos.com/docs/deploy/docker-compose反向代理 / HTTPShttps://usememos.com/docs/deploy/reverse-proxy在线 Demohttps://demo.usememos.com/GitHub 源码https://github.com/usememos/memos轩辕镜像页https://xuanyuan.cloud/zh/r/neosmemo/memos轩辕镜像https://xuanyuan.cloud总结Memos 私有化轻量 Markdown 笔记镜像 20MB、一条命令就能跑。个人试用选第三节单容器浏览器注册管理员 → 切换中文 → 写 memo长期运行选第四节 Compose配合数据备份与反向代理 HTTPS笔记数据完全在自己服务器上。