百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

群晖使用Docker安装并配置GitLab服务器

liuian 2024-12-24 14:18 90 浏览

群晖(Synology)内置的GitLab版本已经很老了,虽然对系统资源的利用较少,但是不利于使用。因此,要在群晖上安装GitLab服务器,最好还是通过内置的Docker进行安装,这样可以安装较新的GitLab版本,也可以通过Docker对GitLab进行更新。

需要注意的是,由于GitLab对系统要求较高,官方不建议在低于4g配置的机器上进行安装,在低配置的机器上安装可能会导致运行卡顿或者频繁出现502错误。

本文虽然是在群晖下进行安装,但由于是通过Docker进行安装的,在其他linux版本如Ubuntu下应该也适用(未测试)。


本文安装需要基于Docker,在群晖下可以直接选择Docker套件安装Docker,在其他发行版下可以参考相关安装说明进行安装。

1.通过Docker安装GitLab


在Docker中搜索官方的gitlab-ce镜像,双击下载镜像。等同于在其他发行版下拉取镜像。

镜像拉取完之后,在映像中双击gitlab镜像来创建容器,点击“高级选项”进行配置。

在系统的Docker文件夹下创建以下三个文件夹,并在“卷”选项卡选择以下配置:

Local locationContainer locationUsage

/docker/gitlab/data /var/opt/gitlab 存储数据

/docker/gitlab/logs /var/log/gitlab 存储日志文文件

/docker/gitlab/config /etc/gitlab 存储配置文件


在“端口”选项卡选择以下配置:

本地 端口容器 端口类型

30022 30022 tcp

30443 30443 tcp

30000 80 tcp


上述端口仅为本次配置的端口,实际搭建时可以根据需要对端口进行修改,本次安装中30022端口和30443端口分别用于ssh访问和https访问,在其他说明文档中,容器端口可能配置为默认的22和443,但是在实践中都出现了无法访问的问题,因此本文将本地端口和容器端口设置为同样端口,并在后续进行配置。


设置完成后,需要在群晖的防火墙里开放上述端口。如果是使用Ubuntu或者其他linux系统,同样需要打开防火墙类似端口。


安装完成后,可以通过 http://<你的域名>:30000 端口访问GitLab,首次登录时需要设置root用户的密码,设置完之后可通过root账户登录并设置参数。


在群晖中,如果设备没有公开IP,可能还需要通过花生壳内网穿透等服务,才能访问GitLab服务器。


2. 设置https访问


首先需要为域名申请SSL证书,可以通过Let's Encrypt 或者阿里云等网站获取免费或者收费的证书,证书分为cert或pem文件以及key文件两个(后缀可能不一样,但都是证书文件和密钥文件两个)并将证书上传至 /etc/gitlab/ssl/? 文件夹中。在群晖的FileStation里面找到文件 ?/docker/gitlab/config/gitlab.rb? 进行修改,也可以通过进入Docker的终端里,找到 ?/etc/gitlab/gitlab.rb? 文件进行修改,实际修改的是同一个文件。


在gitlab的容器的终端机选项下,选择新建一个bash终端,并通过编辑器进行修改,如 ?nano /etc/gitlab/gitlab.rb? ,也可以通过ssh方式登录群晖,修改/docker/gitlab/config/gitlab.rb文件。设置以下参数。有关nginx配置的官方说明.


配置完成后可以通过 ?https://<你的域名>:30443? 方式访问网站。


#line 33
external_url 'https://<你的域名>:30443'
#line 1267
nginx['enable'] = true
nginx['redirect_http_to_https']=true
#line 1281
nginx['ssl_certificate'] = "/etc/gitlab/ssl/cert.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl//private.key"

3.配置邮箱认证

在GitLab中,系统可能需要通过邮件系统来完成用户注册邮箱确认以及事件提醒等功能,因此有必要配置一个邮箱来进行系统邮件发送。这同样需要编辑上述gitlab.rb配置文件,找到以下邮箱配置内容进行配置和修改,以163邮箱为例。

