在windows本地机搭建gitlab

news2025/1/30 16:28:04

在windows本地机搭建gitlab

  • 1. 解决方案
  • 2. docker安装gitlab
    • 2.1 下载Docker Desktop
    • 2.2 安装gitlab的docker
    • 2.3 配置gitlab网页
    • 2.3 配置gitlab配置文件
  • 3. frp端口转发
  • 4. ssh密钥配置
  • 5. 运行

1. 解决方案

注:gitlab只有linux版本,并不存在windows版本,并且需要公网IP用于外网访问。

手头需要用到的设备包含:
1、笔记本A,用于编写代码,以及从外网连接gitlab的ssh服务。
2、台式机B,高性能本地计算机,用于充当部署服务器,但是没有公网IP。
3、云服务器C,低性能服务器,运算性能很差,但是拥有公网IP与域名。
4、虚拟机D,在台式机B上运行的docker虚拟机

因此,解决方案是基于docker与frp端口转发实现。即在台式机B上使用docker安装配置gitlab服务器,然后通过端口穿透转发到云服务器C的公网IP与端口上,再通过笔记本A在外网对其进行访问。

2. docker安装gitlab

2.1 下载Docker Desktop

docker需要在windows安装Docker Desktop,从官方网站下载软件安装包后,在台式机B上安装即可。

2.2 安装gitlab的docker

注:docker desktop不支持事后修改端口映射,因此应该尽量保证所有端口映射在docker创建时都配置正确,否则只能删除重新新建docker虚拟机再配置了。

在台式机B上打开文件浏览器,在地址栏输入cmd后回车,打开cmd终端。
搜索并下载gitlab官方镜像(这一步需要用到一些魔法妙妙工具):

docker search gitlab/gitlab-ce
docker pull gitlab/gitlab-ce

然后在本地新建3个文件夹用于存放gitlab数据,分别是gitlab/data,gitlab/log和gitlab/config,之后新建docker服务器:

docker run -d \
--hostname localhost \
-p 8090:80 -p 10022:22 -p 443:443 \
--name gitlab \
--restart unless-stopped \
-v D:\docker\gitlab\config:/etc/gitlab \
-v D:\docker\gitlab\log:/var/log/gitlab \
-v D:\docker\gitlab\data:/var/data/gitlab \
gitlab/gitlab-ce:latest

-p xx:yy表示把台式机B的xx接口对应到虚拟机D的yy接口,即访问其中任何一个接口,等价于访问另一个接口。
-v xx:yy表示把台式机B的xx路径对应到虚拟机D的yy路径,即访问其中任何一个路径,等价于访问另一个路径,其中所有的文件修改都是同步的。

虚拟机D的80接口用于访问gitlab的控制后台网页,此时在台式机B上打开网址localhost:8090就会进入gitlab的后台管理网页,但由于gitlab启动速度较慢,因此可能要在启动后等待一段时间才能成功访问对应网页,但一般不会超过5分钟。

443端口用于邮件发送,如果只是私人使用,那不开启邮件验证也是无所谓的,可选。

虚拟机D的22接口用于ssh访问,也就是正式通过git操作拉取和上传的端口,这里配置的台式机10022接口即为访问gitlab传输服务所需要访问的接口。

2.3 配置gitlab网页

在台式机B上打开网址localhost:8090就会进入gitlab的后台管理网页,但由于gitlab启动速度较慢,因此可能要在启动后等待一段时间才能成功访问对应网页,但一般不会超过5分钟。

初次登陆用户为root,密码可以在gitlab/config/initial_root_password中找到。
登录后点击左上角的用户头像(默认是白球),然后选择Perferences,在左侧选择Perferences,然后在右边往下翻,设置语言为简体中文。保存设置并刷新网页。

在左侧选择密码,修改root用户密码。

点击左下角的Admin area,选择用户,即可创建自己平时使用的用户。创建时无法直接设置密码,但是创建完后可以直接编辑用户,然后设置密码,这样就不需要外发邮件验证了。

2.3 配置gitlab配置文件

进入gitlab/config/gitlab.rb,用编辑器打开,修改配置内容。

找到external_url并取消注释,配置为external_url 'http://你的域名',此处的域名为云服务器C的域名,前面必须加上http://,否则docker会无限崩溃重启。

