创建自己的https Gitlab 服务器

本文最后更新于:2022年8月5日 晚上

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。。

简介

GitLab是唯一一个以单个应用程序交付的 DevOps 平台,在全球各类分析报告中赢得关注,广泛覆盖。 GitLab是全球成千上万的社区贡献者协作的成果,集合了全球十万多家GitLab客户的真实反馈。 GitLab用户基于在现实中遇到的挑战,在社区贡献代码、文档、翻译、设计和产品创意,这使得GitLab解决方案在用途和价值上不断迭代。 GitLab 在 2011 年 10 月 8 进行了第一次代码提交,发展至今已经整整十年。

  • 为了搭建私有的 github 仓库,我们使用极狐(GitLab)创建服务

安装方法

GItLab 14.5

  • 安装和配置必须的依赖项

    1
    2
    sudo apt-get update
    sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
  • 下载极狐GitLab 安装包。

    1
    2
    3
    4
    5
    6
    # Ubuntu 16.04
    wget https://omnibus.gitlab.cn/ubuntu/xenial/gitlab-jh_14.5.1-jh.0_amd64.deb
    # Ubuntu 18.04
    wget https://omnibus.gitlab.cn/ubuntu/bionic/gitlab-jh_14.5.1-jh.0_amd64.deb
    # Ubuntu 20.04
    wget https://omnibus.gitlab.cn/ubuntu/focal/gitlab-jh_14.5.1-jh.0_amd64.deb
  • 建立自己域名的DNS解析,例如:我将 gitlab.zywvvd.com 二级域名解析到腾讯云服务器IP

  • 并将该域名拟作为访问我们 gitlab 的域名

  • 创建环境变量

1
export EXTERNAL_URL=https://gitlab.zywvvd.com

不弄也没关系,之后也可以改

  • 对于 https 站点,极狐GitLab 将使用 Let’s Encrypt 自动请求 SSL 证书,这需要有效的主机名和入站 HTTP 访问。您也可以使用自己的证书或仅使用 http://(不带s)。

  • 如果您想为初始管理员用户(root)指定自定义密码,请查看文档。如果未指定密码,将自动生成随机密码。

  • 接着执行如下命令开始安装:

1
sudo dpkg -i gitlab-jh_14.5.1-jh.0_amd64.deb

GItLab 14.10(当前最新)

1. 安装和配置必须的依赖项

1
2
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

(可选)下一步,安装 Postfix 以发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装极狐GitLab 后配置外部 SMTP 服务器

1
sudo apt-get install -y postfix

在安装 Postfix 的过程中可能会出现一个配置界面,在该界面中选择“Internet Site”并按下回车。把“mail name”设置为您服务器的外部 DNS 域名并按下回车。如果还有其它配置界面出现,继续按下回车以接受默认配置。

2. 下载/安装极狐GitLab

配置极狐GitLab 软件源镜像。

1
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash

接下来,安装极狐GitLab。确保您已正确设置您的 DNS,并更改 https://gitlab.example.com 为您要访问极狐GitLab 实例的 URL。安装包将在该 URL 上自动配置和启动极狐GitLab。

对于 https 站点,极狐GitLab 将使用 Let’s Encrypt 自动请求 SSL 证书,这需要有效的主机名和入站 HTTP 访问。您也可以使用自己的证书或仅使用 http://(不带s)。

如果您想为初始管理员用户(root)指定自定义密码,请查看文档。如果未指定密码,将自动生成随机密码。

执行如下命令开始安装:

1
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-jh

错误记录

  • 我在安装过程中报错:
1
2
Checking if a newer PostgreSQL version is available and attempting automatic upgrade to it: NOT OK
Error ensuring PostgreSQL is updated. Please check the logs
  • 可以通过重新加载配置解决
1
2
3
gitlab-ctl reconfigure
gitlab-ctl status
gitlab-ctl restart

登录gitlab

  • 安装完成后可以使用我们的域名进行访问了,如果不行直接用IP也可以
  • 除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录。

  • 登录后可以进行管理,建议先修改密码

  • 此时我们已经以管理员的身份登录到 gitlab 中,可以对仓库任何事情进行管理

启用https

如果在初次安装时一头雾水,那么安装成功后绑定的 https 域名为 gitlab.example.com,不会有人使用这个域名的,所以我们把他改成我们自己的域名,并实现https访问。

DNS 解析

  • 将自己的 IP 用一个二级域名解析过去

我之前已经将我的二级域名 gitlab.zywvvd.com 解析到服务器IP了,可以进行下一步

申请证书

  • 需要为此二级域名申请证书,可以在各家服务商申请免费证书
  • 申请后下载PEM_Nginx 证书并解压,得到 servername.crtservername.key 两个文件
  • 将他们放在 /etc/gitlab/ssl 目录下

配置 gitlab

  • gitlab 的核心配置文件为 /etc/gitlab/gitlab.rb
  • 修改访问链接(如果需要使用非默认 443 端口可以在此处加入):
1
external_url 'https://gitlab.zywvvd.com:6990'
  • 关闭Let’s Encrypt
1
Letsencrypt['enable'] = false
  • 指定 ssl 证书位置
1
2
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.zywvvd.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.zywvvd.com.key"
  • 重新加载配置即可
1
gitlab-ctl reconfigure

http 重定向

  • 默认情况下,当您指定以“https”开头的外部\u url时,NGINX将不再侦听端口80上未加密的HTTP流量。如果要将所有HTTP通信重定向到HTTPS,可以使用重定向到HTTPS设置。
1
nginx['redirect_http_to_https'] = true

测试

参考资料


创建自己的https Gitlab 服务器
https://www.zywvvd.com/notes/tools/git/build-my-gitlab/build-my-gitlab/
作者
Yiwei Zhang
发布于
2021年12月11日
许可协议