我通过我的Synology NAS(DSM 5.2)中的官方GitLab软件包在Docker容器中安装了GitLab。
我现在想通过https而不是http访问Web界面。我在几个帖子中看到过可以使用一些docker魔法,但是 没有找到任何详细说明。
任何人都可以解释如何实现这个目标吗?
遗憾的是,这不是违约。
答案 0 :(得分: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环境:
答案 1 :(得分:4)
Crami的说明通过软件包安装为我工作(sameersbn / gitlab:7.9.3)。你必须:
按照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
编辑配置文件
/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"
},
在Package Center中启动包
答案 2 :(得分:1)
您尚未指出您正在使用的gitlab图像:
最常见的容器映像已包含有关如何启用SSL的详细信息的说明:
答案 3 :(得分: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。
答案 4 :(得分:1)
在DSM 6.2.1上
我只是安装了此软件,这里的一些答案对我有所帮助,但我仍然遇到问题。所以我想分享我的发现:
我想使用Synology DSM中已经生成的let-encrypt证书。
创建任务计划程序(用户定义脚本)
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”)
在任何具有打开的ssl的计算机上创建dhparam.pem文件
openssl dhparam -out dhparam.pem 2048
我建议不要在NAS上执行此操作,因为它会很慢(您可能会增加关键的复杂性,直到有病人等待时为止)
将dhparam.pm复制到gitlab中的certificats文件夹位置
/volume1/docker/gitlab-ce/gitlab/certs/
在安装gitlab时调整为您选择的名称/文件夹(在我的情况下为“ gitlab-ce”)
在包中心停止gitlab(停止所有树docker容器)
在synology_gitlab容器上
5.1添加两个环境变量
GITLAB_HTTPS=true
SSL_SELF_SIGNED=false
5.2。将gitlab端口绑定(容器端口)从80更改为443
如果Synology DSM(或您手动)创建了新证书,则该方法将在设定的时间(您在用户定义脚本中的选择)自动更新您生成的ssl证书。但是,这不是即时更新,但是您可以从任务计划程序界面手动触发它。对于个人NAS解决方案来说,这种方法仍然是免维护的。
答案 5 :(得分: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页面时,使用“ / volume1 / docker / gitlab / gitlab / certs”后出现错误页面“ PR_END_OF_FILE_ERROR”,错误消失了,一切都很好...
我的Synology工作站是运行DSM 6.2.2-24922 Update 3的DS718 +。