11

我在 Docker 容器中通过 Synology NAS (DSM 5.2) 上的官方 GitLab 包安装了 GitLab。

我现在喜欢通过 https 而不是 http 访问 Web 界面。我在几篇文章中看到可以使用一些 docker 魔术,但没有找到任何详细说明。

谁能解释一下如何实现这一目标?

遗憾的是,这不是默认设置。

4

6 回答 6

12

使用 DSM6,现在可以使用 dsm docker 界面进行更改(证书生成除外):

1)创建密钥/证书:

mkdir /volume1/docker/gitlab/certs
cd /volume1/docker/gitlab/certs
openssl genrsa -out gitlab.key 2048
openssl req -new -key gitlab.key -out gitlab.csr
openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 gitlab.key

2)搭建gitlab docker环境:

通过 DSM gui 设置 gitlab docker 环境变量

3)设置gitlab docker端口绑定: 为 gitlab 设置端口绑定

于 2016-04-04T00:08:47.947 回答
6

在 DSM 6.2.1 上

我刚刚安装了这个,这里的一些答案帮助了我,但我仍然遇到了问题。所以我想分享我的发现:

我想使用我已经在 Synology DSM 中生成的 Lets-encrypt 证书。

  1. 创建任务调度器(用户定义脚本)

    cp /usr/syno/etc/certificate/system/default/privkey.pem  /volume1/docker/gitlab-ce/gitlab/certs/gitlab.key
    cp /usr/syno/etc/certificate/system/default/fullchain.pem /volume1/docker/gitlab-ce/gitlab/certs/gitlab.crt
    

    安装 gitlab 时调整为您选择的名称/文件夹(在我的情况下为“gitlab-ce”)

  2. 在任何打开 ssl 的机器上创建一个 dhparam.pem 文件

    openssl dhparam -out dhparam.pem 2048
    

    我建议不要在 NAS 上执行此操作,因为它会很慢(您可能会增加关键的复杂性,让患者等待)

  3. 将 dhparam.pm 复制到 gitlab 内的 certificats 文件夹位置

    /volume1/docker/gitlab-ce/gitlab/certs/
    

    安装 gitlab 时调整为您选择的名称/文件夹(在我的情况下为“gitlab-ce”)

  4. 在包中心停止 gitlab(停止所有树 docker 容器)

  5. 在 synology_gitlab 容器上

    5.1 添加两个环境变量

    GITLAB_HTTPS=true  
    SSL_SELF_SIGNED=false
    

    5.2. 将 gitlab 端口绑定(容器端口)从 80 更改为 443

如果 Synology DSM(或您手动)创建新证书,此方法将在设定的时间(您在用户定义的脚本中选择)自动更新您生成的 ssl 证书。然而,这不是即时更新,但您可以从任务调度程序界面手动触发它。对于个人 NAS 解决方案,这种方法仍然是一种无忧无虑的方式。

于 2019-03-20T16:20:26.673 回答
4

Crami 通过软件包安装 (sameersbn/gitlab:7.9.3) 为我提供的说明。你必须:

  1. 按照 Crami 的命令行说明生成证书:

    mkdir /volume1/docker/gitlab/certs
    cd /volume1/docker/gitlab/certs
    openssl genrsa -out gitlab.key 2048
    openssl req -new -key gitlab.key -out gitlab.csr
    openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
    openssl dhparam -out dhparam.pem 2048
    chmod 400 gitlab.key
    
  2. 在包裹中心停止包裹
  3. 编辑配置文件在 /usr/syno/etc/packages/Docker/synology_gitlab.config. 这是一个 JSON 文件而不是命令行,但很容易看到要更改/添加的内容。您需要添加:

    {
       "key" : "GITLAB_HTTPS",
       "value" : "true"
    },
    {
       "key" : "SSL_SELF_SIGNED",
       "value" : "true"
    },
    

    以及同一文件中从 80 到 443 的端口绑定:

    {
       "container_port" : 443,
       "host_port" : 30000,
       "type" : "tcp"
    },
    
  4. 在包中心启动包

于 2015-09-03T22:49:10.810 回答
1

我设法在 NAS 上创建了一个新的 docker 容器,所有工作都像我想要的那样工作。

您必须像 gitlab 包的描述中那样创建 ssl 证书,如下所示:

mkdir /volume1/docker/gitlab/certs
cd /volume1/docker/gitlab/certs
openssl genrsa -out gitlab.key 2048
openssl req -new -key gitlab.key -out gitlab.csr
openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 gitlab.key

然后删除并重新创建容器:

docker rm synology_gitlab    

docker run --name synology_gitlab -d --link synology_gitlab_redis:redisio \
  --publish 30001:22 --publish 30080:80 --publish 30000:443 \
  --env "GITLAB_HTTPS=true" --env "SSL_SELF_SIGNED=true" \
  --env "GITLAB_HOST=nas.freestone.net" \
  --env "GITLAB_PORT=30000" \
  --env "GITLAB_SSH_PORT=30001" \
  --env "GITLAB_EMAIL=your@example.com" \
  --env "DB_TYPE=mysql" \
  --env "DB_HOST=172.17.42.1" \
  --env "DB_NAME=gitlab" \
  --env "DB_USER=gitlab" \
  --env "DB_PASS=yourdbpassword" \
  --env "SMTP_ENABLED=true" \
  --env "SMTP_DOMAIN=mailserver.example.com" \
  --env "SMTP_HOST=mailserver.example.com" \
  --env "SMTP_PORT=587" \
  --env "SMTP_USER=user@example.com" \
  --env "SMTP_PASS=mailpassword" \
  --env "SMTP_OPENSSL_VERIFY_MODE=none" \
  --volume /volume1/docker/gitlab/:/home/git/data \
  sameersbn/gitlab:7.9.3

然后你应该重新启动并运行。端口 30000 现在是 https 而不再是 http。

于 2015-08-04T16:09:40.523 回答
1

您尚未指明您使用的是哪个 gitlab 映像:

最常见的容器映像已经包含有关如何启用 SSL 的详细说明:

于 2015-08-04T01:23:03.583 回答
1

我使用了@helt 解决方案,但查看 docker 信息页面(https://hub.docker.com/r/sameersbn/gitlab/#ssl),我看到 certs 文件夹位于“docker/gitlab/gitlab/certs/ “……

对于@helt 解决方案,我更新了这个:

mkdir /volume1/docker/gitlab/gitlab/certs
cd /volume1/docker/gitlab/gitlab/certs
openssl genrsa -out gitlab.key 2048
openssl req -new -key gitlab.key -out gitlab.csr
openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
openssl dhparam -out dhparam.pem 2048
chmod 400 gitlab.key

当我只使用“/volume1/docker/gitlab/certs”时,在访问 GitLab 页面时,我有一个带有“PR_END_OF_FILE_ERROR”的错误页面,使用“/volume1/docker/gitlab/gitlab/certs”后,错误消失了一切工作正常...

我的 Synology Station 是运行 DSM 6.2.2-24922 Update 3 的 DS718+。

于 2019-10-24T15:34:32.987 回答