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

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

我现在想通过https访问Web接口,而不仅仅是http。 我曾在几个post中看到有可能用一些docker魔法,但没有find任何详细的说明。

任何人都可以请解释如何做到这一点?

可惜这不是默认的。

你还没有指出你正在使用的gitlab图像:

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

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

1)创build一个密钥/证书:

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 port绑定: 为gitlab设置端口绑定

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. 停止Package Center中的软件包
  3. 编辑/usr/syno/etc/packages/Docker/synology_gitlab.config的configuration文件。 这是一个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中启动软件包

我设法在NAS上创build一个新的docker集装箱,所有工作都像我想要的那样。

你必须像这样在gitlab包的描述中创buildssl证书:

 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 

然后删除并重新创build该容器:

 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。