ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

WeKan:基于 Meteor 的开源看板系统——Docker 部署、源码构建与开发环境搭建指南

2026/9/14 17:54:39 拓冰建站 浏览量
WeKan:基于 Meteor 的开源看板系统——Docker 部署、源码构建与开发环境搭建指南 WeKan基于 Meteor 的开源看板系统——Docker 部署、源码构建与开发环境搭建指南【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekanWeKan 是一个采用 MIT 许可证发布、基于 Meteor 框架开发的开源协作看板Kanban应用支持自托管部署让用户在完全掌控自己数据的前提下进行任务可视化管理。本文基于 WeKan 仓库的 README.md 及其引用的 docker-compose.yml、build.sh、package.json 等真实文件展开覆盖从 Docker 一键部署、生产环境要求、数据库备份恢复到源码构建和开发服务器运行的完整流程并补充源码级的架构与入口文件说明帮助读者快速上手 WeKan 的运维与二次开发。一、项目定位为什么选择自托管的开源看板WeKan 的核心价值在于它是完全开源Open Source与自由软件Free software的协作看板采用非常宽松的 MIT 许可证基于 Meteor 生态中的 Meteor 框架构建。与 SaaS 看板不同你可以把 WeKan 安装在自己的电脑或服务器上无需把数据交给第三方。适用场景包括个人待办清单、多人假期计划、团队协作项目跟进等——看板通过列List和卡片Card提供项目当前状态的可视化总览让人能聚焦于最重要的少数事项。从仓库实际状态看当前代码库的关键版本信息如下以 package.json 为准项目名称与版本wekan当前版本v11.72.0许可证MIT见 LICENSEMeteor 入口模块meteor.mainModule配置客户端为 client/main.js服务端为 server/main.js运行时main 分支使用 Meteor 3.5 与 Node.js 24.x。仓库中 .meteor/release 实际内容为METEOR3.5.2开发前可据此确认本地 Meteor 版本是否匹配。此外WeKan 已翻译到 234 种语言仓库 imports/i18n/data 目录下存有 246 个翻译数据文件界面为实时real-time更新这是由 Meteor 的 DDP 数据发布订阅机制支撑的核心特性。二、Docker 部署镜像源与默认 compose 文件2.1 官方镜像源README 提供了三个镜像分发渠道均使用latest标签跟踪最新发布版本镜像源镜像引用GitHub Container Registryimage: ghcr.io/wekan/wekan:latestDocker Hubimage: wekanteam/wekan:latestRedHat Quay.ioimage: quay.io/wekan/wekan:latestREADME 特别说明latest标签即最新 release可直接用它获取最新发布。2.2 默认 docker-compose.ymlFerretDB v1 内嵌 SQLite仓库根目录的 docker-compose.yml 是 WeKan 的默认编排文件。与早期“MongoDB 必选”的认知不同当前默认配置使用 FerretDB v1wekan/FerretDB 分支配合其内嵌的纯 Go SQLite 后端FerretDB 在:27017端口提供 MongoDB 线协议兼容服务不需要独立的 PostgreSQL 或 MongoDB 服务器所有数据存放在 SQLite 文件挂载于 volume 的/data/sqlite容器启动时按需下载与当前 CPU 架构匹配amd64、arm64、ppc64le、s390x、riscv64 等的 FerretDB 二进制并校验 SHA256缓存于 volume仅在 release 版本变化时重新下载关键启动参数见 docker-compose.yml 中ferretdb服务--handlersqlite --sqlite-urlfile:/data/files/db/ --listen-addr0.0.0.0:27017 --telemetrydisablehealthcheck保证 WeKan 前端容器通过depends_on: condition: service_healthy等待数据库真正可连接后才启动避免首次启动时出现“Connection reset by peer”。WeKan 应用容器container_name: wekan-app的关键环境变量同样值得注意- DEFAULT_METEOR_REACTIVITY_ORDERpolling # FerretDB v1 部署仅支持轮询 - METEOR_REACTIVITY_ORDERpolling - DDP_TRANSPORTsockjs # 官方唯一随包提供的 DDP 传输层 - WRITABLE_PATH/data # 附件/头像等文件上传的可写路径 - MONGO_URLmongodb://ferretdb:27017/wekan仓库还附带了多种数据库组合的 compose 变体可按需替换docker-compose-ferretdb-v1-postgresql.yml、docker-compose-ferretdb-v1-mysql.yml、docker-compose-ferretdb-v1-mariadb.yml、docker-compose-ferretdb-v1-sap-hana.ymldocker-compose-ferretdb-v2-postgresql.ymldocker-compose-mongodb-v7.ymlMongoDB 7支持副本集/变更流实时响应docker-compose-multitenancy.ymlMongoDB 多租户示例基本操作命令# 启动默认 compose 文件无需 -f 参数 docker compose up -d # 跟踪日志 docker compose logs -f # 停止 docker compose down三、生产环境要求与运维底线README 的 Requirements 一节给出了明确的硬件与安全底线生产部署前必须逐条核对内存WeKan 至少需要 1 GB 空闲 RAM生产服务器建议总内存最低 4 GB。千用户级规模参考架构3 台前端服务器各 2 CPU各运行 2 个 wekan-app 容器 1 台多 CPU 后端 wekan-db 服务器见 docker-compose.yml 的容器命名。磁盘预留足够磁盘空间并配置低磁盘告警。磁盘写满会导致 MongoDB 数据库损坏。安全频繁升级到最新版 WeKan。旧版本因 Node.js 等依赖老旧而存在安全问题官方仅支持最新版若使用 Snap/Sandstorm请确认未关闭自动更新。备份WeKan 数据库至少每天备份一次。Bug、升级、用户误删、磁盘故障都可能丢失数据且目前尚无“撤销”机制某些 Bug 可能导致看板无法加载需要手工修复数据库内容。备份方法参考 docs/Backup/Backup.md。3.1 数据库备份与恢复Docker 环境docs/Backup/Backup.md 给出 Docker 场景下的标准流程注意不要执行docker compose down它可能删除数据# 备份 docker stop wekan-app docker exec wekan-db rm -rf /data/dump docker exec wekan-db mongodump -o /data/dump docker cp wekan-db:/data/dump . docker start wekan-app # 恢复 docker stop wekan-app docker exec wekan-db rm -rf /data/dump docker cp dump wekan-db:/data/ docker exec wekan-db mongorestore --drop --dir/data/dump docker start wekan-app四、翻译工作流Transifex 与 en.i18n.jsonWeKan 的多语言翻译有明确的分工规则README “Translate WeKan” 一节非英语语言的翻译仅通过 Transifex 网页端提交外部平台不在本仓库进行新功能产生的新英文字符串可以 PR 方式提交到主分支的 imports/i18n/data/en.i18n.json 文件。这也解释了 imports/i18n 目录的结构data/下存放各语言 JSON 翻译数据仓库另有翻译填充与完整性相关的测试如 tests/fillTranslationsInvariantSources.test.cjs守护翻译数据质量。五、源码构建build.sh 三阶段工作流5.1 前置条件从源码构建 WeKan 前README 要求准备Git克隆仓库Node.js 24.xWeKan 对 Node 大版本有硬性要求main 分支Meteor构建所依赖的 JavaScript 全栈框架当前为 3.5 线。5.2 build.sh 两级菜单build.shWindows 用户对应 build.bat是一个交互式两级菜单脚本。顶层分类菜单源码中select cat in ...定义见 build.sh 第 2633 行附近为1) Setup 2) Dev server 3) Tests 4) Docker 5) Releases 6) CLI commands 7) Tools 8) QuitREADME 描述的六项分类是当前完整菜单的子集各子菜单内均带Back返回项。常用子项包括SetupInstall dependencies安装 WeKan 依赖、Build WeKan release bundle/Build WeKan development bundle构建发行版/开发版 bundle、git pull/git push带 CHANGELOG 提交链接校验的智能包装Dev serverlocalhost:3000、带 trace warnings 的调试模式、带 bundle visualizer 的可视化模式、CURRENT-IP:3000、指定MONGO_URL指向 27019、自定义 IP/端口、Kill all dev servers释放 3000/3001/3100/3101/4000/4001/8080 端口TestsEVERYTHING全量测试two-worker / 单阶段 / 并发三种模式、Mocha 服务端单测安全API 逻辑测试、导入回归、Playwright 各浏览器套件、FerretDB 测试、全数据库一致性对比sequential对比各数据库对同一查询集的回答是否一致等。5.3 三阶段构建命令# 克隆你的 fork git clone gitgithub.com:YOUR_USERNAME/wekan.git cd wekan # 使脚本可执行 chmod x build.sh # 阶段 1安装依赖Setup - Install dependencies ./build.sh # 输入 1Setup回车再输入 1Install dependencies回车 # 阶段 2构建 WeKanSetup - Build WeKan依赖完成后 ./build.sh # 输入 1Setup回车再输入 2Build WeKan回车 # 阶段 3启动开发服务器Dev server - localhost:3000 ./build.sh # 输入 2Dev server回车再输入 1localhost:3000回车行为细节README 明确说明若目标端口已有 dev server 在运行Dev server菜单项会自动停掉旧服务器并在同一端口启动全新服务器无需手工清理进程。5.4 WSL 用户说明README 建议 WSL 用户直接使用 Snap Candidate 渠道安装见官方安装文档而非在 WSL 内跑完整源码构建流程。六、代码架构速览从入口文件看 Meteor 项目结构结合 README 的“Meteor 构建”这一事实从源码结构可以进一步确认 WeKan 的组织方式入口模块package.json 中meteor.mainModule指定服务端入口为 server/main.js、客户端入口为 client/main.js。server/main.js 的引导逻辑非常简洁且顺序敏感先用require()保证 bootstrap 先于任何模型代码执行——依次加载 helpers polyfillimports/collectionHelpers.js、Collection2 校验包aldeed:collection2最后加载全部应用代码/server/imports。服务端server/ 目录包含publications/31 个发布模块、methods/、permissions/30 个权限模块、routes/含 API 路由如 server/apiAuthRoutes.js、server/apiMiddleware.js等对应 DDP 实时数据推送与 REST API 两条数据通路。数据模型models/ 目录以“一集合一文件”方式定义了 boards、lists、cards、checklists、customFields 等约 80 个集合模型是 config/models.js 的组成部分路由定义在 config/router.js搜索常量在 config/search-const.js。构建管线package.json 的 devDependencies 显示 Meteor 3 时代已引入meteorjs/rspack、rspack/core1.7.11 与rsdoctor/rspack-pluginbundle 可视化与 build.sh Dev server 菜单中“ bundle visualizer”选项相呼应rspack.config.js 为独立 rspack 构建配置。实时性配置如 2.2 节所述DDP 传输层当前仅随包提供 sockjsDDP_TRANSPORTsockjs且启动时会把 uws 强制纠正为 sockjs反应性顺序由METEOR_REACTIVITY_ORDER控制polling 或 MongoDB 变更流。七、测试与贡献流程package.json 的scripts定义了多层测试入口与 build.sh Tests 菜单一一对应# Meteor 单测Mocha 驱动服务端 npm test # meteor test --once --driver-package meteortesting:mocha # Node 原生测试套件 npm run test:unit:node # node tests/run-node-suites.cjs # E2E 回归需要运行中的服务器 npm run test:e2e # node tests/e2e/list-regressions.js # Playwright 浏览器测试 npm run test:playwright # 安装依赖后运行 tests/playwright npm run playwright:install # 安装 Chromium/Firefox/WebKit 浏览器测试目录 tests/ 下包含数百个.test.cjs用例如 tests/backupPaths.test.cjs、tests/databaseHealth.test.cjs以及 tests/playwright/ 下的 70 个 E2E 文件、tests/dbConformance/ 数据库一致性测试。贡献流程README “Getting Started with Development”Fork 仓库并运行./build.shWindows 为./build.bat详细步骤见 docs/DeveloperDocs/Build-and-Create-Pull-Request.md本地测试通过后提交 Pull Request更多开发细节见 docs/DeveloperDocs/Developer-Documentation.md常见问题见 docs/FAQ/FAQ.md新功能与修复发布频繁版本变更记录见 CHANGELOG.md。八、许可证WeKan 以 MIT 许可证发布LICENSE基于 Meteor 框架开发可自由用于个人与商业场景仅需保留原始许可声明。【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考