群晖DS218+部署GitLab

欢迎访问我的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文件,内容如下(大多数内容可以直接使用,需要修改的地方稍后会说):
version: '2.3'services:redis:restart: alwaysimage: redis:5.0.9command:- --loglevel warningvolumes:- redis-data:/var/lib/redis:Zpostgresql:restart: alwaysimage: sameersbn/postgresql:11-20200524volumes:- postgresql-data:/var/lib/postgresql:Zenvironment:- DB_USER=gitlab- DB_PASS=password- DB_NAME=gitlabhq_production- DB_EXTENSION=pg_trgmgitlab:restart: alwaysimage: sameersbn/gitlab:13.0.6depends_on:- redis- postgresqlports:- "10080:80"- "10022:22"volumes:- gitlab-data:/home/git/data:Zhealthcheck:test: ["CMD", "/usr/local/sbin/healthcheck"]interval: 5mtimeout: 10sretries: 3start_period: 5menvironment:- 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:
  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地址):
    在这里插入图片描述
  2. 执行命令sudo docker-compose up -d,完成GitLab的部署和启动;
  3. 等待启动成功,群晖的硬件性能一般,我这里大约等待10分钟左右(期间网页访问会出现502错误,等启动成功后就好了);
  4. 启动成功后,访问地址http://gitlab.synology.com:10080,会提示设置root账号的密码:
    在这里插入图片描述
  5. 设置好密码后,就可以用root账号登录了:
    在这里插入图片描述
  6. 如下图,请另外注册一个账号,在后面的实际操作中用到,我这边注册账号是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. 账号和邮箱做全局配置,执行如下命令:
git config --global user.name "zq2599" \
&& git config --global user.email zq2599@gmail.com
  1. 将文件~/.ssh/id_rsa.pub的内容完整复制到如下位置:
    在这里插入图片描述
  2. 回到客户端机器上,克隆项目试试:
git clone ssh://git@gitlab.synology.com:10022/zq2599/test001.git
  1. 如下图,代码下载成功:
    在这里插入图片描述
  2. 再来试试修改内容能否成功提交,操作命令如下图所示:
    在这里插入图片描述
  3. 再去网站上看看,内容已经成功提交:
    在这里插入图片描述
    至此,群晖服务器上已成功安装了GitLab,接下来可以愉快的折腾GitLab CI了;

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30663.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

群晖安装aria2

下载镜像:oldiy-aria2-ui-ng1 新建文件夹:aria2 -conf 设置rpc密钥,之前环境变量里面设置的secret 设置bt服务器地址 https://edam.top/tk/ 最后,需要一个热门的文件来下载,我这边使用的是【ubuntu-21.10-desktop-amd…

虚拟机安装群晖

1.准备文件 下载链接 群晖助手、群晖pat文件、虚拟机文件 2.记事本编辑虚拟机vmx文件 修改版本号与虚拟机版本一致 3.双击vmx文件 选择虚拟机 右键设置参数如图 4.安装群晖助手 启动虚拟机打开助手 搜索联机 等待加载 点击安装 选择pat 等待安装 配置账号信息登录

CentOS7设置登录次数限制