找到gitlab_rails并取消注释,配置为gitlab_rails['gitlab_shell_ssh_port'] = 10022
10022设置为台式机B上对应虚拟机D的22端口的端口,但主要注意的是,实际使用时这个端口实际上是外网访问云服务器C时,云服务器C对应台式机B的10022端口的转发端口。但因为gitlab会自动生成根据台式机B确定的项目ssh地址,因此复制出来的地址是带有10022的,出于无需对链接手动修改的简便考虑,在云服务器C与台式机B之间的端口穿透使用相同的端口号,即10022对应10022。

完成修改配置后,用程序ui或者命令重启该docker,等待五分钟,如果能够成功进入8090端口的管理页面,代表成功。

3. frp端口转发

在台式机B与云服务器C上搭建frp端口穿透的服务端与客户端。
frp使用方式详见:架设游戏私服——内网穿透工具frp
此处使用时对TCP和UDP的443与10022都进行了同步转发。
因为我这里不需要考虑外网访问控制台的需求,所以没有对8090端口进行转发。

4. ssh密钥配置

首先在笔记本A环境下安装git,具体过程请搜索其它教程,完成本地版git的安装,与本地邮箱和用户名配置。
然后,在windows系统的搜索中搜索Git Bash,然后打开进入。
在Git Bash中输入:

ssh-keygen -t rsa -C "你的邮箱地址"

所有选项都直接回车即可,直到全部完成。
然后查看公钥内容:

cat ~/.ssh/id_rsa.pub

将打印出的以ssh-rsa开头的文本全部复制。

用你平时要用的用户在台式机B上登录gitlab后台网页,点击用户头像,然后选择编辑个人资料,在SSH密钥中添加你刚刚复制的密钥到你的账户。

5. 运行

用你的常用账户在台式机B的gitlab后台页面上创建项目,进入项目后点击代码,然后复制SSH克隆地址。
保证frp的客户端与服务端已经正常启动,此时你应该可以在笔记本A上使用刚刚复制的SSH克隆地址运行git clone命令以及一系列其它的git操作了。
在这里插入图片描述

踩了一整天坑之后,祝大家可以比我更加顺利吧【黑眼圈的疲惫眼神

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小柴带你学AutoSar系列三、标准和规范篇(2)BSWGeneral

BSWDistributionGuide BSW在AUTOSAR架构中的这里哦 BSW Distribution in Multi-Core Systems BSW Functional Clusters BSW功能集群是一组相关功能的模块 BSW functional clusters are groups of functionally coherent BSW modules. The following types of clusters might…

如何搭建云电脑?让数据更安全。。。。。。

上周,微软Windows系统的蓝屏故障对各行各业造成了严重影响。航空业首当其冲,当天所有航班停飞,人员滞留在机场。 酒店业也未能幸免,同样受到波及。 1. 故障分析及解决措施 本次蓝屏事件的导火索是CrowdStrike公司更新的驱动程序。CrowdStrike提供的解决方案相当复杂,用户需要…

JavaFX布局-ScrollPane

JavaFX布局-ScrollPane 常用属性paddingcontentvbarPolicyhbarPolicyfitToWidthfitToHeight 实现方式Java实现 一个容器组件,用于展示那些可能超出窗口尺寸的内容当内容超过容器的大小时,会自动出现滚动条 常用属性 padding 内边距,可以单独…

【开源分享】PHP在线提交工单源码|工单管理系统源码 (附源码搭建教程)

一、设备报修工作内容 1.工单管理:设备报修系统可以将设备故障统计为工单并对工单进行汇总管理。将工单数据进行归类,将故障分类进行查看、统计、分析等等。 2.设备状态:工单可通过用户上报设备状态数据进行查看,维修工程师在维…

跟李沐学AI:LeNet

LeNet整体由两部分组成:由两个卷积层组成的卷积编码器、由三个全连接层组成的全连接层密集快。 每个卷积块的基本单元是一个卷积层、一个sigmoid激活函数和平均池化层。每个卷积层使用5x5的卷积核和一个sigmoid激活函数。 这些层将输入映射到多个二维特征输出同时输…

保研机试练习:leetcode算法top200(第二弹)

🌮101.对称二叉树(简单) 🍟题目描述 🍟题目反思 对称二叉树,对每个节点来说,就是当前节点相同,且左右镜像相等。这道题目重点也是在于掌握递归检查树上。 🍟代码 /**…

C# 自定义控件无法加载

问题 在做winform开发时自己定义了一个控件,控件在工具箱中显示了,但是拖动到窗体设计器时会提示未能加载工具箱项xxx,将从工具箱中将其删除,如下图所示: 点击确定后,控件会从工具箱中移除。 解决方法 将 生成>…

深信服的云桌面操作简要

看了深信服的云桌面操作手册,讲真,我是没有耐心看的,656页,我是云桌面管理员,为了管理也必须耐着性子去看,但我看了40页就看不下去了,太啰嗦了。 深信服的技术人员安装好服务器后给我实际演示操…

【C++题解】1351. 买公园门票

欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1351. 买公园门票 类型:简单穷举 题目描述: 某公园门票价格为:成人票 8 元 / 张,儿童票 3 元 / 张;某旅游团来公园游玩&…

Memcached未授权访问漏洞

Memcached未授权访问漏洞 Memcache能够提供临时数据存储服务,可以提高网站的整体性能,但由于memcache安全设计缺陷,默认开放的端口是11211,导致不需要密码就可以访问,攻击者可以直接连接服务器的11211端口获取数据库中…

GIt最新教程通俗易懂

Git学习笔记 一、Git版本控制分类1.1 本地版本控制1.2 集中版本1.3 分布式版本控制系统1.5 Git和SVN的区别二、Git的历史 三、Gti基础学习3.1 Git的基础学习3.2 启动Git 3.3 Git基本的配置3.3.1 配置文件相关位置 四、Git基本理论(核心)4.1 Git 的工作流…

vue echarts 柱状图和折线图的组合

柱状图和折线图的组合代码如下&#xff1a; <template><div><div id"barLineChart" ref"barLineChartRef" style"width: 100%; height: 450px"></div></div> </template><script> import * as echar…

【收录率高丨最快会后3-4个月EI检索 | 往届均已EI检索】第四届光学与通信技术国际学术会议(ICOCT 2024,8月9-11)

欢迎参加第四届光学与通信技术国际学术会议&#xff08;ICOCT 2024&#xff09;&#xff0c;该会议将于2024年8月9-11日在南京举办。自2021年首次会议以来&#xff0c;ICOCT已经发展成为光学和通信领域较有影响力的国际会议之一&#xff0c;聚焦最前沿的技术进展与未来发展趋势…

C/C++大雪纷飞代码(完整代码)

目录 写在前面 C语言简介 EasyX简介 大雪纷飞 运行结果 写在后面 写在前面 本期博主给大家带来了C/C++实现的大雪纷飞代码,一起来看看吧! 系列推荐 序号目录直达链接1爱心代码C/C++爱心代码(完整代码)_爱心代码编程c++语言-CSDN博客2李峋同款跳动的爱心C/C++李峋同…

详解高性能中间件Iceoryx在ROS2中的使用

文章目录 0. 概述1. 系统架构对比1.1 移除 Master 节点1.2 引入 DDS 系统1.3 跨平台支持 2. DDS 系统的引入2.1 RMW 概述2.2 QoS&#xff08;质量服务策略&#xff09; 3. ROS2安装与配置3.1 一键安装3.2 官网教程 4. [ROS2 底层切换 Iceoryx 官方实现](https://github.com/ros…

安全与效率并重:利用PowerShell脚本实现SQL Server网络配置的自动化监控与日志

目录 脚本概述 步骤实现 注意事项 创建一个PowerShell脚本&#xff0c;用于自动发现并记录SQL Server上所有连接的网络配置细节&#xff0c;包括端口、协议和安全性设置&#xff0c;是一个非常实用的操作&#xff0c;特别是在需要定期审计或新服务器部署时。以下是一个创意性…

【深度学习】【框架】【基本结构】transformer

论文地址:https://arxiv.org/pdf/1706.03762 1. 整体结构 2. 内部结构 3. 公式 Transformer工作原理四部曲:Embedding(向量化)、Attention(注意力机制)、MLPs(多层感知机)和Unembedding(模型输出)。

实体业短视频基础剪辑:拍摄剪辑实用10大技巧+剪辑全集(29节)

课程目录 01.第一节|找对标.mp4 02.第二节|快速提取对标音乐.mp4 03.第三节|踩节拍.mp4 04.第四节|导入镜头.mp4 05.第五节|调节比例.mp4 06.第六节|变速.mp4 07.第七节|添加字幕.mp4 08.第一节|推镜头.mp4 09.第二节|拉镜头.mp4 10.第三节|下摇镜头.mp4 11.第四节|…

跟李沐学AI:AlexNet、VGG

目录 AlexNet架构 AlexNet总结 AlexNet实现 VGG块 VGG架构 VGG总结 AlexNet架构 输入图片为3x224x224维度&#xff1b;第一个卷积层核窗口大小为11x11&#xff0c;卷积层输出为96通道&#xff0c;步长为4&#xff1b;第一个最大池化层窗口大小为3x3&#xff0c;步长为2。…