自托管思维导图 Wmind 部署指南:Docker 半小时跑起来,桌面端断网可用

23次阅读
没有评论
Wmind 是 Go + React 实现的可自托管思维导图,网页版与桌面端双形态,支持 XMind / Markdown / OPML 双向导入导出,桌面端断网可编辑。本文给出完整的 Docker 部署、反向代理与 HTTPS、备份恢复、AI 接口接法,以及官方文档写明的能力边界。

结论先行:Wmind 是一个 Go + React 实现的思维导图系统,提供网页版与桌面客户端两种形态,同时具备“数据自持”和“跨端共享”——纯桌面工具做不到后者,在线服务放弃了前者。它需要自备一台能跑 Docker 的机器,且不支持多人实时协作。适合个人与小型内部使用,不适合需要同时编辑的团队。

部署完成后你会得到:一个属于自己域名的思维导图站点、一个能在断网时正常工作的桌面应用、以及一份随时能导出成 XMind 的图库。

Wmind · 可自托管的思维导图
先试用再决定:体验站只有网页版,桌面版到仓库下载;数据存哪、模型用谁的,由你自己的配置文件决定。
打开在线体验下载桌面版
公开体验站为演示用途,未开启 AI 功能

一、为什么值得自托管

在线导图工具的痛点不是功能,是三个结构性成本:

资产可迁移性缺失。 导出的文件通常只保留层级,样式、备注、图片引用大量丢失。用户以为在积累知识资产,实际积累的是一份绑定在特定服务上的数据结构。

离线不可用。 纯 Web 应用在无网络时完全失效,而这恰好是深度思考最常发生的场景。

AI 链路不透明。 多数产品无法说明调用哪个模型、文档去往何处、保留多久。

Wmind 的做法是开源 + 自托管 + 桌面客户端三件套。项目自述为“受 Xmind 启发,由 DeepSeek 设计”,定位清晰:把熟悉的功能用开放方式重做一遍。

值得强调的是:它同时支持 XMind 文件的读取与写入。这意味着进入成本低、退出成本也低——这是判断一个自托管工具是否值得投入的核心指标。

二、部署前准备

项目 要求
硬件 任意可运行 Docker 的机器:云服务器、NAS、迷你主机
系统 支持 amd64 / arm64
软件 Docker 与 Docker Compose 插件
网络 一个可访问的端口;建议配置域名与 HTTPS
时间 未配置过 Docker 的情况下约 30–60 分钟

无需额外安装数据库:默认使用 SQLite,数据即一个文件。

三、Docker 部署完整步骤

Wmind 部署三步:生成密钥写入 .env 的 WMIND_JWT_SECRET、docker compose 启动两个容器、curl 健康检查通过后登录
部署三步:生成密钥 → 起服务 → 验证登录

步骤 1:获取编排文件

bash
git clone https://github.com/woliubang256/wmind.git
cd wmind/deploy

步骤 2:生成并写入密钥

bash
cp .env.example .env
openssl rand -base64 48

将输出写入 .env 的 WMIND_JWT_SECRET。

常见错误:该值必须不少于 32 字节。手工输入短字符串会导致服务启动失败,且错误信息不直观。务必使用 openssl 生成。

步骤 3:启动服务

bash
docker compose pull
docker compose up -d --no-build

默认形态为 SQLite,共两个容器。

步骤 4:验证健康状态

bash
curl -s http://localhost:8080/api/v1/health/ready
# {"data":{"checks":{"database":"ok"},"status":"ok"},"requestId":"01J..."}

返回中 status 为 ok 即部署成功。

步骤 5:切换 PostgreSQL(可选)

bash
docker compose -f docker-compose.postgres.yml pull
docker compose -f docker-compose.postgres.yml up -d --no-build

三个必须注意的约束

  1. SQLite 形态为单 API 实例,数据库卷必须使用本地存储,不可挂载网络盘。需要多实例才切换 PostgreSQL。
  2. 切换数据库驱动不会迁移已有数据。 数据库选择应在首次部署时确定,或先导出再导入。
  3. 前端与后端同源部署时无需处理跨域;若拆分域名,需配置反向代理转发 /api。

四、反向代理与 HTTPS

生产环境不建议直接暴露 8080。以下为通用配置思路(以常见反向代理为例):

