ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

在 Rancher 上部署 Wekan 与 MongoDB:借助 Rancher Active Proxy 实现自动 HTTPS 反向代理

在 Rancher 上部署 Wekan 与 MongoDB:借助 Rancher Active Proxy 实现自动 HTTPS 反向代理 在 Rancher 上部署 Wekan 与 MongoDB借助 Rancher Active Proxy 实现自动 HTTPS 反向代理【免费下载链接】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本文是一份基于仓库文档 docs/Platforms/FOSS/Container/Docker/Rancher---Rancher-Active-Proxy---Wekan-MongoDB-Docker.md 编写的实战指南。核心场景是在一台 Rancher 管理的主机上以 Docker 方式同时运行 Wekan基于 Meteor 的开源看板和 MongoDB并在前面接入 Rancher Active ProxyRAP让 Wekan 自动获得所选域名的 Lets Encrypt 证书签发、续期与反向代理能力。读完本文你将掌握如何改造 Wekan 的 docker-compose 服务定义、正确配置 RAP 标签与ROOT_URL从而以 HTTPS 域名对外提供 Wekan 服务。为什么选择 Rancher Rancher Active ProxyWekan 官方提供了大量 Docker 部署形态仓库根目录的 docker-compose.yml 与 docker-compose-mongodb-v7.yml 覆盖了从「FerretDB SQLite 轻量单机」到「经典 MongoDB 7」的多种组合。而 Rancher 方案的价值在于编排与管理通过 Rancher 统一管理宿主机上的 Wekan 与 MongoDB 容器支持restart: always等自愈策略接入 Rancher Active Proxy一个运行在 Rancher 之上的反向代理组件后只需在容器上打几个 labelRAP 便会自动监听容器事件完成域名的反向代理与Lets Encrypt 证书的自动申请与续期不需要手动维护 Nginx/Caddy 配置也不需要单独部署 certbot适合希望「域名 HTTPS 一步到位」的部署者。在 docs/Platforms/FOSS/Container/Docker/README.md 的 Rancher 一节中仓库也专门链接了本文档作为该部署形态的官方说明。说明Rancher Active Proxy 属于第三方开源组件其自身的安装与初始化步骤以该项目官方文档为准原文档指向的安装指南为 https://github.com/adi90x/rancher-active-proxy/issues/21。本文聚焦于仓库提供的 Wekan 侧配置。第一步先完成 Rancher 与 Rancher Active Proxy 的基础部署在动手改造 Wekan 之前需要先在宿主机上完成两件事部署 Rancher让宿主机的 Docker 环境纳入 Rancher 管理Wekan 与 MongoDB 都以「栈 / 服务」的形式出现在 Rancher 界面中启动 Rancher Active ProxyRAPRAP 会持续监听 Docker 事件读取各容器上以rap.开头的标签据此动态生成反向代理规则并调用 Lets Encrypt 为配置了rap.le_*标签的域名自动申请证书、在到期前自动续期。原文档给出了 RAP 的安装指引链接见上文说明请先完成这一层基础环境再继续下文。第二步按 RAP 约定改造 Wekan 服务Wekan 服务在 docker-compose 中原本是标准的 Web 服务。要让 RAP 认识它、转发它并为其签发证书需要为服务补充 RAP 标签并调整端口与ROOT_URL。原文档给出的改造后的 wekan 服务定义如下wekan: image: wekanteam/wekan:meteor-1.4 container_name: whatever-you-like restart: always ports: - 80 labels: - io.rancher.container.pull_imagealways - rap.port80 - rap.hostyour.domain.com - rap.le_hostyour.domain.com - rap.le_emailyourmail.com environment: - MONGO_URLmongodb://wekandb:27017/wekan - ROOT_URLhttps://your.domain.com depends_on: - wekandb这段配置是整份文档的核心逐项拆解如下配置项含义与要点image: wekanteam/wekan:meteor-1.4Wekan 的 Docker 镜像。注意该标签为历史版本写法下文「镜像与版本」一节会给出当前仓库推荐的镜像选择container_name容器名称可按喜好自定义whatever-you-likerestart: always容器异常退出后自动重启配合 Rancher 保证服务可用性ports: - 80将容器内 Wekan 的 80 端口映射到宿主机随机高位端口。RAP 通过标签获知要转发到的容器内端口因此这里不需要固定宿主端口io.rancher.container.pull_imagealwaysRancher 标签每次部署时总是拉取最新镜像便于升级镜像版本rap.port80RAP 核心标签告诉 RAP 该容器的 80 端口是需要被反向代理的目标端口与上面ports中的容器内端口一致rap.hostyour.domain.comRAP 核心标签对外提供服务的域名RAP 据此生成该域名的反向代理规则rap.le_hostyour.domain.comRAP 核心标签需要申请 Lets Encrypt 证书的域名通常与rap.host相同rap.le_emailyourmail.comRAP 核心标签Lets Encrypt 注册使用的邮箱用于证书申请与到期提醒MONGO_URLmongodb://wekandb:27017/wekanWekan 连接 MongoDB 的连接串主机名为 compose 中的wekandb服务名ROOT_URLhttps://your.domain.comWekan 对外访问的完整地址必须与rap.host一致详见下文depends_on: - wekandb保证 MongoDB 服务先启动Wekan 再启动改造完成后RAP 会自动完成三件事把your.domain.com的 443/80 流量反向代理到该 Wekan 容器的 80 端口为your.domain.com申请 Lets Encrypt 证书并在证书到期前自动续期。第三步MongoDB 服务的配套写法原文档中的MONGO_URL指向wekandb服务。Wekan 依赖 MongoDB这一侧的 compose 服务可以与仓库中的经典 MongoDB 配置对齐。仓库的 docker-compose-mongodb-v7.yml 提供了现成的wekandb服务定义关键点包括使用image: mongo:7容器名为wekan-dbrestart: always以副本集模式启动--replSet rs0 --bind_ip_all并在启动脚本中自动执行rs.initiate()仅对wekan-tier网络expose: - 27017不对外暴露端口通过健康检查mongosh探测副本集是否有主节点与depends_on: condition: service_healthy联动确保 Wekan 在数据库就绪后才启动。与这份 MongoDB 配置配套时Wekan 侧的连接串需要包含副本集参数并追加 oplog 连接串例如environment: - MONGO_URLmongodb://wekandb:27017/wekan?replicaSetrs0 - MONGO_OPLOG_URLmongodb://wekandb:27017/local?replicaSetrs0 - METEOR_REACTIVITY_ORDERchangeStreams,oplog,polling这在 docker-compose-mongodb-v7.yml 中有完整注释Meteor 通过 oplog 实现实时数据同步副本集是启用 oplog 的前提。若在 Rancher 栈中自行编排wekandb服务应把上面原文档中的MONGO_URL写成带?replicaSetrs0的形式并让depends_on使用健康检查条件以规避「Topology is closed」这类数据库未就绪导致的启动崩溃。ROOT_URL 与 HTTPS 的联动要点ROOT_URL是 Wekan 部署中最容易出错的环境变量。仓库的 docs/Platforms/Webserver/Settings.md 明确指出Wekan 自身只在本机端口上运行HTTPHTTPS 由前置的 Web 服务器如 Caddy、Nginx或本文的 RAP终结 TLS因此当 RAP 对外提供https://your.domain.com时Wekan 的ROOT_URL必须设置为https://your.domain.com与rap.host/rap.le_host保持一致原文档特别强调ROOT_URL必须写https://前缀ROOT_URLhttps://your.domain.com这样 Wekan 生成的所有链接、回调地址才会指向 HTTPS 域名否则会出现登录回调、头像等资源走错协议/域名的问题。镜像与版本从历史标签到当前实践原文档示例使用wekanteam/wekan:meteor-1.4标签这属于早期镜像写法。当前仓库的 docker-compose.yml 与 docker-compose-mongodb-v7.yml 给出了更稳妥的镜像选择原则优先使用具体的版本标签如ghcr.io/wekan/wekan:v6.89、quay.io/wekan/wekan:v6.89、wekanteam/wekan:v6.89因为latest会随新版本发布而变化升级行为不可预期镜像目前可从三个仓库获取GitHub Container Registryghcr.io/wekan/wekan、Quayquay.io/wekan/wekan、Docker Hubwekanteam/wekan默认推荐ghcr.io/wekan/wekan:latest若需拉取最新提交的自动构建可使用ghcr.io/wekan/wekan:main仅供尝鲜。在 Rancher 栈中替换镜像时保留原有的labelsio.rancher.container.pull_imagealways会确保每次重新部署都拉取新镜像、rap.*标签与ROOT_URL即可。验证与排障完成 compose 文件改造并部署到 Rancher 后可按以下顺序验证检查容器状态docker ps确认 wekan 与 wekandb 容器均为 Up且restart: always生效确认反向代理生效在浏览器访问https://your.domain.com应能看到 Wekan 登录页确认证书浏览器地址栏应显示有效的 Lets Encrypt 证书RAP 会在到期前自动续期无需手工干预查看日志docker logs wekan容器名观察启动日志若出现数据库连接错误优先确认MONGO_URL中的副本集参数?replicaSetrs0与wekandb服务的健康状态确认ROOT_URL登录后检查页面链接、头像与邮件通知中的地址确保全部为https://your.domain.com前缀。延伸阅读仓库 Docker 目录总览docs/Platforms/FOSS/Container/Docker/README.md其中 Rancher 一节链接到本文档经典 MongoDB 7 完整编排示例docker-compose-mongodb-v7.yml默认 FerretDB SQLite 编排示例docker-compose.ymlROOT_URL、端口与 Web 服务器配置docs/Platforms/Webserver/Settings.mdDocker 容器数据导入导出与升级Export-Docker-Mongo-Data.md、Move-Docker-containers-to-other-computer.md【免费下载链接】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),仅供参考
返回列表