保姆级教程,自建公网可访问的Git私有仓库

这篇具有很好参考价值的文章主要介绍了保姆级教程,自建公网可访问的Git私有仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.1 环境背景

互联完公司的产品项目,离不开多名工程师的协同开发,以及离不开Git仓库。

Git在线仓库众多,但是对于大点的需求,大概率要付费,最大的风险还是源码不在自己手上。

随着互联网的安全监管越来越多,越来越全,**************************

总之内,如果是个大公司,项目源码在自己手上是最安全的;

如果是小公司,搭建一个内部的Git仓库是非常方便的,降低成本。偶尔Git仓库需要外网,只需要映射到公网即可。

那我们这次就来学习,搭建一个私有Git仓库,并接入公网访问。

0.2 思路分析

私有Git仓库,需要多账号管理、多账号管理、权限管理、数据存储等等,一个Git仓库该有的功能,都应该有。

另外,还得顾忌部署简单、丰富可拓展的特点,这里直接选择开源的Gitea项目,可以直接使用,还可以二次开发。

保姆级教程,自建公网可访问的Git私有仓库

本地仓库部署好之后,还需要从公网访问本地的Git仓库。

对比其他的服务,Git所需的网络特点:

  • 不连续,只有pull和push的时候需要同步;
  • 网速要求高,速度越快传输越快;
  • 只有外网有需求时,才需要联网,不需要长年连接网络;

针对以上特点,推荐使用内网云(neiwangyun.net) - 基于SSH协议的内网穿透服务服务,优势有:

  • 按月付费,最低一个月5元,成本低,需要时再开;
  • 无客户端,每台电脑都会有ssh命令,包括win7、win10、win11;
  • Gitea有两个端口,配合内网云的服务,可选ssh服务和http服务;
    • 只转发ssh,则外网可用ssh同步,但是无法访问网页,保障网页信息和仓库的安全;
    • 同时转发ssh和http,则外网有内网一样的体验;
  • 单条隧道同时支持http、https、IP端口三种连接方式,即一条隧道包含:
    • 一个二级域名【免费】;
    • 一个开放的端口号【免费】;
    • 一个SSL安全证书【免费】;
    • 同时支持http和https协议【免费】;
    • 一个固定速度的网络带宽【收费】;

保姆级教程,自建公网可访问的Git私有仓库

0.3 物料准备

服务器系统:Debian 11【只要是Linux/Macos都行,虚拟机中的Linux系统也行】

预装环境:Docker、Docker-Compose、Supervisor【进程管理工具】

Gitea程序:docker-compose.yml

version: "3"
​
networks:
  gitea:
    external: false
​
services:
  server:
    image: gitea/gitea:1.16.7
    container_name: gitea
    restart: always
    networks:
      - gitea
    volumes:
      - /root/gitea-data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "10022:22"

内网云隧道:两条隧道,请根据需要自行购买1条或2条,或者使用免费隧道测试。

免费隧道:ssh -R 80:127.0.0.1:8000 sh@sh3.neiwangyun.net

付费隧道:

  1. Gitea-Web是给Gitea的web界面准备的隧道,方便浏览器访问web界面,以及输入账号密码的pull和push功能
  2. Gitea-SSH是给Gitea的ssh准备的隧道,ssh方便使用秘钥实现免密的pull和push功能

保姆级教程,自建公网可访问的Git私有仓库

1. 搭建本地Gitea仓库

首先在本地的Debian系统中,搭建Gitea仓库。

上面有个docker-compose.yml文件,具体的使用方式,是将这个文件放到一个空文件夹中,例如gitea-docker文件夹

保姆级教程,自建公网可访问的Git私有仓库

准备就绪之后,使用docker-compose命令,docker-compose up,可以直接生成Docker镜像,以及直接运行Docker容器,如下图:

保姆级教程,自建公网可访问的Git私有仓库

启动之后,就可以访问IP:Port,我这里是 192.168.100.33:3000,就可以看到Gitea的部署页面了

保姆级教程,自建公网可访问的Git私有仓库

此时的终端是docker-compose运行状态,可以选择ctrl+c,先停止运行,则Gitea关闭。

因为docker-compose up会新建镜像,并运行容器,所以现在可以启动容器即可,就可以重新运行Gitea容器。

保姆级教程,自建公网可访问的Git私有仓库

PS:docker start 3b7中的3b7,是上一行的Container ID,也叫做容器ID,可以简写,可以写全,都行。

2. Git仓库环境配

Gitea配置信息的设置,第一步就是URL。

因为Gitea是Docker访问,所以在本地,使用IP:3000的形式,可以直接访问。

那在配置的时候,为了方便起见,直接将服务器域名基础URL都设置成Gitea-Web的网址就行了。

保姆级教程,自建公网可访问的Git私有仓库

服务器域名,直接是一个二级域名,直接填。基础URL这个,包含http协议的,你写https可以,写https也行。

URL填好之后,看到下面的可选设置,其中管理员账号设置,这个很有必要。

打开管理员账号设置,填上用户名、管理员密码、确认密码以及一个电子邮件地址。

这个电子邮件地址不需要邮件验证码确认,能记住即可。

保姆级教程,自建公网可访问的Git私有仓库

填完之后,点击立即安装,需要点时间等待。

等待结束,如果页面刷新不出来,别怕,网址填IP:PORT,例如我的 192.168.100.33:3000,多刷两遍。

保姆级教程,自建公网可访问的Git私有仓库

3. Gitea接入公网访问

前面在Gitea的配置界面,已经把公网URL写进了配置文件,但是还不能直接访问,因为还没把端口接入公网。

首先打开内网云的控制台,控制台左侧的内容栏,找到可用隧道并点击,也就是上面的第三个图。

保姆级教程,自建公网可访问的Git私有仓库

看到Gitea-Web的卡片,操作那里有个查看,点击查看按钮,弹出一个新的界面。

保姆级教程,自建公网可访问的Git私有仓库

图中框中的部分,一个是域名,也就是写进Gitea配置信息的;另一个就是Gitea所在主机接入公网的命令。

复制命令,将里面的8000改成3000,因为Gitea的web界面是3000端口。

命令改好之后,到Gitea所在的主机上,打开终端Terminal,粘贴命令并运行,如下图:

保姆级教程,自建公网可访问的Git私有仓库

终端中展示出了username、http、https,说明接入公网成功,可以使用浏览器打开公网的域名了,如下:

保姆级教程,自建公网可访问的Git私有仓库

如果有报错,或者正常运行但是打不开,请联系内网云的客服,内网云提供7*24小时的手把手技术支持

4. Git仓库配置更改

在进入web和ssh端口测试,以及端口公网测试的时候,先来说一下Gitea配置完成之后的配置信息修改。

Gitea是Docker形式部署,所以Gitea端口有Docker一套,宿主主机一套。

当前我的Gitea-Docker部署,端口对应情况是:

  • 宿主主机是3000的web端口,对应Docker中的3000端口;
  • 宿主主机是10022的ssh端口,对应Docker中的22端口;

Docker中的端口通常是不能改的,宿主主机的端口,在Docker启动后也是不能改的。

内置的配置无法改动,这是正常运行的配置;但是显示界面的内容是可以改动的,我们需要自定义。

例如域名:http://xayxfmsh3.neiwangyun.net;

现在来打开Gitea的配置文件,文件位置在docker-compose.yml写明了,在/root/gitea-data:/data这里。

具体路径是:/root/gitea-data/gitea/conf/,文件名是app.ini

保姆级教程,自建公网可访问的Git私有仓库

打开app.ini,开始备注特定的字段,并修改成我们需要的内容。