#line 81-107
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'example@163.com'
gitlab_rails['gitlab_email_display_name'] = 'GitLab-ce'
gitlab_rails['gitlab_email_reply_to'] = 'example@163.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "example@163.com"
gitlab_rails['smtp_password'] = "example"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'

4. GitLab SSH 方式访问

首先需要在上述gitlab.rb配置文件中修改以下配置:

#line 602
gitlab_rails['gitlab_shell_ssh_port'] = 30022

在容器使用默认22端口时,ssh方式无法访问,提示 ?SSH ssh_exchange_identification: Connection closed by remote host? 。因此,通过进入Docker bash并修改 ?/etc/ssh/sshd_config? 文件,修改 ?Port 30022? ,之后运行 ?service ssh restart? 重启ssh服务后,可以正常通过ssh方式进行代码访问。


其他文档中关于上述ssh错误的解决方案如下,可供参考:

1、检查 /etc/hosts.deny 和 /etc/hosts.allow 里面是否屏蔽了某些帐户;
2、删除 ~/.ssh/known_hosts 里面的相关服务器条目试一下;
3、在某些发行版上升级 glibc 或 openssl 等软件包以后需要重启一下 sshd;
4、由于 ssh 试探或者 ssh 连结数太多,/etc/ssh/sshd_config 里面的 MaxStartups 默认参数配置不够用;  

修改 MaxStartups 30:60:100

5. Docker GitLab备份


备份可分为手动和自动两种,在Docker映像和容器中,可以点击设置,导出,即可进行完整手动备份(容器需要在停止状态下备份)。


5.1 要实现自动备份,需要创建备份脚本。

#!/bin/bash
docker exec -t gitlab-ce gitlab-rake gitlab:backup:create CRON=1
echo "Do"

windows操作需要注意换行,CRLF切换为LF

另存脚本到 ?/volume1/nas19_backup/NAS/sh/gitlab_backup.sh? 目录中

这里需要注意的是 ?/volume1? 是群晖共享文件夹的根目录

5.2 群晖创建计划任务

管理员身份进入DSM > 控制面板 > 计划任务 > 新增 > 计划的任务 > 用户定义的脚本 > 任务设置 > 运行命令

?bash /volume1/nas19_backup/NAS/sh/gitlab_backup.sh

备份后的文件所在目录为

Local location Container location

/docker/gitlab/data/backups /var/opt/gitlab/backups

5.3 还原备份

  • 重新部署gitlab,并且新的gitlab版本必须与旧的gitlab一致
  • 复制备份到gitlab的backup目录
  • 恢复gitlab
cp 1550764828_2019_02_21_11.7.5_gitlab_backup.tar /opt/gitlab/data/backups/
chmod +r /opt/gitlab/data/backups/ 1550764828_2019_02_21_11.7.5_gitlab_backup.tar
docker exec -it gitlab-ce gitlab-rake gitlab:backup:restore

相关推荐

手机u盘有必要买吗(手机u盘需要什么软件)

网上卖的手机U盘大都是各地的实体数码店进行发货和销售的。他们采用的U盘质量和工厂生产的质量是一致的。并没有什么区别对待。而且由于网上销售费用比较低,所以他在售卖比实体数码店售卖的价格更低,所以这种手机...

电脑系统怎么下载到u盘中(电脑系统win7纯净版下载官方免费版最新版)

下载电脑系统,可以到电脑系统资源下载网站,找到下载页面的下载点,右击下载点,选择迅雷下载,可以把系统文件下载到硬盘里,然后插上U盘,将下载好的系统文件复制到U盘。另一种方法是,将迅雷软件的默认下载路径...

小米主题安装器(红米主题商店app下载安装)

很抱歉,一加九手机无法直接安装小米主题。因为一加九和小米手机使用的是不同的操作系统和主题引擎,它们之间不兼容。一加九使用的是基于Android的OxygenOS操作系统,而小米手机使用的是基于Andr...

hp电脑恢复出厂系统(hp电脑恢复出厂系统操作)

  在开始菜单的【设置】中找到【重置此电脑】的选项即可开始重置恢复到出厂设置;如果您需要整个硬盘格式化,可以选择其中的【删除所有文件】的选项,等待系统设置完成之后会重新进入新系统设置。以下是详细介绍:...

ghost做c盘镜像的步骤(ghost制作镜像步骤)

共9个步骤:1、一般GHOST工具是在PE启动后使用,这个就是PE中GHOST所在路径,找到这个软件并运行。2、界面是英文版本的,因为软件的易操作易学习性,所以这个软件基本没有中文版版本,然后在弹出的...

win10家庭版怎么激活系统(win10家庭版激活步骤)

win10家庭中文版怎么激活1.在win10系统桌面上,点击左下角的开始按钮选择设置选项进入。2.进入设置列表菜单,点击更新和安全选项进入。3.点击激活选项继续下一步操作。4.在弹出输入产品密钥的对话...

office2010和2016区别(office2010和2016差别大不大)

一、指代不同1、word2010:Word2010是Microsoft公司开发的Office2010办公组件之一,主要用于文字处理工作。2、word2016::Word2016是Microsoft公司...

在电脑上怎么截图(在电脑上怎么截图保存到桌面)
  • 在电脑上怎么截图(在电脑上怎么截图保存到桌面)
  • 在电脑上怎么截图(在电脑上怎么截图保存到桌面)
  • 在电脑上怎么截图(在电脑上怎么截图保存到桌面)
  • 在电脑上怎么截图(在电脑上怎么截图保存到桌面)
win10官网下载教程(windows官网下载win10)

步骤1首先打开360安全浏览器步骤2在搜索框中输入“微软官网”,点击“搜索”按钮步骤3点击进入微软官网步骤4下滑界面,在下方可以看到可以下载的系统,此处以windows10企业版下载为例,点击这个版本...

恢复帝app下载(恢复帝app官方)

微信删除好友一般是不能恢复的,有时候在网上会看到一些关于微信删除好友可以帮助恢复的黑客,大多数都是骗人的,因此,再着急恢复好友也需要理智、谨防上当受骗。1.电源:首先确认摄像头通电是否正常状态,指示灯...

系统之家下载安装(系统之家安装版)

是靠谱的。系统之家(HomeSystem)广义上包含了电脑系统安装和手机系统安装,在之前手机软件还不是很普及的时候一般特指电脑系统安装,可如今手机用户大量的出现,安卓系统可以说超过Windows系统...

win10正版系统官网原版纯净版老电脑

一,纯净版Win10系统是根据正版系统制作的,没有夹杂其它软件和驱动,和正版系统一样安装完后需要打各种驱动和根据安装常用软件。二,本质上纯净版Win10也是盗版系统,这是和正版系统最大的区别,而且可能...

十大最好用的浏览器(市面上最好用的浏览器)

1、谷歌chrone  谷歌美国Google公司开发的一款浏览器,谷歌浏览器的特点就是界面简洁,速度快不卡顿,内容全面,你想要找到内容上面都有,就是在安装插件的方面会比较麻烦,不过看在它那么好用的份...

ipad充不上电了怎么办(ipad充不上电怎么办但显示在充电)

 原因和解决办法: 1、ipad充不进去电很可能是充电线的原因,假如大家在给ipad充电的时候以前经常有过接触不良的情况,那么,你就需要考虑更换充电线了。  2、第二,就是接口问题了,或者说是充电...

怎样取消开机启动项目(如何取消开机启动程序)

在Windows操作系统中,有一些程序或服务可能会在计算机启动时自动运行,这些程序或服务也被称为开机启动项。如果您希望在启动Windows时减少计算机运行的程序或服务数量,您可以关闭一些开机启...