群晖DS218+部署GitLab
欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
起因是懒
最近开始折腾GitLab的CI功能,就打算在家部署一个GitLab,通常做法是打开电脑,启动GitLab,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您骂得对.....)
群晖解决烦恼
- 家里有台群晖DS218+,从不关机,为全家提供稳定的图片和视频服务,之前已在上面部署了maven私服、MySQL,运行得很稳定,今天就把GitLab也部署在上面吧,今后可以随时想用就用,算得上懒人救星了。
- 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:

3. 下图是网购的内存条,现在一共2+8=10G内存,内存充足才是敢折腾的底气:

前文链接
之前折腾群晖的记录:
思路
其实操作很简单:GitLab的部署是基于docker-compose的,群晖已带有docker-compose了,按照官方的部署指南操作即可,以下几处是要注意的地方:
- 部署操作需要管理员权限,所以不在网页上操作了,而是SSH登录后台进行操作;
- GitLab最好是用域名访问,如果用IP就意味着文件访问地址中带有IP,一旦IP变了,原有的文件访问地址就无效了
环境信息
- 群晖系统:DSM 6.2.2-24922 Update 4
- GitLab:Community Edition 13.0.6
配置host
GitLab中的文件都有访问地址,用GitLab服务器的IP作为这个地址显然是不合适的(如果GitLab服务器的IP变了这个文件的访问地址就无效了),所以以下两点需要满足:
- 为GitLab服务器准备域名,这里就是给群晖的IP地址准备域名:gitlab.synology.com
- 确保群晖自己能通过域名访问到GitLab
- 确保所有访问者都能通过域名访问到GitLab
- 一般是修改访问者的hosts文件来达到域名访问的目标,我这里为了省事儿,是在路由器里配置的:192.168.50.43 gitlab.synology.com
允许SSH登录
先要设置允许SSH后台登录:
- 如下图红框的操作:

2. 如下图,勾选启用SSH功能,端口就用22:

3. 现在用SSH终端即可登录群晖了,我这里是在windows电脑上用Xshell6登录的,您可以选用任意SSH终端工具,账号密码就是能登录群晖的账号密码,如下图,登录后,就可以使用日常的linux命令了:

4. 注意上图的红框,登录账号的home目录是/var/services/homes/zq2599
部署
- 创建docker-compose.yml文件,内容如下(大多数内容可以直接使用,需要修改的地方稍后会说):
version: '2.3'
services:
redis:
restart: always
image: redis:5.0.9
command:
- --loglevel warning
volumes:
- redis-data:/var/lib/redis:Z
postgresql:
restart: always
image: sameersbn/postgresql:11-20200524
volumes:
- postgresql-data:/var/lib/postgresql:Z
environment:
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm
gitlab:
restart: always
image: sameersbn/gitlab:13.0.6
depends_on:
- redis
- postgresql
ports:
- "10080:80"
- "10022:22"
volumes:
- gitlab-data:/home/git/data:Z
healthcheck:
test: ["CMD", "/usr/local/sbin/healthcheck"]
interval: 5m
timeout: 10s
retries: 3
start_period: 5m
environment:
- DEBUG=false
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
- TZ=Asia/Kolkata
- GITLAB_TIMEZONE=Kolkata
- GITLAB_HTTPS=false
- SSL_SELF_SIGNED=false
- GITLAB_HOST=gitlab.synology.com
- GITLAB_PORT=10080
- GITLAB_SSH_PORT=10022
- GITLAB_RELATIVE_URL_ROOT=
- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_ROOT_PASSWORD=
- GITLAB_ROOT_EMAIL=
- GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
- GITLAB_NOTIFY_PUSHER=false
- GITLAB_EMAIL=notifications@example.com
- GITLAB_EMAIL_REPLY_TO=noreply@example.com
- GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com
- GITLAB_BACKUP_SCHEDULE=daily
- GITLAB_BACKUP_TIME=01:00
- SMTP_ENABLED=false
- SMTP_DOMAIN=www.example.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=mailer@example.com
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=login
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=mailer@example.com
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_STARTTLS=false
- OAUTH_ENABLED=false
- OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
- OAUTH_ALLOW_SSO=
- OAUTH_BLOCK_AUTO_CREATED_USERS=true
- OAUTH_AUTO_LINK_LDAP_USER=false
- OAUTH_AUTO_LINK_SAML_USER=false
- OAUTH_EXTERNAL_PROVIDERS=
- OAUTH_CAS3_LABEL=cas3
- OAUTH_CAS3_SERVER=
- OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
- OAUTH_CAS3_LOGIN_URL=/cas/login
- OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
- OAUTH_CAS3_LOGOUT_URL=/cas/logout
- OAUTH_GOOGLE_API_KEY=
- OAUTH_GOOGLE_APP_SECRET=
- OAUTH_GOOGLE_RESTRICT_DOMAIN=
- OAUTH_FACEBOOK_API_KEY=
- OAUTH_FACEBOOK_APP_SECRET=
- OAUTH_TWITTER_API_KEY=
- OAUTH_TWITTER_APP_SECRET=
- OAUTH_GITHUB_API_KEY=
- OAUTH_GITHUB_APP_SECRET=
- OAUTH_GITHUB_URL=
- OAUTH_GITHUB_VERIFY_SSL=
- OAUTH_GITLAB_API_KEY=
- OAUTH_GITLAB_APP_SECRET=
- OAUTH_BITBUCKET_API_KEY=
- OAUTH_BITBUCKET_APP_SECRET=
- OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
- OAUTH_SAML_IDP_CERT_FINGERPRINT=
- OAUTH_SAML_IDP_SSO_TARGET_URL=
- OAUTH_SAML_ISSUER=
- OAUTH_SAML_LABEL="Our SAML Provider"
- OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
- OAUTH_SAML_GROUPS_ATTRIBUTE=
- OAUTH_SAML_EXTERNAL_GROUPS=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
- OAUTH_CROWD_SERVER_URL=
- OAUTH_CROWD_APP_NAME=
- OAUTH_CROWD_APP_PASSWORD=
- OAUTH_AUTH0_CLIENT_ID=
- OAUTH_AUTH0_CLIENT_SECRET=
- OAUTH_AUTH0_DOMAIN=
- OAUTH_AUTH0_SCOPE=
- OAUTH_AZURE_API_KEY=
- OAUTH_AZURE_API_SECRET=
- OAUTH_AZURE_TENANT_ID=
volumes:
redis-data:
postgresql-data:
gitlab-data:
- 上述配置中,有四处地方需要您修改;
- 第一处:gitlab.ports,这里用宿主机的10080端口映射容器的http端口,宿主机的10022端口映射容器的ssh端口
- 第二处:gitlab.environment.GITLAB_PORT,要和前面映射的10080端口一致,这样GitLab上的文件url中会带有10080端口,确保在网页上可以正常访问文件
- 第三处:gitlab.environment.GITLAB_SSH_PORT,要和前面映射的10022端口一致,这样GitLab上给出的仓库地址中会带有10022,您在客户端使用git clone命令时才连接GitLab成功
- 第四处:gitlab.environment.GITLAB_HOST,配置成前面准备好的host:gitlab.synology.com
- 其他参数我这里暂时无需修改,请您自己酌情调整,参考文档:https://github.com/sameersbn/docker-gitlab
- 再次确认群晖上的域名是可以访问的(192.168.50.43是群晖的IP地址):

执行命令sudo docker-compose up -d,完成GitLab的部署和启动;
等待启动成功,群晖的硬件性能一般,我这里大约等待10分钟左右(期间网页访问会出现502错误,等启动成功后就好了);
启动成功后,访问地址http://gitlab.synology.com:10080,会提示设置root账号的密码:

- 设置好密码后,就可以用root账号登录了:

8. 如下图,请另外注册一个账号,在后面的实际操作中用到,我这边注册账号是zq2599,邮箱zq2599@gmail.com

验证:创建项目
- 用新建账号登录,点击Create a project:

2. 新建仓库的信息如下:

3. 在新仓库的页面,下图红框中是该仓库的地址,请记下来,稍后用到:

验证:提交代码
- 找一台电脑来验证提交代码,我这里找了个CentOS7服务器;
- 安装git:yum install -y git
- 创建ssh key,执行ssh-keygen -t rsa -C "zq2599@gmail.com",然后一路回车:

4. 账号和邮箱做全局配置,执行如下命令:
git config --global user.name "zq2599" \
&& git config --global user.email zq2599@gmail.com
- 将文件~/.ssh/id_rsa.pub的内容完整复制到如下位置:

6. 回到客户端机器上,克隆项目试试:
git clone ssh://git@gitlab.synology.com:10022/zq2599/test001.git
- 如下图,代码下载成功:

8. 再来试试修改内容能否成功提交,操作命令如下图所示:

9. 再去网站上看看,内容已经成功提交:

至此,群晖服务器上已成功安装了GitLab,接下来可以愉快的折腾GitLab CI了;
你不孤单,欣宸原创一路相伴
欢迎关注公众号:程序员欣宸
微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos
群晖DS218+部署GitLab的更多相关文章
- 群晖DS218+部署mysql
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+部署kafka
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+部署Harbor(1.10.3)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+做maven私服(nexus3)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- K8S使用群晖DS218+的NFS
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖-使用docker套件部署Prometheus+Grafana
Docker 部署 Prometheus 说明: 先在群辉管理界面安装好docker套件,修改一下镜像源(更快一点) 所需容器如下 Prometheus Server(普罗米修斯监控主服务器 ) No ...
- 群晖下虚拟机编译部署WOW服务端TrinityCore
前言 前几天突然想玩WOW了,但是我是一个特别轻度的玩家,以前点卡的时候,我就是上去一个人做做任务,跑跑地图,不怎么玩副本和PVP,现在让我花钱充月卡,不太现实,没那个时间玩,所以,就考虑玩个私服,但 ...
- Windows Server 2016 安装虚拟机版黑群晖
硬件配置 Dell R730 CPU: Intel(R) Xeon(R) CPU E5-2603 v4 @1.70GHz(6 cores) Ram: 16Gb HDD: 系统-600GB SAS X2 ...
- 群晖NAS再折腾
端口转发 两年前我买了一台双盘位的群晖NAS,配置两个4T的硬盘,这玩意儿一度改变了我使用电脑的模式,真是爽爆了!最最主要的功能就是我能用它规整我所有的资料,并且不管何时何地,只要有网就能访问.为了能 ...
随机推荐
- 关于Camtasia2020安装完成之后无法运行问题的解决方法
在录像编辑软件Cmtasia更新到了2020版本之后,有部分小伙伴们遇到了这样的问题:在我们安装好软件之后,居然无法运行.今天小编就给大家介绍一下该如何解决这个问题. 方法一: 第一步,选中桌面上Ca ...
- FL studio系列教程(九):FL Studio中如何排列编曲
在FL Studio水果音乐制作软件播放列表中可以对制作的样本进行编排,除此之外,播放列表中排列的对象被叫做剪辑.在其中可以排列以下剪辑. 1.样本剪辑:样本剪辑包含了编排好的插件乐器音符数据. 2. ...
- 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计
摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...
- Javascript 严格模式的一些理解
平常我们在ECMAscript5中可以声明以下的变量 num = 5; console.log(num);//输出的是变量5 而为了Javascript更合理.更安全.更严谨的方向发展,添加了一种新的 ...
- go特性-数组与切片
数组: 复制传递(不要按照c/c++的方式去理解,c/c++中数组是引用传递),定长 切片: 引用传递,底层实现是3个字段 array(数组) + len(长度) +cap(容量) type slic ...
- 怎么用Iometer测试存储性能
1.Disk Targets选项栏中选择要测试的磁盘,1 per target of Outstanding I/Os 保持默认即可. 2.在Access Specifications栏中新建测试条件 ...
- 【NOIP2017提高A组模拟9.17】猫
[NOIP2017提高A组模拟9.17]猫 题目 Description 信息组最近猫成灾了! 隔壁物理组也拿猫没办法. 信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数) ...
- JZOJ 11.21 提高B组反思
JZOJ 11.21 提高B组反思 T1 第二类斯特林数 直接套公式 \(S(i,j)=S(i-1,j-1)+S(i-1,j)*j\) 由于过大,\(unsigned\ long\ long\)都存不 ...
- 【佛山市选2013】JZOJ2020年8月7日提高组T2 树环转换
[佛山市选2013]JZOJ2020年8月7日提高组T2 树环转换 题目 描述 给定一棵N个节点的树,去掉这棵树的一条边需要消耗值1,为这个图的两个点加上一条边也需要消耗值1.树的节点编号从1开始.在 ...
- socket阻塞与非阻塞,同步与异步,select,pool,epool
概念理解 一.与I/O相关的五个重要概念 1. 第一个概念:用户空间与内核空间 1. 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方) 2. ...