APP_NAME = 内网云-Gitea
RUN_MODE = prod
RUN_USER = git
​
[repository]
ROOT = /data/git/repositories
​
[repository.local]
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
​
[repository.upload]
TEMP_PATH = /data/gitea/uploads
​
[server]
APP_DATA_PATH    = /data/gitea
DOMAIN           = xayxfmsh3.neiwangyun.net  # WEB的域名
SSH_DOMAIN       = xayxfmsh3.neiwangyun.net  # SSH的域名
HTTP_PORT        = 3000  #  不建议修改
ROOT_URL         = http://xayxfmsh3.neiwangyun.net/  # 根路由
DISABLE_SSH      = false
SSH_PORT         = 10022  # SSH的端口,可以修改,这里应该对应docker-compose.yml中的 10022
SSH_LISTEN_PORT  = 22  # SSH的监听端口,不要修改
LFS_START_SERVER = true
LFS_CONTENT_PATH = /data/git/lfs
LFS_JWT_SECRET   = DANys3I8hRddYjaMYd1ky7aiZ-8uxE1f1OxtKM2tagY
OFFLINE_MODE     = false

详细介绍:

  1. Domain和SSH_Domain是两个值,可以是两个不同的值;
  2. HTTP_PORT对应的是我们的docker-compose.yml文件中的3000端口,不用修改
  3. ROOT_URL是根路由,默认写Web的URL就可以了。
  4. SSH_PORT是SSH的显示端口,默认是22,这里应该对应docker-compose.yml中的 10022
  5. SSH_LISTEN_PORT是监听端口,这里不能修改

其他的未备注信息的字段,使用默认的配置即可,不改动。

重点说明:更改了配置文件,一定要重启Gitea这个Docker,一定要重启。

配置信息就介绍到此,当然这个app.ini中的这几个字段,只是我截取的一部分,下面还有很多可配置字段信息。

5. HTTP和SSh的仓库同步测试

URL配置好了,SSH的10022端口也配置好了,现在开始测试了。

预处理:新建一个仓库,里面有文件即可。

使用本地IP:PORT,即192.168.100.33:3000,仓库名称随意,里面选择包含一个.gitignore文件,如下图:

保姆级教程,自建公网可访问的Git私有仓库

配置完成之后,点击生成仓库,然后自动跳转到新仓库地址。

保姆级教程,自建公网可访问的Git私有仓库

第一个是HTTP形式的仓库同步,这个用的是URL,也就是上图中的Gitea-Web隧道。

开始测试前,把Gitea-Web的隧道重启一次,就是在终端中,断开之前的链接,然后再次运行,确保隧道在运行中。

保姆级教程,自建公网可访问的Git私有仓库

然后访问http或者http是的网址,检测下能否打开网页。

保姆级教程,自建公网可访问的Git私有仓库

正常访问没问题,然后进入仓库,拷贝http的url,测试使用git clone命令,拷贝到本地。

保姆级教程,自建公网可访问的Git私有仓库

因为我之前运行过git clone拷贝http链接,所以这次并未提示我输入账号密码。

正常情况下,输入账号密码是常规流程,而且很多系统或Git工具中,git会保留账号密码。

当前HTTP的git拷贝测试,没问题。接下来是SSH的拷贝测试。

6. SSH链接的Git clone拷贝测试

要使用SSH的Git clone拷贝,基础步骤:

  1. 确认你要使用的电脑,先生成ssh秘钥对,将公钥放到gitea网站上
  2. 启动Gitea-SSH隧道的命令,这次的端口是Gitea-SSH隧道的28716
  3. 复制ssh的网址,到电脑终端中,git clone ssh网址,并回车

先生成一个SSH密钥对,命令式 ssh-keygen -t rsa -C "这里任意",然后一路回车,就可以。

保姆级教程,自建公网可访问的Git私有仓库

生成完成之后,生成的文件,就在你的用户主目录下的.ssh文件夹中,如下图:

保姆级教程,自建公网可访问的Git私有仓库

生成的秘钥是一对,id_rsa和id_rsa.pub,pub后缀的文件就是公钥。

cat id_rsa.pub意思是显示这个文件的内容,把这个内容,复制,粘贴到Gitea里面,如下图示:

保姆级教程,自建公网可访问的Git私有仓库

保姆级教程,自建公网可访问的Git私有仓库

保姆级教程,自建公网可访问的Git私有仓库

如上图示,三步搞定。

搞定之后,启动隧道,注意这次的隧道,是转发的服务器端口是10022端口,公网端口则是28716端口,如下:

保姆级教程,自建公网可访问的Git私有仓库

保姆级教程,自建公网可访问的Git私有仓库

隧道启动了,现在可以测试拷贝了,首先进到仓库,点击SSH的按钮,就会显示SSH的链接,然后复制:

保姆级教程,自建公网可访问的Git私有仓库

回到你的电脑上,打开终端,写命令git clone ssh-link

保姆级教程,自建公网可访问的Git私有仓库

完成,SSH链接的公网clone测试顺利。

7. 持久化内网穿透服务

目前,Docker运行的Gitea很稳定,Gitea-Web和Gitea-SSH都是终端里面运行的,如果断开连接,则公网服务也就断了。

要想持久化,就需要借助其他工具,保持持久连接,在网络出现波动的时候,即使断了也可以自动重连。

这里推荐SuperVisor工具,简单易用。

首先在Docker所在的宿主主机进行安装,安装命令apt install supervisor,如下图:

保姆级教程,自建公网可访问的Git私有仓库

图中显示,已安装并正常启动。

然后进到配置文件,文件位置 /etc/supervisor

这里有一个配置文件/etc/supervisor/supervisord.conf,可以给配置文件加点内容,这样我们就可以通过web进行supervisor的管理。

打开supervisord.conf文件,往内容的底部,添加一段内容:

[inet_http_server]
port=0.0.0.0:9001
username=neiwangyun
password=neiwangyun

记住账号密码,然后重启服务,命令service supervisor restart

如果没有报错,就打开浏览器,访问宿主主机的IP:9001,这个端口是固定的,如下图:

保姆级教程,自建公网可访问的Git私有仓库

保姆级教程,自建公网可访问的Git私有仓库

当前supervisor进程管理内,没有可管理的服务,因为还没添加。

现在进到/etc/supervisor/conf.d目录内,这里是存放服务的地方,我们需要新建两个文件,内容如下:

[program:gitea-web]
command=ssh -R 80:127.0.0.1:3000 buladou041@sh3.neiwangyun.net
autostart=true
autorestart=true
numprocs=1
killasgroup=true
stopasgroup=true
stderr_logfile=/etc/supervisor/conf.d/gitea-web_err.log
stdout_logfile=/etc/supervisor/conf.d/gitea-web_out.log




[program:gitea-ssh]
command=ssh -R 80:127.0.0.1:10022 buladou042@sh3.neiwangyun.net
autostart=true
autorestart=true
numprocs=1
killasgroup=true
stopasgroup=true
stderr_logfile=/etc/supervisor/conf.d/gitea-ssh_err.log
stdout_logfile=/etc/supervisor/conf.d/gitea-ssh_out.log

以上就是两个文件内容,也就是我们用的那两个隧道命令,以及拓展了一些信息。

注意,根据这个模板做你自己的进程文件,你需要更换以下内容:

  1. 第一行的[program:servername],servername自己改,这个不能和其他文件的名称重复。
  2. 第二行的命令,改成你的端口,你的账号,你的命令。
  3. 倒数第二行,gitea-web_err.log,gitea-web这个自己改掉即可,不要重复,不然日志很乱。
  4. 倒数第一行,gitea-web_out.log,gitea-web这个自己改掉即可,不要重复,不然日志很乱。

内容准备好了,新建文件,把内容写进去。

文件名称没有特定要求,但有一点,一定要用.conf做文件后缀。

如下图:

保姆级教程,自建公网可访问的Git私有仓库

断开之前终端里面的隧道命令,然后重启supervisor服务,再打开IP:9001的网页,如下图:

保姆级教程,自建公网可访问的Git私有仓库

