之前说坑爹的群晖存在自动升级迁移数据失败的问题并给出了解决方案..这段时间陆陆续续也有一些朋友联系我说遇到相同的问题.考虑到群晖的实际技术实力,遂决定自行托管,放弃套件中心中的套件.

自行托管的好处

  1. 性能更强劲.众所周知,群晖的硬件配置非常低,而 GitLab 又是重型应用程序.即便是旗舰机型也会经常遇到 503 的情况.
  2. 升级更简单.为虚拟机打个快照,执行官方升级程序,搞定收工.
  3. 数据更安全.不必使用非官方的迁移脚本,不必使用官方不推荐的数据库.

托管方式的选择

  1. 服务器,稳定不折腾,视各位体质点数对钱包君会造成一定程度的暴击.
  2. 家里的数据中心服务器或者长时间开机的电脑.我选择了这种,可以获得非常快速的访问体验(穷).

安装 GitLab 详细流程

安装 Debian 9(stretch) 操作系统

  1. 由于 GitLab 要使用较多内存,所以使用 64 位镜像.截至发文时,官网的文件名为debian-9.5.0-amd64-netinst.iso.
  2. 我设置了 4G 内存和 8G 交换空间.
  3. SSH 默认禁止 root 使用密码登录,需要修改/etc/sshd/sshd_config中的PermitRootLoginyes.添加密钥后记得改回来.
  4. 安装open-vm-tools以使用共享文件夹备份数据.
  5. 创建共享文件夹,设置权限为读与写.

安装 GitLab

建议安装企业版(ee),不激活附加功能等同于社区版(ce),如果哪天你想升级到企业版,无需重新安装即可原地升级.

apt-get install -y curl openssh-server ca-certificates sudo
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
apt-get install gitlab-ee

修改 GitLab 配置文件/etc/gitlab/gitlab.rb,然后运行gitlab-ctl reconfigure.

使用gitlab-ctl diff-config可查看修改的选项.

建议修改以下配置:

# 如果是家庭用户,注意默认 80 端口被运营商封锁
external_url 'http://你的网址:端口号'

# 使用第三方发信服务可以获得更好的邮件到达率
gitlab_rails['gitlab_email_from'] = 'example@example.com'

# 备份保存时间,超过这个时间自动删除本地备份
gitlab_rails['backup_keep_time'] = 604800

# 下面的地址是共享文件夹路径
 gitlab_rails['backup_upload_connection'] = {
   'provider' => 'Local',
   'lacal_root' => '/mnt/hgfs/GitLab_data',
 }
# 邮件服务器设置,以阿里云为例
gitlab_rails['smtp_address'] = "smtpdm.aliyun.com"
gitlab_rails['smtp_port'] = 80
gitlab_rails['smtp_user_name'] = "你的发件人用户名"
gitlab_rails['smtp_password'] = "你的密码"
gitlab_rails['smtp_domain'] = "你的网址"

设置备份:

crontab -e
# 每天02:00执行备份.注意刚才我们已经设置了同步备份文件到 Mac 上的共享文件夹.
# 这样我们就可以直接利用时间机器备份到群晖了.
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

路由器中映射端口,输入你的网址测试吧!