如何使用SSH密钥安装托管在私有存储库中的Discourse插件?

我遵循了 Discourse 官方关于在自托管站点上安装插件的指南(官方教程),但该指南发布于 2014 年,我非常确定其中许多信息已过时。

我也尝试了一些在讨论回复中分享的、更近期的、推荐的解决方案,例如通过卷挂载 SSH 密钥并在引导过程中配置 SSH 访问。不幸的是,尽管付出了这些努力,我仍然未能通过 SSH 克隆和安装来自我的私有 Git 存储库的插件。

如果有人有更新的、可行的 SSH 密钥安装 Discourse 私有存储库插件的方法或最佳实践,我将非常感谢您的指导。

有没有办法提前将插件文件直接下载到服务器,以便在 Discourse 引导过程中无需再次从 GitHub 获取它们?

这仍然是有效的方法

我一直都在使用它。

2 个赞

您或许可以直接将文件克隆到 /plugins 中,然后运行必要的迁移,但之后您可能无法收到插件的更新。

谢谢!但我之所以更喜欢使用 SSH,是因为 OAuth 令牌不允许区分读写权限——它们总是提供比必需更多的访问权限。

使用 SSH,我可以生成一个只读的部署密钥,这更安全,并且更符合最小权限原则。

感谢您的建议!

我实际上尝试将插件直接克隆到 /var/www/discourse/plugins 中,但没有成功——即使我将插件文件夹从主机挂载到容器内的该路径。

看起来在引导过程中,Discourse 希望通过 Git 获取插件,而手动放置插件文件并不能绕过该步骤。

如果您通过此方法取得了成功,我很想了解更多细节。

1 个赞

我记得如果直接克隆会有问题(我认为 这里),这就是为什么使用令牌进行克隆是推荐的方式。

但是,如果你想使用 SSH 密钥,我认为你可以尝试一下:

谢谢,但我已经尝试了您在官方 2014 年指南中描述的方法——我敢肯定,它不再适用于通过 SSH 密钥在引导过程中访问私有存储库。

我也尝试了其中一个回复中提到的较新方法(将 SSH 密钥挂载到容器中并在 after_code 中配置 core.sshCommand),但不幸的是,在我这里也失败了。在尝试克隆私有插件时,Discourse 仍然会抛出 SSH 权限错误。

如果有一种当前有效且可靠的方法可以在生产环境中将私有存储库与 SSH 结合使用,我将非常感谢更最新的指导。

您可以将其克隆到本地,然后将其挂载到插件目录中,或者将其从临时挂载复制到插件目录中。

以前,您可以获取一个在 URL 中嵌入了凭据的 GitHub URL。我以前这样做过。