在windows本地机搭建gitlab

在windows本地机搭建gitlab

  • [1. 解决方案](#1. 解决方案)
  • [2. docker安装gitlab](#2. docker安装gitlab)
    • [2.1 下载Docker Desktop](#2.1 下载Docker Desktop)
    • [2.2 安装gitlab的docker](#2.2 安装gitlab的docker)
    • [2.3 配置gitlab网页](#2.3 配置gitlab网页)
    • [2.3 配置gitlab配置文件](#2.3 配置gitlab配置文件)
  • [3. frp端口转发](#3. frp端口转发)
  • [4. ssh密钥配置](#4. ssh密钥配置)
  • [5. 运行](#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官方镜像(这一步需要用到一些魔法妙妙工具):

bash 复制代码
docker search gitlab/gitlab-ce
docker pull gitlab/gitlab-ce

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

bash 复制代码
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中输入:

bash 复制代码
ssh-keygen -t rsa -C "你的邮箱地址"

所有选项都直接回车即可,直到全部完成。

然后查看公钥内容:

bash 复制代码
cat ~/.ssh/id_rsa.pub

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

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

5. 运行

用你的常用账户在台式机B的gitlab后台页面上创建项目,进入项目后点击代码,然后复制SSH克隆地址。

保证frp的客户端与服务端已经正常启动,此时你应该可以在笔记本A上使用刚刚复制的SSH克隆地址运行git clone命令以及一系列其它的git操作了。

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

相关推荐
Clockwiseee1 小时前
php伪协议
windows·安全·web安全·网络安全
玖疯子1 小时前
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
docker
暴富的Tdy1 小时前
【快速上手Docker 简单配置方法】
docker·容器·eureka
Karoku0662 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
唐宋元明清21882 小时前
.NET 阻止系统睡眠/息屏
windows·电源
saynaihe4 小时前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
yylの博客4 小时前
Windows通过git-bash安装zsh
windows·git·bash·zsh
进击的code5 小时前
windows 下使用WLS2 编译aosp Android14并刷机到pixle 5a
windows
G_whang5 小时前
centos7下docker 容器实现redis主从同步
redis·docker·容器
认真学习的小雅兰.5 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker