一、安装 Gitlab

# gitlab.example.com 为 你的域名或者主机IP
docker run --name gitlab \
    --hostname gitlab.example.com \
    --publish 22:22 --publish 443:443 --publish 80:80 \
    --restart always \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /home/gitlab/config:/etc/gitlab \
    --volume /home/gitlab/logs:/var/log/gitlab \
    --volume /home/gitlab/data:/var/opt/gitlab \
    -d gitlab/gitlab-ce:latest

注:文章所用 latest == 11.4.4-ce.0

这里我使用了官方默认的SSH 22 端口(悄悄的把服务器的SSH端口改成其他,为了给 gitlab 让步),至于开放 80、443端口(--publish 443:443 --publish 80:80 ),gitlab 内置了 nginx 的服务,会占用 80 和 443 端口,如果你服务器上本身就有 nginx,也可以选择不大家可以根据实际情况,自行选择暴露的端口哈。

二、配置 GitLab 使用 HTTPS 协议

如果不需要启用 HTTPS,关于安装 GitLab 的内容到这里就结束了,如果需要启用 HTTPS,那么到这一步骤我就默认大家已经申请好了 SSL 证书,获取到了以下相关的证书文件,申请 SSL 证书可参考文章[HTTPS][1]

# 相关的证书文件
.
└── www.example.com
    ├── cert.pem # 网站自身的证书
    ├── chain.pem # 网站证书链中的上级证书
    ├── fullchain.pem # 包含了网站自身证书和上级证书的完整证书链
    ├── privkey.pem # 网站自身证书对应的私钥
    └── README

GitLab 启用 HTTPS

修改 /etc/gitlab/gitlab.rb 文件,配置 external_urlhttps 开头的地址

# 域名(https://)
external_url 'https://gitlab.example.com'
# http重定向到https
nginx['redirect_http_to_https'] = true

配置 GitLab 使用的证书有两种方式,一种是将之前通过 Let's Encrypt 申请的证书放置到 GitLab 默认要求的配置,如下文 链接证书 所示;另一种则是修改 GitLab 的配置文件,将证书的路径指向之前通过 Let's Encrypt 申请的证书,如下文 修改配置 所示。两种方式选一即可

配置方法一:链接证书

GitLab 默认配置会寻找存放在 /etc/gitlab/ssl/ 目录下的 gitlab.example.com.keygitlab.example.com.crt 文件,其中的 gitlab.example.com 应当替换为在上文中 external_url 里设置的域名

链接证书需要用到 fullchain.pemprivkey.pem 证书文件,gitlab 默认使用 .crt 格式的私钥,需要进行格式转换,就是改下文件后缀名就好了(fullchain.pem --> gitlab.example.com.crt,privkey.pem --> gitlab.example.com.key ),然后将改完后缀的文件复制到 gitlab 容器内 /etc/gitlab/ssl/ 目录下

可以通过如下命令来将之前通过 Let's Encrypt 申请的证书链接到所需的位置

# 使用 root 用户执行以下命令
mkdir -p /etc/gitlab/ssl
chmod 700 /etc/gitlab/ssl
cd /etc/gitlab/ssl
# 然后将`gitlab.example.com.crt` 和 `gitlab.example.com.key` 文件拷贝到该目录下

配置方法二:修改配置

编辑 GitLab 的配置文件 /etc/gitlab/gitlab.rb

# 容器内的证书文件位置
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"

最后执行下面命令让配置生效

gitlab-ctl reconfigure

后记

不过申请的证书三个月就过期了,然后又要去拷贝新证书替换容器内的证书,为了方便,我直接将 /etc/letsencrypt 挂载到容器内,这样就不用替换证书了

docker run --name gitlab \
    --hostname gitlab.example.com \
    --publish 22:22 --publish 443:443 --publish 80:80 \
    --restart always \
    --volume /etc/localtime:/etc/localtime:ro \
    --volume /home/gitlab/config:/etc/gitlab \
    --volume /home/gitlab/logs:/var/log/gitlab \
    --volume /home/gitlab/data:/var/opt/gitlab \
    --volume /etc/letsencrypt:/etc/letsencrypt \
    -d gitlab/gitlab-ce:latest

results matching ""

    No results matching ""