使用 caddy 自託管 gitlab

使用 caddy 自託管 gitlab

我正在嘗試安裝和託管 gitlab,但它需要並引入 Nginx。這很好,除非我使用 Caddy,而 Caddy 不能很好地與 Nginx 配合使用,甚至必須停用 Nginx 才能啟動。

我非常喜歡 Caddy,尤其是內建的檔案伺服器,所以完全切換到 Nginx 不是一個選擇。我也沒有興趣嘗試進行防火牆重定向來嘗試在非標準連接埠上使用 Nginx。

有沒有辦法在沒有nginx的情況下使用gitlab,例如Caddy?沒有官方文檔,我從線上論壇嘗試的最後一件事完全破壞了我的 gitlab 安裝,並且只與我沒有使用的 Apache 有關

我的系統是運行 Ubuntu 20.04 的專用雲端伺服器。

答案1

unixandria 的答案對於它的來源來說是正確的。從那時起,情況發生了一些變化。

現在有這個官方部分亞搏體育appGitLab文檔

此外,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 的標準安裝。

相關內容