在Synology NAS上使用Docker在GitLab上启用SSL

问题描述 投票:10回答:5

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

我现在想通过https而不是http访问Webinterface。我在几个帖子中看到,可以使用一些泊坞魔法,但没有找到任何详细说明。

任何人都可以解释如何实现这一目标?

遗憾的是,这不是违约。

ssl docker gitlab synology
5个回答
1
投票

你还没有说明你正在使用哪个gitlab图像:

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


10
投票

使用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环境:

setting gitlab docker environment vars via DSM gui

3)设置gitlab docker端口绑定:Set port binding for gitlab


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. 在Package Center中启动包

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 "[email protected]" \
  --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 "[email protected]" \
  --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。


1
投票

在DSM 6.2.1上

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

我想使用已经在Synology DSM中生成的let-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(停止所有树泊坞容器)
  5. 在synology_gitlab容器上 5.1添加两个环境变量 GITLAB_HTTPS=true SSL_SELF_SIGNED=false 5.2。将gitlab端口绑定(容器端口)从80更改为443

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

© www.soinside.com 2019 - 2024. All rights reserved.