用飞牛Nas搭一个轻量 GitHub:Gitea + cpolar 打造私有 Git 平台(支持公网访问)

前言

如果你平时经常写脚本、改配置、折腾 Docker 项目,那么很容易遇到一个问题:代码越来越多,但管理越来越乱。

放在 GitHub 上担心隐私,部署 GitLab 又太重,只靠本地文件夹保存又不方便版本管理。对于个人用户、小团队,或者 NAS 玩家来说,一个轻量级的私有 Git 平台会更合适。

这篇文章就以飞牛 NAS 为例,使用 Docker 部署开源代码托管平台 Gitea。它支持私有仓库、Issue、Pull Request、Wiki 等常用功能,使用体验接近 GitHub/GitLab,但资源占用更低。

部署完成后,本文还会通过 cpolar 将 Gitea 的 Web 服务映射到公网,并配置固定二级子域名。这样即使不在局域网内,也能通过固定地址访问自己的私有 Git 平台,随时管理代码仓库。

1 什么是Gitea?

开源仓库地址:https://github.com/go-gitea/gitea

Gitea 是一个开源、轻量级的 Git 代码托管平台,可以理解为一个可以自己部署的“小型 GitHub”。

它支持常见的代码托管功能,比如:

  • 创建公开仓库和私有仓库
  • 在线浏览代码、提交记录和分支
  • Issue、Pull Request、Wiki
  • 用户权限管理
  • SSH / HTTP Git 克隆
  • Web 页面管理项目

相比 GitLab,Gitea 的资源占用更低,部署也更简单。对于个人开发者、小团队、NAS 用户来说,它非常适合用来搭建自己的私有代码仓库。

如果你只是想管理脚本、配置文件、Docker Compose 项目、学习代码、个人笔记仓库,那么 Gitea 基本已经够用。

2 部署前准备

本文以飞牛 NAS 为例,通过 Docker 部署 Gitea。在开始之前,需要准备好一台已经安装飞牛系统的 NAS(当然其他的系统有Docker同样可以):
image-20260708172008640

本期使用的设备是rk3566刷入的arm版飞牛系统,设备内存约为 4GB,内置 eMMC 存储约为 8GB。虽然存储才8G,但是可以内置插入一块sata硬盘。Gitea 本身比较轻量,用来搭建个人私有 Git 平台、管理脚本代码、保存 NAS 配置文件等,基本是够用的。

如果你也想尝试玩玩这个设备并且刷入飞牛Nas系统,可以参考如下这篇文章:

https://www.cpolar.com/blog/tutorial-on-installing-arm-version-of-feibo-nas-system-on-rk3566-device-even-beginners-can-easily-complete-it

有详细的图文教程,简单且好上手:
image-20260708174620941

好了,接下来就开始部署Gitea之旅吧!

3 使用Docker部署Gitea

首先,访问你的飞牛Nas首页,然后点击Docker图标进入,确保Docker服务是【开启】状态:
image-20260708180310377

接着选择【镜像仓库】菜单,来到镜像仓库页面,搜索【gitea】回车,然后点击gitea/gitea这行末尾的下载图标,进行下载该镜像,镜像标签默认latest即可:
image-20260708180451802

下载完成后,切换到【本地镜像】菜单,点击启动的图标按钮:
image-20260708180710564

勾选开机自动开启,然后下一步:
image-20260708180738875

来到端口配置页面,将左边部分22端口修改为【2222】端口,默认22端口为ssh端口,不修改后续可能会冲突。3000端口也可以自行修改或保持默认然后继续下一步即可:
image-20260708181003018

接着,勾选【创建后启动】,然后点击创建容器:
image-20260708181057242

接着,左侧菜单切换至【容器】菜单,鼠标上移至gitea的链接图标,选择3000端口点击:

image-20260708181147317

点击后就会跳转到gitea的初始化配置页面:
image-20260708181300539

数据库默认为SQLite3,修改其中的站点名称为你喜欢的名称或保持默认,然后ssh服务端口改为【2222】:
image-20260708181800631

接着滚动到底部,点击立即安装即可(如果需要配置电子邮箱,也可以在这一步进行配置):
image-20260708181929506

点击立即安装后,页面会显示【正在安装,请稍等】,安装完成后会进入注册页面:
image-20260708182042712

注册的第一个账号为管理员账号,拥有管理员权限。注册完成后,就会来到如下页面:
image-20260708182151306

这样Gitea的安装部署和初始化就完成啦!

4 创建第一个仓库

首先,点击右上角【+】号,点击创建仓库:
image-20260709163041427

填写完成基本信息后,滚动到底部点击创建仓库进行创建,创建完成后即可看到创建成功,如下图所示:
image-20260709163211099

此时如果你的电脑或者其他设备和这台飞牛Nas处于同一个局域网下,就可以访问到这个Gitea站点,然后进行该仓库关联和提交推送文件了。这里以新建文件举例,点击新建文件按钮:
image-20260709163606221

添加完成后,可以看到仓库中多了一个【README.md】的文件了,并且也直接渲染了该文件的内容:
image-20260709163706128

后续如果需要上传本地项目,也可以在电脑上使用 Git 命令,将本地代码提交到这个仓库中。比如仓库页面中会提供 HTTP 和 SSH 两种克隆地址,根据自己的使用习惯选择即可。 对于日常保存脚本、Docker Compose 文件、NAS 配置文件、学习项目来说,这样一个私有仓库就已经比较够用了。代码不再散落在各个文件夹里,后续修改、回退、查看历史记录也会方便很多。

5 迁移外部仓库

除了手动创建新仓库以外,Gitea 还支持从外部 Git 平台迁移仓库,比如 GitHub、Gitee、GitLab 等。如果你之前已经有一些项目托管在其他平台,也可以直接迁移到自己的 Gitea 私有平台中。 首先,点击右上角【+】号,选择【迁移外部仓库】:

image-20260709164218959

进入迁移页面后,可以看到 Gitea 支持多种迁移来源。这里以 GitHub 仓库为例,只需要填写原仓库的克隆地址即可:

image-20260709164423241

稍等一会儿(等待时长取决于目标的仓库大小),即可看到目标仓库完整的显示在我们当前Gitea站点下啦:

image-20260709164552399

并且克隆迁移过来其中的图片一样也都能正常显示:

image-20260709170003116

这样,你在 GitHub 上已有的项目就可以快速迁移到自己的 Gitea 私有平台中。后续无论是代码提交、版本管理,还是仓库备份和团队协作,都可以直接在自建的 Gitea 中完成,不再完全依赖外部代码托管平台。

6 下载安装cpolar

到这里,Gitea 已经在飞牛 NAS 上部署完成,也可以正常创建仓库、上传代码和迁移外部仓库。不过此时的 Gitea 仍然主要运行在 本地局域网环境 中,一旦离开家里或公司网络,就很难直接访问这个私有 Git 平台。 这对于代码管理来说会有些不方便。

比如外出时想查看某个项目文件,换一台电脑想 git clone 仓库,或者需要远程提交、同步代码,如果只能依赖局域网地址,就会受到很大限制。尤其是大多数家庭宽带和 NAS 环境并没有 公网 IP,手动配置路由器端口映射、DDNS、防火墙规则也比较麻烦。

所以接下来使用 cpolar 内网穿透,将飞牛 NAS 上运行的 Gitea Web 服务映射到公网。这样即使没有公网 IP,也不用折腾路由器配置,就可以获得一个外网访问地址,实现 远程访问 Gitea、公网克隆仓库、固定域名长期使用

6.1 什么是 cpolar?

cpolar

cpolar 是一款内网穿透工具,可以把局域网内运行的服务映射到公网。

简单来说,只要服务已经在本地跑起来,比如本文中的 Gitea 3000 端口,就可以通过 cpolar 创建公网访问地址。这样外部设备不需要配置路由器端口转发,也能远程访问本地服务。

cpolar 支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台,也适合飞牛 NAS 这类支持 SSH 和 Docker 的设备使用。

6.2 安装 cpolar

首先,进入【系统设置】中,选择【SSH】,将其启用:

image-20260505174623872

接着,电脑摁下【Win + X】键,选择【终端(管理员)】打开PowerShell窗口:

image-20260505174939658

然后在终端输入如下ssh命令,进行远程连接你的飞牛Nas终端:

ssh rk3566@192.168.50.212

如下图所示:

111

接着,在终端执行如下命令,切换至root用户(输入密码时不会显示):

sudo -i

image-20260505180939492

然后,执行下面命令安装 cpolar:

sudo curl https://get.cpolar.sh | sh

如下图所示:

image-20260509152034028

安装完成后,执行下面命令查看 cpolar 服务状态:

sudo systemctl status cpolar

如下图所示:

image-20260509152054654

如果状态中显示 【active (running) 】就说明 cpolar 已经正常启动。

接着,在浏览器中输入下面地址,访问 cpolar 的 Web UI 控制台,例如我这里的飞牛 NAS IP 是 192.168.50.212,所以访问地址就是:

http://192.168.50.212:9200

如下图所示:

image-20260509152129581

可以看到,已经成功进入 cpolar 的 Web UI 页面。如果还没有注册 cpolar 账号,也可以点击页面底部的注册入口先完成账号注册。

7 随机域名方式(免费测试)

随机域名方式更适合临时测试或短期使用。使用该方式时,公网访问地址会在一段时间后发生变化,通常不适合长期固定访问。不过它的优点是配置简单、可以免费体验。如果后续需要长期访问 Gitea,或者希望团队成员使用同一个稳定地址,可以继续参考后面的 固定域名方式,访问体验也会更稳定。

首先,点击左侧菜单栏的【隧道管理】,展开进入【隧道列表】页面,页面下默认会有 2 个隧道:

  • ssh隧道,指向22端口,tcp协议
  • website隧道,指向8080端口,http协议(http协议默认会生成2个公网地址,一个是http,另一个https,免去配置ssl证书的繁琐步骤)

image-20260509152805723

点击编辑【website】隧道或创建一条新的隧道,设置一个隧道名称(自定义即可),协议选择【http】,本地地址填写Gitea的访问端口【3000】,地区这里选择的【China VIP】,最后点击更新:

image-20260709183436735

创建或者更新完成后,接着点击【状态>在线隧道列表】,可以看到同一个隧道生成了两个不同协议的公网访问地址,一个是 http,另一个是 https:

image-20260709200552500

这里以https为例,访问测试一下:

image-20260709202049277

访问成功!这说明飞牛 NAS 上运行的 Gitea 服务,已经可以通过 cpolar 生成的公网地址访问了。此时即使不在同一个局域网下,也可以通过浏览器打开自己的 Gitea 私有 Git 平台。

8 固定域名方式(长期使用)

通过前面的随机域名方式,我们已经验证了 Gitea 可以正常通过公网访问。不过随机域名会不定期变化,对于普通 Web 页面来说可能只是重新打开一个新地址,但对于 Git 仓库来说会更麻烦。

因为当我们执行 git clonegit remote add origin 后,仓库地址会被保存到本地 Git 配置中。如果访问域名变化,后续 git pullgit push 都可能无法正常使用,还需要手动修改远程仓库地址。

所以如果准备把 Gitea 当作长期使用的私有 Git 平台,更推荐配置 固定二级子域名。这样后续无论是浏览器访问、收藏书签,还是远程克隆仓库,都可以使用同一个稳定地址。

8.1 保留固定二级子域名

首先,登录 cpolar 官网后台,进入 预留 页面:

https://dashboard.cpolar.com/reserved

在左侧菜单中选择【预留】,找到【保留二级子域名】配置项。

image-20260709202558159按照下面信息填写:

配置项 填写说明
地区 选择和前面隧道一致的地区
名称 自定义二级子域名,例如 gitea01注意:该项不能重复,二级子域名名称是唯一的
描述 填写任意方便辨识的备注即可

填写完成后,点击【保留】按钮。保留成功后,会得到一个固定的二级子域名。后续我们就可以把这个固定域名绑定到 Gitea 隧道上。

8.2 修改 Gitea 隧道为固定域名

回到飞牛 NAS 上的 cpolar Web UI 管理界面,点击左侧菜单【隧道管理】→【隧道列表】,找到前面配置的 Gitea 隧道,点击【编辑】:
image-20260709202917519

将域名类型修改为【二级子域名】,并填写刚才在官网后台保留的二级子域名,然后点击更新按钮:
image-20260709203428250

更新完成后,点击左侧菜单【状态>在线隧道列表】,可以看到 Gitea 隧道已经变成固定公网地址:
image-20260709203747644

复制生成的固定公网地址,在浏览器中访问:

image-20260709203951759

可以看到,同样可以通过固定公网地址访问到 Gitea 页面。这样后续就不用担心随机域名变化,无论是浏览器访问,还是复制仓库地址进行 git clone,都会更加稳定。

9 使用公网地址克隆仓库

Gitea 的公网访问配置完成后,接下来我们再测试一下 Git 仓库是否可以通过公网地址正常克隆。 首先,点击首页的探索按钮,可以看到前面迁移过来的仓库和手动创建的test仓库:
image-20260709204728366
就以迁移过来的仓库为例,点击进入仓库页面,复制仓库的地址:
image-20260709204809449

接着使用如下克隆命令,进行克隆拉取仓库:

git clone https://gitea01.vip.cpolar.cn/admin/hp-prodesk-600-g4-efi.git

如下图(确保电脑上已经安装了git环境,这里演示的为Windows终端拉取):
image-20260709205025041

可以看到,仓库已经成功克隆到本地。这样就说明 Gitea 不只是 Web 页面可以通过公网访问,仓库本身也可以通过固定公网地址进行 git clone 拉取。

总结

通过这篇文章,我们在飞牛 NAS 上完成了 Gitea 的部署,并创建了自己的私有 Git 仓库。相比把代码散落在本地文件夹里,Gitea 可以更方便地管理脚本、配置文件、Docker 项目和个人代码,也支持从 GitHub、Gitee、GitLab 等平台迁移已有仓库。

同时,借助 cpolar 内网穿透,我们将 NAS 上的 Gitea 服务映射到了公网,并配置了固定二级子域名。这样即使没有公网 IP,也不用折腾路由器端口映射,就可以在外网访问自己的私有 Git 平台,进行仓库浏览、代码克隆和远程同步。

对于个人开发者、NAS 用户或小团队来说,这套方案整体比较轻量,部署成本低,也更容易长期维护。如果只是想搭一个自己的“轻量 GitHub”,用 Gitea + cpolar 基本就能满足日常代码管理和远程访问需求。

感谢您阅读本篇文章,有任何问题欢迎留言交流。 cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Share:

发表回复

目录

On Key

推荐文章