為什么要搭建自己的Gitlab服務(wù)器
為了將代碼更好地控制在自己保管的物理硬件上掸屡,要省事也可以直接使用github、bitbucket提供的收費(fèi)托管服務(wù)粉洼。
Gitlab 的配置要求
參見 Requirements | GitLab
2 核即可支持500個用戶节预,推薦的內(nèi)存配置為至少4GB。這里使用的是一臺ubuntu16.04作為服務(wù)器属韧。
域名
為了方便訪問安拟,需要自行購買域名用于提供服務(wù),具體參見域名服務(wù)提供商的文檔宵喂,比如 域名注冊_萬網(wǎng)-阿里云旗下品牌 的服務(wù)糠赦。
email支持
為了提供用戶邀請和各種gitlab的郵件提醒功能,需要配置相應(yīng)的郵件發(fā)送服務(wù),常見的有 mailgun, sendgrid, sparkpost 等服務(wù)商拙泽,都有一定量的免費(fèi)配額淌山,配置方式大同小異。這里以sparkpost為例顾瞻。
sparkpost的說明文檔見 Getting Started with SparkPost - SparkPost 泼疑,主要就是添加你購買的域名比如gitlab.example.com到sending domains,在域名服務(wù)商的網(wǎng)站配置幾個TXT荷荤、CNAME記錄退渗,驗證一下,然后記錄下sparkpost的SMTP配置蕴纳。
gitlab docker compose 安裝配置
這里使用的是
sameersbn/docker-gitlab: Dockerized GitLab 的第三方維護(hù)的gitlab docker会油。比較簡單的安裝方式是通過 docker compose 配置文件。
安裝docker
- 安裝docker袱蚓,參考 Get Docker CE for Ubuntu | Docker Documentation
- 安裝 docker compose钞啸, 參考 Install Docker Compose | Docker Documentation
編輯 docker-compose.yml
里面最復(fù)雜的部分可能就是編輯 docker-compose.yml 配置文件了,首先從 https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml 獲取最新的配置文件模版喇潘。存到服務(wù)器上的任意路徑体斩,比如
mkdir ~/gitlab/
cd ~/gitlab/
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
生成密鑰
然后需要生成3個不同的長度為 64 的密鑰賦值給 GITLAB_SECRETS_OTP_KEY_BASE
GITLAB_SECRETS_DB_KEY_BASE
GITLAB_SECRETS_SECRET_KEY_BASE
。這里可以使用keepassxc的密碼生成功能生成指定長度的密鑰
Generate 3次賦值給配置文件颖低。
編輯volume和ports
按需編輯 gitlab的端口和掛載文件的路徑絮吵,按照一般docker的習(xí)慣和數(shù)據(jù)盤的情況進(jìn)行配置。例如
ports:
- "443:443"
- "2200:22"
volumes:
- /srv/docker/gitlab/gitlab:/home/git/data:Z
時區(qū)
可以配置該實例的運(yùn)行時區(qū)忱屑,比如
- TZ=Asia/Shanghai
- GITLAB_TIMEZONE=Asia/Shanghai
HTTPS 配置
如果需要https蹬敲,啟用
- GITLAB_HTTPS=true
如果是自己生成SSL證書
- SSL_SELF_SIGNED=true
這里使用letsencrypt的證書
- SSL_SELF_SIGNED=false
參考 Certbot 安裝好letsencrypt的證書
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot
$ sudo certbot certonly
復(fù)制證書給gitlab的docker
mkdir /srv/docker/gitlab/gitlab/certs
cd /srv/docker/gitlab/gitlab/certs
cp /etc/letsencrypt/live/gitlab.example.com/* .
cat cert.pem fullchain.pem > gitlab.crt
mv privkey.pem gitlab.key
chmod 400 gitlab.key
openssl dhparam -out dhparam.pem 2048
這里參考 sameersbn/docker-gitlab: SSL ,容易漏掉的是最后一步生成 dhparam.pem
.
域名配置
編輯域名
- GITLAB_HOST=gitlab.example.com
- GITLAB_PORT=443
- GITLAB_SSH_PORT=2200
- GITLAB_EMAIL=notifications@gitlab.example.com
- GITLAB_EMAIL_REPLY_TO=noreply@gitlab.example.com
- GITLAB_INCOMING_EMAIL_ADDRESS=reply@gitlab.example.com
Email 配置
寫入sparkpost配置
- SMTP_ENABLED=true
- SMTP_DOMAIN=gitlab.example.com
- SMTP_HOST=smtp.sparkpostmail.com
- SMTP_PORT=587
- SMTP_USER=SMTP_Injection
- SMTP_PASS=YOUR_SPARKPOST_SMTP_PASS
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=login
管理員賬號配置
建議同樣使用keepassxc生成密碼
- GITLAB_ROOT_PASSWORD=YOUR_PASSWORD
- GITLAB_ROOT_EMAIL=YOUR_EMAIL
防火墻配置
配置服務(wù)器防火墻允許https的443端口和ssh的端口莺戒,比如上面的2200端口伴嗡。
啟動
配置完成保存yml配置文件后,可以運(yùn)行
$ sudo docker-compose up
啟動gitlab實例从铲,通過打印輸出查找潛在的其他問題
至此瘪校,gitlab的docker安裝已經(jīng)完成,更多配置可以在網(wǎng)頁上的admin管理下完成名段。