Ubuntu

使用 caddy 自託管 gitlab

  • January 15, 2022

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

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

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

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

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

GitLab Docs現在有這個官方部分。

此外,GitLab 13.5 更改了 unix 套接字的位置,因此 Caddyfile 現在應該有這個:

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

我終於弄明白了。

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

引用自:https://serverfault.com/questions/1030523