【问题标题】:Self-hosting GitLab and Nextcloud on same device: tcp4 0.0.0.0:443: bind: address already in use在同一设备上自托管 GitLab 和 Nextcloud:tcp4 0.0.0.0:443: bind: address already in use
【发布时间】:2023-02-23 01:41:08
【问题描述】:

语境

通过 https(可访问:https://localhost:81(和 tor))安装 Nextcloud 的自托管实例后,我在运行自托管 GitLab 实例时遇到了一些困难。当我跑步时:

local output
    output=$(sudo docker run --detach \
      --hostname "$GITLAB_SERVER" \
      --publish "$GITLAB_PORT_1" --publish "$GITLAB_PORT_2" --publish "$GITLAB_PORT_3" \
      --name "$GITLAB_NAME" \
      --restart always \
      --volume "$GITLAB_HOME"/config:/etc/gitlab \
      --volume "$GITLAB_HOME"/logs:/var/log/gitlab \
      --volume "$GITLAB_HOME"/data:/var/opt/gitlab \
      -e GITLAB_ROOT_EMAIL="$GITLAB_ROOT_EMAIL_GLOBAL" -e GITLAB_ROOT_PASSWORD="$gitlab_pwd" -e EXTERNAL_URL="http://127.0.0.1" \
      "$gitlab_package")

和:

GITLAB_SERVER="127.0.0.1"
GITLAB_SERVER_HTTP_URL="http://$GITLAB_SERVER"
GITLAB_PORT_1="443:443"
GITLAB_PORT_2="80:80"
GITLAB_PORT_3="23:22"

我收到输出:

docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (426dd7fa772f5250531ca478760080f981287048023b356bfa0e98f16db347f9): Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use

我知道这意味着一些进程已经在端口 443 上运行,我写了一个方法来杀死在这些端口上运行的所有东西,但是,httpd 进程不断重生。由于我是在全新安装的 Ubuntu 22.04 上执行此操作,因此我认为这是不断重生的 Nextcloud 进程。所以我可以杀死并删除 Nextcloud,但这违背了目的。

问题

因此,我想问一下,如何通过 HTTPS 在同一台设备上同时托管 Nextcloud 和 GitLab?

笔记

我知道在撰写本文时 GitLab 服务器仍然显示 http 而不是 https,我还没有切换到 https,因为我首先遇到了这个错误。
我假设两者都需要在/通过端口 443 访问,因为它们都可以通过 https 和自签名的 SLL 证书被 tor 访问。

【问题讨论】:

  • “我假设两者都需要在/通过端口 443 访问”只有一个程序可以侦听一个地址/端口组合。在该端口(apache 或 nginx)上放置一个 Web 服务器让它根据通过 SNI 传递的 http 主机进行虚拟托管,然后重定向到在本地主机上的不同端口上运行的 gitlab 和 nextcloud

标签: docker gitlab port nextcloud


【解决方案1】:

为此,您可以使用:

nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/*.conf;"

gitlab.rb 部分 并放置 nexcloud config /etc/nginx/conf.d/nexcloud.conf 它将帮助您在同一个 443 端口上获取所有配置。
然后你可以检查你的配置

 gitlab-ctl restart nginx
 gitlab-ctl status nginx

【讨论】: