
在 Equinix Metal 裸金属服务器上部署与运维 WekanUbuntu GRUB 启动修复与 SSH 故障处理实战【免费下载链接】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/Propietary/Cloud/Metal/README.md 为核心介绍开源看板 Wekan基于 Meteor 构建在 Equinix Metal前身 CNCF Packet裸金属服务器这一场景下的部署背景与两类关键运维故障处理Ubuntu 系统重启后无法上线的 GRUB 修复以及 macOS Ventura 下 SSH 无法使用 RSA 签名的问题。读完本文你将掌握 Equinix Metal 实例的基本管理入口、GRUB 引导修复与 SOS 控制台恢复方法以及 SSH 主机密钥算法的兼容性配置并能把这些技巧与本仓库中 Wekan 的裸金属部署配置bundle、Node.js、MongoDB 与 start-wekan.sh结合起来使用。背景从 CNCF Packet 到 Equinix Metal 的裸金属实践仓库文档明确记录CNCF Packet 现已并入 Equinix Metal原文档原文CNCF Packet is now part of Equinix Metal.。因此凡是早期资料中提到的CNCF / Packet 裸金属服务器在今天对应的实际产品即为 Equinix Metal 的裸金属实例。裸金属服务器在本仓库的 Wekan 部署体系中并非孤立概念而是有实际使用记录的在 docs/Platforms/Propietary/Cloud/AWS/README.md 中提到Wekan 团队已经可以访问CNCF / Packet 提供的高性能裸金属服务器用于运行高负载测试这说明裸金属硬件正是 Wekan 团队进行性能压测与规模化验证的载体。在 docs/Platforms/FOSS/HW/RaspberryPi/Raspberry-Pi.md 中维护者记录了一次关键验证I did also test Wekan arm64 on arm64 bare metal server, same Wekan bundle worked there.——即同一份 arm64 的 Wekan bundle 可以同时跑在树莓派和 arm64 裸金属服务器上说明Wekan 的 bundle 分发方式天然适用于裸金属服务器。由此可以推断在 Equinix Metal 这类提供完整硬件控制权的环境中部署 Wekan可以采用与树莓派/自建服务器相同的bundle Node.js MongoDB方式无需受虚拟化或受限内核约束对比之下docs/Platforms/Propietary/Cloud/OVH/README.md 明确指出 OVH/Kimsufi 因受限内核无法运行 Snap 或 Docker只能从源码安装。Equinix Metal 控制台入口Equinix Metal 的 Web 管理控制台地址为console.equinix.com这是管理实例、查看串口日志、进入 Serial over SSHSOS控制台的统一入口。当服务器无法通过网络正常访问时例如启动卡在 GRUB 提示符就需要通过控制台提供的 SOS 会话进行底层恢复这正是下文两个故障场景的核心操作路径。在裸金属服务器上运行 Wekanbundle 方式与核心配置在 Equinix Metal 裸金属服务器上部署 Wekan 时可以参照仓库中无容器安装的通用流程见 docs/Platforms/FOSS/HW/RaspberryPi/Raspberry-Pi.md。Wekan 的运行只需要三样东西对应 CPU 架构的 Wekan bundle.zip 打包的 Javascript 等文件唯一随架构变化的组件是fibers包的编译产物Node.js 二进制MongoDB。启动方式可以是start-wekan.sh脚本、systemd 服务或任何设置环境变量后在 bundle 目录执行node main.js的脚本。核心环境变量以仓库根目录的 start-wekan.sh 为准变量含义与示例ROOT_URLWekan 对外访问地址必须与真实访问路径一致否则翻译、附件上传等会失效。例如ROOT_URLhttp://192.168.0.200内网或ROOT_URLhttps://kanban.example.com经 Caddy/Nginx 反代 HTTPSPORTWekan Node.js 监听的本地端口例如PORT80或PORT2000MONGO_URLMongoDB 连接串例如MONGO_URLmongodb://127.0.0.1:27017/wekanWRITABLE_PATH附件、头像等文件的磁盘存储路径必须存在且可写例如WRITABLE_PATH..MONGO_OPLOG_URLMongoDB oplog 连接串用于实时响应Change Streams/Oplog。本地副本集示例MONGO_OPLOG_URLmongodb://127.0.0.1:27017/local?replicaSetrs0远程带认证示例MONGO_OPLOG_URLmongodb://user:passwordhost:port/local?authSourceadminreplicaSetrsWekan从 start-wekan.sh 的源码可以进一步看到两点与裸金属部署直接相关的重要细节MongoDB 需以副本集方式运行并启用 Change Streams。脚本启动时会先检查 127.0.0.1:27017 的副本集状态未初始化则自动初始化rs0通过snap-src/bin/db-eval.mjs完成无需 mongosh 二进制。若启用成功会设置METEOR_REACTIVITY_ORDERchangeStreams,oplog,polling否则回退为polling。Node 堆内存自动适配。脚本会读取系统内存含 cgroup 限制自动设置NODE_OPTIONS--max-old-space-size...约为可用内存的 3/5上限 4096 MB裸金属服务器内存较大时无需手工调参。若希望 Node.js 以非 root 用户运行但仍绑定 80 端口可先执行which node找到二进制路径再授权sudo setcap cap_net_bind_serviceep /usr/local/bin/nodesystemd 服务示例编辑/etc/systemd/system/wekan.service[Unit] DescriptionThe Wekan Service Aftersyslog.target network.target [Service] EnvironmentFile/etc/default/wekan Userwekan Groupwekan WorkingDirectory/home/wekan/bundle ExecStart/usr/local/bin/node main.js Restarton-failure SuccessExitStatus143 [Install] WantedBymulti-user.target对应/etc/default/wekan环境文件NODE_ENVproduction WITH_APItrue MONGO_URLmongodb://127.0.0.1:27017/wekan ROOT_URLhttps://kanban.example.com PORT2000更多参数说明可参考 docs/Platforms/Webserver/Settings.md若对外提供服务建议在前面加一层 Nginx/Caddy/Apache 做 TLS 终止与反向代理见 docs/Platforms/Webserver/Nginx.md。Ubuntu 重启修复GRUB 引导Equinix Metal 的裸金属服务器在特定条件下存在一个已知问题受影响的系统一旦重启可能无法重新上线。此时通过 Serial over SSHSOS控制台观察系统会停留在 GRUB 提示符界面而不是正常引导进入 Ubuntu。原文档给出的修复流程分两步第一步安装 grub2-common 并重装引导器在系统仍正常运行时或通过 SOS 环境修复到可引导后执行sudo apt-get update sudo apt-get install grub2-common sudo grub-install --bootloader-idubuntu命令解析sudo apt-get update刷新软件包索引确保能获取到最新版本的grub2-commonsudo apt-get install grub2-common安装 GRUB 2 的公共组件包含grub-install、grub-mkconfig等工具sudo grub-install --bootloader-idubuntu将 GRUB 引导器写入磁盘并使用ubuntu作为 bootloader id。--bootloader-id指定了 EFI 引导项的名称这与后续 SOS 恢复时configfile指向的路径约定相关。第二步通过 SOS 控制台从 GRUB 恢复如果系统已经被重启并卡在 GRUB 提示符需要通过 Equinix Metal 控制台的 Serial over SSHSOS会话连接进入 GRUB然后执行grub configfile ($root)/EFI/GRUB/grub.cfg该命令会让 GRUB 从当前根设备加载EFI/GRUB/grub.cfg配置文件从而载入正确的启动序列。设备随后会恢复正常引导并回到服务状态。恢复后的持久化修复需要强调的是configfile命令只解决当次恢复属于一次性急救手段。要让系统在下次重启后不再复发必须执行前述第一步的持久化修复命令安装grub2-common并重新grub-install --bootloader-idubuntu。两者配合才是完整的解决方案先用 SOS 把躺平的系统拉起来再在系统内修复引导器彻底消除重启失联的隐患。macOS Ventura 下 SSH 无法连接裸金属服务器RSA 签名问题第二个常见故障来自客户端侧macOS Ventura 系统默认的安全策略不再接受使用 RSA 签名的主机密钥导致ssh连接 Equinix Metal 服务器时报错或失败。原文档给出了在 macOS 上重新启用 RSA 主机密钥的修改方法。编辑 ssh_config打开终端执行sudo nano /etc/ssh/ssh_config系统会要求输入管理员密码进行认证sudo鉴权。追加 RSA 算法白名单滚动到ssh_config文件的最底部追加以下两行HostkeyAlgorithms ssh-rsa PubkeyAcceptedAlgorithms ssh-rsa参数含义HostkeyAlgorithms ssh-rsa在默认主机密钥算法集合中追加ssh-rsa。行首的前缀表示在已有默认值基础上增加而不是完全覆盖这是保持其他算法不受影响的关键写法PubkeyAcceptedAlgorithms ssh-rsa同样以追加方式允许客户端使用 RSA 公钥算法进行用户认证。保存并退出在 nano 编辑器中按ControlO保存文件再按ControlX退出编辑器。之后重新执行ssh连接即可恢复正常。如果问题依旧可以进一步检查服务端/etc/ssh/sshd_config是否也禁用了 RSA 算法此时应在服务端同步追加对应配置并重启 sshd以及客户端~/.ssh/config中是否有覆盖全局设置的条目。配套运维资源完成部署与故障修复后以下仓库内文档可继续支撑日常运维docs/Platforms/Webserver/Settings.mdROOT_URL/root-url与端口组合的多种典型场景纯内网 80 端口、自定义端口、Nginx/Caddy SSL 反代等以及 Admin Panel、邮件、代理等配置说明docs/Platforms/Webserver/Nginx.mdNginx 反代 Wekan 的完整配置示例包含 WebSocketSockJS升级所需的map $http_upgrade $connection_upgrade与proxy_set_header三件套、client_max_body_size附件大小限制、Lets Encrypt SSL 等若浏览器控制台出现WebSocket connection to wss://HOST/sockjs/... failed可重点核对这三行配置docs/Platforms/FOSS/HW/RaspberryPi/Raspberry-Pi.md无容器安装 Wekan 的通用流程bundle Node.js MongoDB其中arm64 裸金属服务器与树莓派使用同一 bundle的验证记录同样适用于 Equinix Metal 的 arm64 实例start-wekan.sh仓库根目录的官方启动脚本集中注释了 MongoDB 副本集初始化、Change Streams、S3、邮件、LDAP、OAuth2/OIDC、CORS、浏览器策略等全部可用环境变量。小结围绕 docs/Platforms/Propietary/Cloud/Metal/README.md 的核心内容本文给出了两套立即可用的故障处理方案面向 Equinix Metal原 CNCF Packet裸金属服务器的Ubuntu GRUB 重启修复grub2-commongrub-install --bootloader-idubuntu以及 SOS 控制台下的configfile ($root)/EFI/GRUB/grub.cfg恢复和面向 macOS Ventura 客户端的SSH RSA 签名修复在ssh_config中追加HostkeyAlgorithms ssh-rsa与PubkeyAcceptedAlgorithms ssh-rsa。同时结合本仓库源码补充了 Wekan 在裸金属环境中的 bundle 部署方式、副本集/Change Streams 配置与核心环境变量。建议运维者在部署前先执行 GRUB 修复以避免重启即失联并提前配置好 SOS 控制台访问权限以应对不可预期的引导故障。【免费下载链接】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),仅供参考