最近我的1核2G服务器居然都被人盯上了(逃 每天都有大量登录失败的记录,防止被暴力破解,修改了ssh默认的22端口,结果还是被人扫描出了修改后的端口。遂添加如下登录次数限制。 使用系统版本:CentOS7.6 修改文件&#…

金蝶K3WISE V14.0注册方法

金蝶K3WISE V14.0破解注册码,安全可靠,使用稳定。K3 WISE的最后一个离线版本。也是最稳定的版本。欢迎联系,联系方式见下图。 经常长期测试,该版本可以使用。 正版K3WISE,价格在几万-几十万,如果你使用破解…

PyTorch中的Element-wise operations

1. What does element-wise mean? 逐个元素操作是两个tensor之间的操作,该操作在相应tensor内的对应元素上进行, t1和t2中的1和9就是tensor中的对应元素。 加法是按element-wise进行的运算,实际上,所有算术运算(加,减,乘和除)都是按逐个元素进行的运算。 标量值是Ran…

SoftMax温度系数temperature parameter

深度学习中的temperature parameter是什么 问题来源 在google的论文《Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations》中看到这个公式: 对于这个t很好奇。 先简单介绍一下这篇论文,用双塔做推荐,左侧是user特征&…

采用热电偶温度传感器实现超高精度温度跟踪控制的解决方案

摘要:针对温度跟踪控制中存在热电堆信号小致使控制器温度跟踪控制精度差,以及热电阻形式的温度跟踪控制中需要额外配置惠斯特电桥进行转换的问题,本文提出相应的解决方案。解决方案的核心是采用一个多功能的超高精度PID控制器,具有…

Linux如何通过sensors来监控CPU温度

当你在linux系统下运行一下比较占用CPU资源的程序时,你会很关心你的CPU是否超温,小编就在介绍下如何实时监控CPU的温度 1、首先查看是否安装sensors包,使用以下命令查看: rpm -qa|grep sensors 2、如果没有安装,Cent…

s-tui:在 Linux 中监控 CPU 温度、频率、功率和使用率的终端工具

一般每个 Linux 管理员都会使用 lm_sensors 监控 CPU 温度。lm_sensors (Linux 监控传感器)是一个自由开源程序,它提供了监控温度、电压和风扇的驱动和工具。 如果你正在找替代的 CLI 工具,我会建议你尝试 s-tui。 它其实是一个…

AHT20温度采集

AHT20温度采集 1.“软件I2C”和“硬件I2C”2.stm32f103指南者外接AHT20进行温度采集。连接硬件代码实现 1.“软件I2C”和“硬件I2C” 所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚bai也是专用的;软件I2C一般是用GPI…

基于CH32V307的温度显示功能

第一部分 设计概述 1.1 设计目的 在智能工业生产现场中,生产设备的控制依赖于传感器读数以及相关算法等。而传感器起着至关重要的作用,传感器的驱动和数据传输依赖于微控制器, 系统基于沁恒 CH32V307 微控制器进行数据收集、服务器进行数据处…

NetSuite nlapiRunReport隐秘的API

作为中国现金流量表剖析的后续篇,今朝我们谈一个隐秘函数。在几周之前,当用户问我:“SuiteScript能调用标准财务报表的运行结果么?”。我的答案是“No!”,斩钉截铁。但是直到我们从代码堆里发现了这个API -…

被 ChatGPT 点燃的向量数据库们

主要观点: 向量数据库可以让开发者以向量嵌入的形式处理非结构化数据(两个向量之间的距离代表了它们的关联性),这对于使用和扩展大型语言模型(LLM)尤为重要。 1、Pinecone 是个全托管的 SaaS 向量数据库厂商…

AI批改英语作文行不行?免费,覆盖雅思考研四六级,打分评语纠错都得有 | 测评...

茕茕 发自 凹非寺量子位 报道 | 公众号 QbitAI 我,一个科技小编,最近在跟国外大佬的邮件交流中,感到飘过六级后的自己英语写作水平那真是日渐捉急。 从句怎么用?时态对不对?看着对面主编犀利的目光,那一瞬间…

如何让ChatGPT成为你最佳的模拟面试官

正在上传…重新上传取消 ChatGPT云炬学长 1 人赞同了该文章 如何让ChatGPT成为你最佳的模拟面试官随着技术的不断发展,越来越多的企业开始使用人工智能面试官来帮助筛选候选人,ChatGPT作为其中的一种代表,正在受到越来越多的关注。那么如何…

春种一粒粟:企业如何修炼好云原生内功?

日月盈昃,辰宿列张。寒来暑往,秋收冬藏。 《千字文》里蕴藏了一种人与天地之间共处的智慧,那就是想要收获粮食,一定要提前播种。农耕如此,百业如此,数字化创新也是一样。 数字化技术,已经成为全…

《云原生构建数字世界》简介

云原生是在云计算时代指导企业基于云架构设计和开发应用,并将应用向云端迁移的一套全新的技术理念。与传统应用相比,所谓的云原生应用即为云而生。构筑数字世界新未来的关键是用云原生的思维去践行,未来数字世界的基础就是建立在云原生之上&a…

用云原生思维践行云原生,你做对了吗?

有了ChatGPT,你还会再用关键字进行搜索吗?这就像企业已经上了云,还会再退回老路,自己摆弄服务器、存储吗?无论从技术的持续演进,还是从应用现代化的需求来看,企业上云,开弓没有回头箭&#xff…

字符串 - 二进制和文本字符串 - 探究

1.应用场景 主要用于探究字符串中的二进制和文本字符串,以及它们的区别和应用场景。 2.学习/操作 1.文档阅读 重要来自于与chatgpt的对话问答 以及其他技术文章 2.整理输出 2.1 是什么 二进制和文本字符串都是计算机中常用的数据类型,前者主要用于存储…