图中,running表示正常运行;如果是红色,那就是有异常了。

有问题,找内网云的客服,提供7*24小时的手把手售后服务。

到此,Gitea的本地搭建,以及公网映射服务,都搞定了,不是区域网络出问题,99%是可以使用的,稳得一批。

使用 IP:PORT 形式可以访问,URL:PORT 形式也可以自由访问。文章来源地址https://www.toymoban.com/news/detail-466864.html

到了这里,关于保姆级教程,自建公网可访问的Git私有仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

    转载自内网穿透工具的文章:使用Nextcloud搭建私人云盘,并内网穿透实现公网远程访问 Nextcloud,它是ownCloud的一个分支,是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在一个集中的位置,就像Dropbox一样。与Nextcloud的不同之处在于,它的所有功能都是开源的。它还将

    2023年04月26日
    浏览(45)
  • 私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问

    GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和

    2024年02月16日
    浏览(56)
  • 如何通过公网访问私有网盘,天翼网关如何端口转发

    有时候你需要在家建个私有网盘,服务器都买好了建立好了,就是外网访问不了,这时候怎么办呢 废话不多说,一步一步照做: 第一步 先确认以下有没有帮我这个文章点赞😄 确认自己有没有开通公网ip 直接百度搜索“ip”,然后看一下这个ip和下图这个位置的ip是否

    2024年02月15日
    浏览(43)
  • 私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」

    转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公网访问 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产

    2024年01月21日
    浏览(44)
  • 在Linux搭建GitLab私有仓库配置实现远程访问私有仓库Gitlab ——【内网穿透】

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 : 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby o

    2024年02月11日
    浏览(41)
  • 【0基础敲代码】如何使用使用SeaFile搭建私有云盘并公网访问

    目录 1. 前言 2. SeaFile云盘设置 2.1 Owncould的安装环境设置 2.2 SeaFile下载安装 2.3 SeaFile的配置 3. cpolar内网穿透 3.1 Cpolar下载安装 3.2 Cpolar的注册 3.3 Cpolar云端设置 3.4 Cpolar本地设置 4. 公网访问测试 5. 结语 现在我们身边的只能设备越来越多,各种智能手机、平板、智能手表和数码相

    2024年02月11日
    浏览(45)
  • 【私有云盘】搭建PHP轻量文件管理器 - TinyFileManager「公网远程访问」

    文件共享和查阅是现在网络最常见的应用场景,因此也产生了海量的应用,这些应用的功能都差不多,但是安装和部署的过程却差异巨大。不过对于使用者来说,能以最简单的安装过程实现最全面的文件上传下载功能,才是最符合需求的。今天,笔者就为大家介绍一款只有两

    2023年04月09日
    浏览(42)
  • 打造个人的NAS云存储-通过Nextcloud搭建私有云盘实现公网远程访问

    Nextcloud,它是ownCloud的一个分支,是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在一个集中的位置,就像Dropbox一样。与Nextcloud的不同之处在于,它的所有功能都是开源的。它还将敏感数据的控制和安全返回给您,从而消除了对第三方云托管服务的使用。 在本教程中

    2024年02月11日
    浏览(74)
  • Git——git clone私有仓库

    在clone的时候,在https://后面先加上github-username:github-token,再@项目的链接即可把项目clone下来。 GitHub:加的是token;(Token设置:设置Token) Gitee:加的是password; example: kyrle 是我的用户名 设置密码不用反复输入 http ssh 设置ssh链接:github ssh密钥配置 如果ssh无反应则尝试:

    2024年02月11日
    浏览(58)
  • Git连接远程仓库(私有/公开仓库),克隆代码

    git官网下载地址: https://git-scm.com/download/win 但是 ,git官网的话,下载速度比较慢,可以使用阿里的镜像下载速度会比较快: 阿里的git镜像下载地址: https://registry.npmmirror.com/binary.html?path=git-for-windows/ 另外,git相关的文档参考链接,包含搭配使用的客户端,插件,托管平台,

    2023年04月18日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包