欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

起因是懒

最近开始折腾GitLab的CI功能,就打算在家部署一个GitLab,通常做法是打开电脑,启动GitLab,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您骂得对.....)

群晖解决烦恼

  1. 家里有台群晖DS218+,从不关机,为全家提供稳定的图片和视频服务,之前已在上面部署了maven私服、MySQL,运行得很稳定,今天就把GitLab也部署在上面吧,今后可以随时想用就用,算得上懒人救星了。
  2. 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:



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

前文链接

之前折腾群晖的记录:

  1. 群晖DS218+部署mysql
  2. 群晖DS218+部署kafka
  3. 群晖DS218+做maven私服(nexus3)
  4. K8S使用群晖DS218+的NFS
  5. 群晖DS218+部署Harbor(1.10.3)

思路

其实操作很简单:GitLab的部署是基于docker-compose的,群晖已带有docker-compose了,按照官方的部署指南操作即可,以下几处是要注意的地方:

  1. 部署操作需要管理员权限,所以不在网页上操作了,而是SSH登录后台进行操作;
  2. GitLab最好是用域名访问,如果用IP就意味着文件访问地址中带有IP,一旦IP变了,原有的文件访问地址就无效了

环境信息

  1. 群晖系统:DSM 6.2.2-24922 Update 4
  2. GitLab:Community Edition 13.0.6

配置host

GitLab中的文件都有访问地址,用GitLab服务器的IP作为这个地址显然是不合适的(如果GitLab服务器的IP变了这个文件的访问地址就无效了),所以以下两点需要满足:

  1. 为GitLab服务器准备域名,这里就是给群晖的IP地址准备域名:gitlab.synology.com
  2. 确保群晖自己能通过域名访问到GitLab
  3. 确保所有访问者都能通过域名访问到GitLab
  4. 一般是修改访问者的hosts文件来达到域名访问的目标,我这里为了省事儿,是在路由器里配置的:192.168.50.43 gitlab.synology.com

允许SSH登录

先要设置允许SSH后台登录:

  1. 如下图红框的操作:



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



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



4. 注意上图的红框,登录账号的home目录是/var/services/homes/zq2599

