使用 caddy 自行托管 gitlab

使用 caddy 自行托管 gitlab

我正在尝试安装和托管 gitlab,但它需要并引入 Nginx。这本来没问题,但我使用 Caddy,而 Caddy 与 Nginx 配合得不好,必须禁用它才能启动 Nginx。

我非常喜欢 Caddy,尤其是内置的文件服务器,所以完全切换到 Nginx 不是一个选择。我也不想尝试进行防火墙重定向以在非标准端口上使用 Nginx。

有没有办法不使用 nginx 来使用 gitlab,例如 Caddy?没有官方文档,我在网上论坛上尝试的最后一件事彻底破坏了我的 gitlab 安装,并且只与我没有使用的 Apache 有关

我的系统是运行 Ubuntu 20.04 的专用云服务器。

答案1

unixandria 的答案在当时是正确的。从那时起,情况发生了一些变化。

现在有这个官方部分GitLab 文档

此外,GitLab 13.5 更改了 unix 套接字的位置,因此 Caddyfile 现在应该具有以下内容:

git.example.com {
    reverse_proxy unix//var/opt/gitlab/gitlab-workhorse/sockets/socket
}

答案2

我终于弄明白了。

GitLab 不监听端口,而是监听 Unix 套接字。幸运的是,我们可以将 Caddy 配置为在 Caddyfile 中反向代理套接字,如下所示:

git.example.com {
     reverse_proxy * unix//var/opt/gitlab/gitlab-workhorse/socket
}

确保caddy用户在组gitgitlab-www,反之亦然。

在 /etc/gitlab/gitlab.rb 中确保这些配置如下:

nginx['enable'] = false
web_server['external_users'] = ['caddy']
web_server['username'] = 'gitlab-www'
web_server['group'] = 'gitlab-www' 
web_server['uid'] = nil
web_server['gid'] = nil
web_server['shell'] = '/bin/false' 
web_server['home'] = '/var/opt/gitlab/nginx'

然后做

sudo gitlab-ctl reconfigure
sudo systemctl restart caddy (or restart Caddy manually if you don't use systemd)

我仅在 Ubuntu 20.04 上使用官方 caddy 和 GitLab-EE 软件包进行了测试,并且没有通过 API 配置 Caddy,但这应该适用于 GitLab 的标准安装。

相关内容