nginx
server {
    listen 443 ssl;
    server_name mind.example.com;

    client_max_body_size 64m;   # 导入上限为 50 MB,留出余量

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

两个要点:client_max_body_size 需大于导入上限(50 MB),否则大文件导入会返回 413;X-Forwarded-Proto 必须传递,否则站点生成的分享链接可能出现协议错误。 反代后外网仍然打不开的情况,可以先按容器端口已映射却访问不了和端口映射排查两篇的顺序查一遍。

五、备份与恢复

Wmind 内置三种备份目标:本地目录、S3、WebDAV,支持定时备份、保留份数与可选去重。

对于 SQLite 形态,最朴素也最可靠的方案是定期复制数据库文件:

bash
# 示例:每日 3 点打包数据目录
0 3 * * * tar -czf /backup/wmind-$(date +\%F).tar.gz /path/to/wmind/data

配合内置的定时备份到 S3 或 WebDAV,可形成“本地快照 + 异地副本”的双层保障。对个人用户而言,这两层已经足够。 备份跑起来之后,建议顺手看一眼NAS 硬盘 SMART 警告时先备份还是先检测,自托管的数据安全最终落在同一套判断上。

六、首次登录与安全配置

首次启动时,users 表为空,后端会使用 .env 中的 WMIND_ADMIN_EMAIL / WMIND_ADMIN_PASSWORD 创建第一个管理员。示例值为 admin@wmind.local / change-me-please。

登录后必须立刻修改密码。 系统一期没有自助找回密码功能,遗忘后只能由管理员在后台重置,且新密码只显示一次。

建议同时完成以下配置:

  • 开启双因素认证:验证器动态码 + 10 个一次性恢复码(仅显示一次,需自行保存)
  • 在「网站设置」中关闭开放注册(若仅个人使用)
  • 调整登录失败次数上限与锁定时长
  • 配置站点名称、Logo、对外地址(影响分享链接的域名)

七、桌面端安装

在项目 Releases 页下载对应安装包:

平台 包类型
macOS Wmind-<版本>-arm64.dmg / -amd64.dmg
Windows Wmind-<版本>-windows-*.zip(免安装)、wmind-setup-<版本>-*.exe(安装版)
Linux wmind_<版本>_amd64.deb / _arm64.deb,或 wmind-<版本>-linux-*.tar.gz + install.sh

Linux 依赖系统 WebView,需安装 libwebkit2gtk-4.1-0 与 libgtk-3-0(deb 包自动声明依赖)。Arch 用户另有 PKGBUILD。

首次打开可能被系统拦截,因为未做签名分发。在「系统设置 → 隐私与安全性」中允许一次即可,不是安全问题。

桌面端的价值在于离线完整可用:编辑、导入导出、主题模板、AI 配置、备份全部不需要网络。这不是缓存式的伪离线,而是内置了同一套后端服务在本地运行。

八、两种形态的差异

Wmind 网页版与桌面版对比:网页版数据存在自建服务器、断网不可用;桌面版内置同一套后端,数据在本机,断网也能完整编辑
两种形态、同一套后端,差别在数据位置与能否离线
维度 网页版 桌面版
运行方式 浏览器访问自托管站点 独立应用,内置本地后端
数据位置 服务器数据库 本机(macOS:~/Library/Application Support/wmind)
断网 不可用 完整可用
多端同步 天然共享 连接自托管服务器后同步,导图带「本地 / 云端」标识
账号 站点账号 默认单本地用户;登录云端后可用分享与网站设置

桌面端采用本地优先策略:先写本地,再按需同步。同一张图两端都修改过时,系统不会静默覆盖,而是提供三个处理方案——保留我的 / 放弃我的 / 另存为副本,三者均不销毁数据。

实践中建议固定选择「另存为副本」:冲突本身说明两边的修改都有价值,合并比取舍安全。

九、编辑能力清单

布局与外观

  • 9 种布局:思维导图、逻辑图(向右)、逻辑图(向左)、树状图、组织架构图、时间轴、鱼骨图、括号图、树型表格。布局仅作用于当前画布。
  • 19 套内置配色:缤纷 10 套 + 经典 9 套。配色作用于整份导图,所有画布同步变更。
  • 自定义主题:保存整套外观(配色 + 背景 + 字体 + 线宽 + 彩虹分支 + 布局),上限 50 套。
  • 8 个内置模板,用户自建模板上限 50 个。
  • 节点形状支持矩形、圆角矩形、胶囊、椭圆、圆形、菱形、六边形、平行四边形、仅下划线、无形状。
  • 支持浅色 / 深色模式与中英文切换。

交互细节

  • Tab 创建子主题,Enter 创建同级,F2 或双击改文字,Shift+Enter 换行。
  • 方向键按节点几何位置跳转,而非创建顺序;Ctrl/⌘ + ← 回到父节点,→ 进入首个子节点。
  • 拖动落点规则:目标上方 25% 插到前面,中间 50% 成为子主题,下方 25% 插到后面,远离节点则成为自由主题。
  • 自动保存:停止输入约 0.8 秒落盘,持续输入最多 5 秒强制保存。
  • 本地草稿:编辑器每隔数秒写入浏览器本地,重开时提示恢复,保留 7 天。
  • 多画布:一份文档挂多个画布,底部标签切换;大纲视图与画布实时同步。
  • ZEN 模式:收起面板与多余按钮,仅保留画布。

体积上限

单张导图总大小上限 8 MiB,附件单批不超过 2 MiB / 100 个文件,本地图片单张不超过 8 MiB。

十、导入导出

方向 格式
导入 XMind(兼容现代 zip + content.json 与 XMind 8 的 content.xml)、Markdown、OPML
导出 JPEG、PNG、SVG、PDF、XMind、Markdown、OPML

导入在浏览器本地解析,不上传服务器。限制为:文件 ≤ 50 MB、解压总量 ≤ 200 MB、节点 ≤ 20000、单标题 ≤ 2000 字、还原图片 ≤ 100 张。

必须知道的边界:

  • 带密码的 XMind 无法导入,需先在 XMind 中去掉密码。
  • 导出的 XMind 为 2020 之后格式,XMind 8 打不开。
  • 导出样式为显式值,在 XMind 中更换主题不改变外观;字体不写入文件。
  • PDF 导出为位图方案,文字不可选中、不可搜索。需要可检索文字请导出 SVG。

导出参数较完整:内容范围(当前 / 全部画布)、倍率(1×–4× 或 0.5–8 自定义)、留白(无 / 24 / 40 / 80 px)、长宽比(跟随内容 / 16:9 / 4:3 / 1:1 / 9:16)、PNG 透明背景、边框、日期、品牌标识。

十一、AI 功能配置

Wmind 公开演示站与自部署的 AI 差异:公开站为避免滥用默认关闭,自部署填地址、密钥、模型即可开启
AI 默认关闭是运营策略,自部署可自行开启

这一节需要特别澄清,因为多数二手介绍存在偏差。

AI 功能出厂默认关闭,公开演示站同样未开启该开关——目的是防止被滥用。 因此在 xmind.8duhu.com 上看不到 AI 入口。这是运营策略,不是功能缺失。

自部署的意义正在于此:管理员在「网站设置 → AI」中填写兼容 OpenAI 协议的 Base URL、API Key、Model 名称,并手动启用即可。

启用后的输入能力:

  • 文字要求(合计 ≤ 10 万字符)
  • 文本文件:TXT、Markdown、CSV、TSV、JSON、YAML、XML、LOG、INI、CONF、TOML
  • Office:.docx、.xlsx(仅提取正文与单元格)
  • PDF:每份 ≤ 20 页,无文字页转图片处理(需模型支持视觉)
  • 图片:PNG、JPEG、WebP、GIF(动画仅取首帧)

单次最多 5 份素材,单份 ≤ 20 MB,合计 ≤ 30 MB。生成结果上限 500 个节点、12 层,需人工核验后保存。

「思考等级」默认不传,可选 none / minimal / low / medium / high / xhigh / max,实际是否生效取决于所配模型。

桌面端同样可配置,且配置存储于本地,不需要站点管理员授权——即使不部署服务器,仅使用桌面版也能接通 AI。

隐私提示:素材会发送至你配置的 Provider。数据流向由配置决定,而非由服务商决定。

十二、分享机制

生成的公开只读链接,访客无需注册与安装即可查看,可缩放画布、折叠展开节点,但不可编辑。

可配置项:

  • 访问密码:留空为无密码,可随机生成或手填,长度 ≥ 4 位
  • 有效期:永久 / 1 / 7 / 30 / 90 / 365 天
  • 允许下载:仅为降低使用门槛,不构成访问控制
  • 显示备注:关闭时由服务端剥离

单张导图链接数量默认上限 20 条。失效时统一显示同一失效页,不区分撤销 / 过期 / 删除 / 全局关闭。

十三、能力边界

Wmind 能力边界:支持 9 种布局、19 套配色、XMind 双向导入导出;不支持多人实时协作、指定用户共享、原生 App 与版本历史
能做什么、不能做什么:依据官方文档整理,不做美化

按官方文档原样列出,不做美化:

能力 状态
多人实时协作 不支持。同时仅一人可编辑,第二人会触发冲突提示
指定用户共享 不支持。仅有公开链接
自助找回密码 不支持。无邮件通道,仅管理员重置
邮箱验证 不支持。注册即生效
演说模式 一期未开放
版本历史 不支持。仅撤销与回收站
手机 App 无。手机浏览器可用,窄屏编辑体验一般
图库、甘特图 一期不做

此外:概要 / 边界不支持拖动改变覆盖范围;联系线不会自动避让中间主题;回收站内容不会自动过期,需手动清理。

十四、横向对比

方案 数据归属 离线 XMind 互通 协作 成本
商业在线导图 服务商 部分 通常单向 强 订阅制
Wmind 自托管 自有服务器 桌面端完整支持 双向 无 服务器 + 自备模型 API
纯桌面单机工具 本机 完整 视工具而定 无 一次性买断
笔记软件的导图插件 视平台 视平台 弱 视平台 随主产品

Wmind 的差异化位置很明确:同时具备“数据自持”与“跨端共享”。纯桌面工具做到了前者但没有后者,在线服务做到了后者但放弃了前者。

十五、常见问题

Wmind 是否免费? 代码采用 MIT 协议,可自由部署与修改。实际成本来自服务器与模型 API,取决于使用量。

公开演示站能用 AI 吗? 不能。该站为避免滥用未开启 AI 开关。自部署可在网站设置中自行配置 Provider 后启用。

支持多人协作吗? 不支持同时编辑。这是架构现状,不是配置问题。

能导入 XMind 老文件吗? 可以,兼容现代格式与 XMind 8 格式。带密码的文件需先去掉密码。

导出的 PDF 为什么选不中文字? PDF 采用位图方案。需要可检索文字请导出 SVG。

换 PostgreSQL 后数据会迁移吗? 不会。切换驱动不迁移已有数据,需自行导出导入。

手机能用吗? 浏览器可用,但没有 App,窄屏编辑体验一般。

桌面端连不上服务器? 检查反向代理是否传递 X-Forwarded-Proto,以及站点「对外地址」配置是否与实际域名一致。

十六、系列文章

这是「自托管工具实践」系列的第 1 篇。后续计划:

  1. 《Wmind 在 NAS 上的完整部署:反向代理、HTTPS 与自动备份》——面向 Synology / 群晖用户的手把手版本
  2. 《Wmind 与 XMind 文件互转实测:哪些样式会丢》——迁移前必读
  3. 《给 Wmind 接自己的模型:兼容 OpenAI 接口配置详解》——含成本估算
  4. 《自托管工具的选型标准:我用三个指标筛掉了九成项目》——方法论

订阅方式:RSS /feed/,复制到任意阅读器即可。

结论

Wmind 不是功能全面超越商业产品的项目。协作、移动端、生态三方面都有明确短板,官方文档也如实列出。

但它在“工具归属权”这个问题上给出了不同答案:数据存在哪、模型用谁的、链接多久失效、谁能查看——这些参数从服务商的商业策略,变成了你自己配置文件里的条款。

对需要长期维护的知识资产,这种确定性比多两个功能更有价值。对需要团队实时共创的场景,它现阶段确实不合适。

本文基于 Wmind 1.1.4 版本与官方文档整理,功能行为以实际部署版本为准。

正文完
 0
Ticifer
版权声明:本站原创文章,由 Ticifer 于2026-11-13发表,共计6425字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。