【发布时间】: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