部署

  1. 创建docker-compose.yml文件,内容如下(大多数内容可以直接使用,需要修改的地方稍后会说):
  1. version: '2.3'
  2. services:
  3. redis:
  4. restart: always
  5. image: redis:5.0.9
  6. command:
  7. - --loglevel warning
  8. volumes:
  9. - redis-data:/var/lib/redis:Z
  10. postgresql:
  11. restart: always
  12. image: sameersbn/postgresql:11-20200524
  13. volumes:
  14. - postgresql-data:/var/lib/postgresql:Z
  15. environment:
  16. - DB_USER=gitlab
  17. - DB_PASS=password
  18. - DB_NAME=gitlabhq_production
  19. - DB_EXTENSION=pg_trgm
  20. gitlab:
  21. restart: always
  22. image: sameersbn/gitlab:13.0.6
  23. depends_on:
  24. - redis
  25. - postgresql
  26. ports:
  27. - "10080:80"
  28. - "10022:22"
  29. volumes:
  30. - gitlab-data:/home/git/data:Z
  31. healthcheck:
  32. test: ["CMD", "/usr/local/sbin/healthcheck"]
  33. interval: 5m
  34. timeout: 10s
  35. retries: 3
  36. start_period: 5m
  37. environment:
  38. - DEBUG=false
  39. - DB_ADAPTER=postgresql
  40. - DB_HOST=postgresql
  41. - DB_PORT=5432
  42. - DB_USER=gitlab
  43. - DB_PASS=password
  44. - DB_NAME=gitlabhq_production
  45. - REDIS_HOST=redis
  46. - REDIS_PORT=6379
  47. - TZ=Asia/Kolkata
  48. - GITLAB_TIMEZONE=Kolkata
  49. - GITLAB_HTTPS=false
  50. - SSL_SELF_SIGNED=false
  51. - GITLAB_HOST=gitlab.synology.com
  52. - GITLAB_PORT=10080
  53. - GITLAB_SSH_PORT=10022
  54. - GITLAB_RELATIVE_URL_ROOT=
  55. - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
  56. - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
  57. - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
  58. - GITLAB_ROOT_PASSWORD=
  59. - GITLAB_ROOT_EMAIL=
  60. - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
  61. - GITLAB_NOTIFY_PUSHER=false
  62. - GITLAB_EMAIL=notifications@example.com
  63. - GITLAB_EMAIL_REPLY_TO=noreply@example.com
  64. - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com
  65. - GITLAB_BACKUP_SCHEDULE=daily
  66. - GITLAB_BACKUP_TIME=01:00
  67. - SMTP_ENABLED=false
  68. - SMTP_DOMAIN=www.example.com
  69. - SMTP_HOST=smtp.gmail.com
  70. - SMTP_PORT=587
  71. - SMTP_USER=mailer@example.com
  72. - SMTP_PASS=password
  73. - SMTP_STARTTLS=true
  74. - SMTP_AUTHENTICATION=login
  75. - IMAP_ENABLED=false
  76. - IMAP_HOST=imap.gmail.com
  77. - IMAP_PORT=993
  78. - IMAP_USER=mailer@example.com
  79. - IMAP_PASS=password
  80. - IMAP_SSL=true
  81. - IMAP_STARTTLS=false
  82. - OAUTH_ENABLED=false
  83. - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
  84. - OAUTH_ALLOW_SSO=
  85. - OAUTH_BLOCK_AUTO_CREATED_USERS=true
  86. - OAUTH_AUTO_LINK_LDAP_USER=false
  87. - OAUTH_AUTO_LINK_SAML_USER=false
  88. - OAUTH_EXTERNAL_PROVIDERS=
  89. - OAUTH_CAS3_LABEL=cas3
  90. - OAUTH_CAS3_SERVER=
  91. - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
  92. - OAUTH_CAS3_LOGIN_URL=/cas/login
  93. - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
  94. - OAUTH_CAS3_LOGOUT_URL=/cas/logout
  95. - OAUTH_GOOGLE_API_KEY=
  96. - OAUTH_GOOGLE_APP_SECRET=
  97. - OAUTH_GOOGLE_RESTRICT_DOMAIN=
  98. - OAUTH_FACEBOOK_API_KEY=
  99. - OAUTH_FACEBOOK_APP_SECRET=
  100. - OAUTH_TWITTER_API_KEY=
  101. - OAUTH_TWITTER_APP_SECRET=
  102. - OAUTH_GITHUB_API_KEY=
  103. - OAUTH_GITHUB_APP_SECRET=
  104. - OAUTH_GITHUB_URL=
  105. - OAUTH_GITHUB_VERIFY_SSL=
  106. - OAUTH_GITLAB_API_KEY=
  107. - OAUTH_GITLAB_APP_SECRET=
  108. - OAUTH_BITBUCKET_API_KEY=
  109. - OAUTH_BITBUCKET_APP_SECRET=
  110. - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
  111. - OAUTH_SAML_IDP_CERT_FINGERPRINT=
  112. - OAUTH_SAML_IDP_SSO_TARGET_URL=
  113. - OAUTH_SAML_ISSUER=
  114. - OAUTH_SAML_LABEL="Our SAML Provider"
  115. - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
  116. - OAUTH_SAML_GROUPS_ATTRIBUTE=
  117. - OAUTH_SAML_EXTERNAL_GROUPS=
  118. - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
  119. - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
  120. - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
  121. - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
  122. - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
  123. - OAUTH_CROWD_SERVER_URL=
  124. - OAUTH_CROWD_APP_NAME=
  125. - OAUTH_CROWD_APP_PASSWORD=
  126. - OAUTH_AUTH0_CLIENT_ID=
  127. - OAUTH_AUTH0_CLIENT_SECRET=
  128. - OAUTH_AUTH0_DOMAIN=
  129. - OAUTH_AUTH0_SCOPE=
  130. - OAUTH_AZURE_API_KEY=
  131. - OAUTH_AZURE_API_SECRET=
  132. - OAUTH_AZURE_TENANT_ID=
  133. volumes:
  134. redis-data:
  135. postgresql-data:
  136. gitlab-data:
  1. 上述配置中,有四处地方需要您修改;
  • 第一处: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
  1. 再次确认群晖上的域名是可以访问的(192.168.50.43是群晖的IP地址):

  1. 执行命令sudo docker-compose up -d,完成GitLab的部署和启动;

  2. 等待启动成功,群晖的硬件性能一般,我这里大约等待10分钟左右(期间网页访问会出现502错误,等启动成功后就好了);

  3. 启动成功后,访问地址http://gitlab.synology.com:10080,会提示设置root账号的密码:

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



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

验证:创建项目

  1. 用新建账号登录,点击Create a project:



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



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

验证:提交代码

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



4. 账号和邮箱做全局配置,执行如下命令:

  1. git config --global user.name "zq2599" \
  2. && git config --global user.email zq2599@gmail.com
  1. 将文件~/.ssh/id_rsa.pub的内容完整复制到如下位置:



6. 回到客户端机器上,克隆项目试试:

  1. git clone ssh://git@gitlab.synology.com:10022/zq2599/test001.git
  1. 如下图,代码下载成功:



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



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



至此,群晖服务器上已成功安装了GitLab,接下来可以愉快的折腾GitLab CI了;

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

群晖DS218+部署GitLab的更多相关文章

  1. 群晖DS218+部署mysql

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 群晖DS218+部署kafka

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. 群晖DS218+部署Harbor(1.10.3)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. 群晖DS218+做maven私服(nexus3)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. K8S使用群晖DS218+的NFS

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. 群晖-使用docker套件部署Prometheus+Grafana

    Docker 部署 Prometheus 说明: 先在群辉管理界面安装好docker套件,修改一下镜像源(更快一点) 所需容器如下 Prometheus Server(普罗米修斯监控主服务器 ) No ...

  7. 群晖下虚拟机编译部署WOW服务端TrinityCore

    前言 前几天突然想玩WOW了,但是我是一个特别轻度的玩家,以前点卡的时候,我就是上去一个人做做任务,跑跑地图,不怎么玩副本和PVP,现在让我花钱充月卡,不太现实,没那个时间玩,所以,就考虑玩个私服,但 ...

  8. Windows Server 2016 安装虚拟机版黑群晖

    硬件配置 Dell R730 CPU: Intel(R) Xeon(R) CPU E5-2603 v4 @1.70GHz(6 cores) Ram: 16Gb HDD: 系统-600GB SAS X2 ...

  9. 群晖NAS再折腾

    端口转发 两年前我买了一台双盘位的群晖NAS,配置两个4T的硬盘,这玩意儿一度改变了我使用电脑的模式,真是爽爆了!最最主要的功能就是我能用它规整我所有的资料,并且不管何时何地,只要有网就能访问.为了能 ...

随机推荐

  1. 如何用ABBYY FineReader提取图片中的文字

    作为OCR文字识别软件中的佼佼者,可能大家对于ABBYY FineReader的使用还不熟练,没关系,今天小编就为大家演示,如何用ABBYY FineReader这款文字识别软件,将一张截图中的文字识 ...

  2. 【鸿蒙应用开发】第三章 “颜控”时代下如何构建UI界面

    为什么是第三章,前面两章呢? 原本是以碎片化的方式将HarmonyOS应用开发快速掌握,但是在准备六大布局组合复杂UI界面Demo时,很多组件之前都没有应用.因此准备将知识体系进行细化,以章节的形式希 ...

  3. Apache Beam,批处理和流式处理的融合!

    1. 概述 在本教程中,我们将介绍 Apache Beam 并探讨其基本概念. 我们将首先演示使用 Apache Beam 的用例和好处,然后介绍基本概念和术语.之后,我们将通过一个简单的例子来说明 ...

  4. C中memcpy函数用法

    1.函数原型 void *memcpy(void *destin,void *source,unsigned n); 其中, destin代表用于存储复制内容的目标数组,类型强制转换为void*指针. ...

  5. Django的下载及命令

    安装 命令行 pip3 install django==1.11.11 测试是否安装成功 django-admin 创建django项目 django-admin startproject 项目名称( ...

  6. Python机器学习笔记:异常点检测算法——LOF(Local Outiler Factor)

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 在数据挖掘方面,经常需 ...

  7. 总结一下 php连接oracle,完全可用。

    大致有两种方法 第一种 开启php_pdo_oci扩展,一般集成环境都会有这个扩展. 这个东西还是比较简单的,去官网查看吧 http://php.net/manual/zh/book.pdo.php ...

  8. sql server full join拼接表数据,按组加序号

    --查询所有数据select A.*,B.* from(select z.id,z.requestId,z.FBillNo,dt5.FCauseAndProcess,dt5.FEquipmentNo, ...

  9. 推荐系统实践 0x0b 矩阵分解

    前言 推荐系统实践那本书基本上就更新到上一篇了,之后的内容会把各个算法拿来当专题进行讲解.在这一篇,我们将会介绍矩阵分解这一方法.一般来说,协同过滤算法(基于用户.基于物品)会有一个比较严重的问题,那 ...

  10. moviepy音视频剪辑:使用rotate函数实现视频变换处理以及参数expand取值为True时的花屏问题解决方案

    ☞ ░ 前往老猿Python博文目录 ░ 一.rotate函数功能介绍 moviepy的rotate函数用于将剪辑逆时针旋转指定的角度或弧度. 调用语法:rotate(clip, angle, uni ...