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

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

相关推荐
别挡15 分钟前
CentOS Stream 8中安装和使用 Docker
linux·docker·centos
伍心35 分钟前
004: VTK读入数据---vtkImageData详细说明
c++·windows·microsoft·mfc·软件工程·visual studio
愤怒的代码1 小时前
Centos使用阿里云镜像安装docker
linux·docker·centos
汪公子4922 小时前
使用docker部署考试系统
docker
好奇的菜鸟3 小时前
如何使用Docker快速启动Nginx服务器
服务器·nginx·docker
花菜回锅肉3 小时前
开源可视化大屏superset Docker环境部署
数据仓库·docker·容器·开源·superset
wd5205214 小时前
常用环境部署(十七)——Docker安装pritunl+openvpn
运维·docker·容器
weixin_349790955 小时前
python脚本源码如何使用PyOxidizer编译Windows可执行文件
开发语言·windows·python
Deng_Xian_Sheng5 小时前
[Deepin] 简单使用 RustDesk 实现远程访问Deepin
frp·内网穿透·远程桌面·deepin·rustdesk
Watermelo6175 小时前
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
java·spring boot·docker·微服务·云原生·容器·devops