在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操作了。

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

相关推荐
gxhlh6 小时前
局域网中 Windows 与 Mac 互相远程连接的最佳方案
windows·macos
不会飞的小龙人9 小时前
Docker Compose创建镜像服务
linux·运维·docker·容器·镜像
不会飞的小龙人9 小时前
Docker基础安装与使用
linux·运维·docker·容器
Mbblovey9 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求
张3蜂10 小时前
docker Ubuntu实战
数据库·ubuntu·docker
笔耕不辍cj13 小时前
两两交换链表中的节点
数据结构·windows·链表
Ase5gqe14 小时前
Windows 配置 Tomcat环境
java·windows·tomcat
染诗14 小时前
docker部署flask项目后,请求时总是报拒绝连接错误
docker·容器·flask
张3蜂16 小时前
docker 部署.netcore应用优势在什么地方?
docker·容器·.netcore
dntktop18 小时前
隐私保护+性能优化,RyTuneX 让你的电脑更快更安全
运维·windows