尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

程序员最值钱的不是电脑,而是代码!我把代码库搬回了自己服务器

程序员最值钱的不是电脑,而是代码!我把代码库搬回了自己服务器
📅 发布时间:2026/6/20 0:10:34

前言

写代码的人几乎都用过GitHub、Gitee或者其他代码托管平台。

刚开始做个人项目的时候确实很方便,注册账号、创建仓库、上传代码,几分钟就能搞定。对于学习和开源项目来说,这种方式完全没有问题。但随着项目越来越多,代码越来越重要,不少开发者都会开始思考同一个问题:这些核心资产为什么一定要放在别人的平台上?

尤其是团队协作场景下,这种感受会更加明显。

内部项目、客户项目、商业代码、测试环境配置文件,这些内容很多时候并不适合公开托管。即便是私有仓库,也始终意味着数据保存在第三方服务器中。一旦遇到服务调整、账号限制或者网络访问问题,多少都会影响团队正常开发。对于企业来说,代码不仅仅是文件,更是最重要的数字资产之一。

很多团队因此开始尝试自建代码仓库,但新的问题又出现了。部署不难,访问才是难点。服务器放在公司或者家里之后,团队成员只能在局域网内访问。远程办公的时候拉不到代码,出差的时候提交不了更新,好不容易搭起来的私有仓库,最后又变成了少数人才能使用的内部工具。

GitLab之所以一直受到开发团队欢迎,并不仅仅因为它能替代GitHub和Gitee,而是因为它提供了一整套完整的软件研发平台。从代码托管、项目管理到CI/CD自动化部署,开发过程中需要的核心能力几乎都能在一个平台中完成。再结合cpolar实现公网访问之后,这套系统既保留了私有部署的安全性,又拥有了接近公有云平台的使用体验。

1 为什么选择自建 GitLab?

1.1 GitLab

GitLab是一个基于Web的开源代码托管平台,它提供了代码托管、项目管理、持续集成和持续部署等功能。GitLab采用了Git作为版本控制系统,并提供了易于使用的界面和丰富的功能。

GitLab与市场上的Gitee和GitHub相比具有以下优点:

  • 开源自托管:GitLab是开源软件,你可以选择将其部署在自己的服务器上,完全掌握代码托管的控制权,不受第三方平台的限制。而Gitee和GitHub则是商业化的托管服务。
  • 完整的CI/CD支持:GitLab内置了持续集成和持续部署功能,使团队能够自动构建、测试和交付软件。这有助于提高团队的开发效率和软件质量。
  • 全面的项目管理功能:除了代码仓库管理外,GitLab还提供了项目计划、问题跟踪、文档管理和协作功能,帮助团队更好地组织和管理项目。
  • 丰富的社区支持:GitLab拥有庞大的全球开发者社区,你可以从社区中获取开源项目、解决问题以及分享经验。同时,GitLab社区版也有许多活跃的贡献者为其不断增加新功能和修复bug。

1.2 Gitee

Gitee是中国的一家Git代码托管平台,与GitHub类似。它提供了类似于GitHub的代码托管和项目管理功能,但更关注中国开发者的需求。Gitee在国内有较好的网络连接速度,支持中文界面和中文文档,因此在中国用户中比较流行。

1.3 GitHub

GitHub是全球最大的代码托管平台,也是一个开发者社交网络。它具有极高的知名度和广泛的开发者社区,涵盖了各种技术领域。GitHub提供了卓越的协作和分享功能,使得开发者能够轻松地与全球的开发者共同合作。它也提供了很多与第三方服务集成的功能,例如代码审查工具、持续集成服务等。

总之,GitLab、Gitee和GitHub都是优秀的代码托管平台,适用于不同的需求和场景。选择哪个平台取决于你的团队规模、项目需求和个人偏好。

2 GitLab安装(CE 13.9.6)

2.1 添加GitLab软件仓库

#从GitLab官方网站获取与添加仓库脚本的URL#sudo bash 以管理员权限运行脚本,将GitLab软件仓库添加到系统中。curlhttps://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh|sudobash

curl命令执行完成后,会在/etc/yum.repos.d目录下生成gitlab_gitlab-ce.repo文件。

2.2 安装GitLab

虚拟机IP查看可以使用ifconfig命令

# 使用管理员权限执行以下命令# 设置 GitLab 的外部访问地址为 http://<您的虚拟机IP>:8888# 并通过 yum 安装 GitLab 社区版 13.9.6,自动确认所有提示#如:sudo EXTERNAL_URL="http://192.168.184.133:8888" yum install -y gitlab-ce-13.9.6sudoEXTERNAL_URL="http://<您的虚拟机IP>:8888"yuminstall-ygitlab-ce-13.9.6

安装成功提示如下图:

2.3 配置GitLab

打开 GitLab 的主配置文件gitlab.rb,准备修改默认的访问端口。

为什么要改:GitLab 默认使用HTTP 80和unicorn 8080,如果端口冲突或你想用其他端口(比如要做端口映射或配合内网穿透工具如 cpolar),就要改成自定义的端口,比如 8888、8887。

sudovim/etc/gitlab/gitlab.rb

打开后,在external_url 'http://<您设置的IP地址>:8888'下面添加:

nginx['listen_port']=8888unicorn['port']=8887
  • nginx['listen_port'] = 8888:指定 GitLab 使用内置 nginx 服务监听8888 端口(即网页访问用这个端口)
  • unicorn['port'] = 8887:指定 GitLab 的应用服务器(unicorn)使用8887 端口

接下来需要给防火墙开放端口,刷新配置:

#防火墙开放端口firewall-cmd--zone=public --add-port=8888/tcp--permanentfirewall-cmd--zone=public --add-port=8887/tcp--permanent#刷新配置firewall-cmd--reload

刷新GitLab以应用新的配置:

sudogitlab-ctl reconfigure

2.4 启动及访问GitLab

sudogitlab-ctl start#启动sudogitlab-ctl restart#重启sudogitlab-ctl stop#停止sudogitlab-ctl status#状态

启动图示如下:

访问前面设置的http://192.168.184.133:8888,出现如下图即成功:

如上为设置密码页面,设置好密码后会跳转如下登录界面:

管理员登录使用:

#用户名root#密码您设置的密码

登录成功即可进入主页面:

3 GitLab创建项目

前后端皆可此方法,这里以前端举例

3.1 项目创建

选择新项目(new project),然后选择创建空项目(create blank project)

点击进入项目信息页面,填写项目信息:

点击创建项目后,项目即可创建成功!随即会跳转到创建好的项目页面:

3.2 下拉代码

使用前需有git环境,可去git官网下载:

复制项目的地址:

http://192.168.184.133:8888/root/myvue3demo.git

安装好git后,在任意文件夹位置鼠标右键可以看到open Git Bash here选择,点击进入:

进入git bash终端后,输入如下命令下拉代码:

gitclone http://192.168.184.133:8888/root/myvue3demo.git

可能会出现需要输入密码的情况,输入gitlab的用户名root和您设置的gitlab密码即可

3.3 上传代码

为了方便快捷,我这边使用cursorAI编辑器,生成了一个简单的Vue3项目演示站:

项目会放在结尾开源,供大家免费下载代码,进行测试~

生成的页面展示如下:

现在,目录列表里面就有项目文件啦:

接下来,继续在当前位置鼠标右键打开git bash,执行如下命令:

#添加暂存区gitadd.#提交本地git仓库 加内容gitcommit-m"内容"#推送到远程gitpush

这样,代码就成功推送成功了,服务器刷新也可以看到,代码已经成功上传到gitlab仓库啦!

4 使用 cpolar 实现公网访问

4.1 安装 cpolar

4.1.1 什么是cpolar?
  • cpolar 是一款内网穿透工具,可以将你在局域网内运行的服务(如本地 Web 服务器、SSH、远程桌面等)通过一条安全加密的中间隧道映射至公网,让外部设备无需配置路由器即可访问。
  • 广泛支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台,并提供一键安装脚本方便部署。
4.1.2 安装cpolar

首先,我们需要先安装curl:

sudoyuminstallcurl

接下来下载cpolar,一条命令完成安装

curl-Lhttps://www.cpolar.com/static/downloads/install-release-cpolar.sh|sudobash

测试cpolar版本以确保安装

cploar version

4.2 配置cpolar系统服务

向系统添加及启动cpolar服务

#添加cpolar服务sudosystemctlenablecpolar#启动cpolar服务sudosystemctl start cpolar

查看服务状态

sudosystemctl status cpolar

4.3 注册及登录cpolar web ui管理界面

4.3.1 注册cpolar

访问cpolar官网,点击免费注册按钮,进行账号注册

注册页面:

4.3.2 放行9200端口(web ui端口)

在访问web页面前,需要先检查系统防火墙是否放行9200端口,避免访问不了

systemctl status firewalld

有两种方式可以实现访问,一种是放行该端口,另一种是直接关闭防火墙(不建议)

#放行 9200 端口#--zone=public:使用默认区域(通常是 public)#--add-port=9200/tcp:添加 TCP 协议的 9200 端口#--permanent:永久生效(不加此参数则是临时规则,重启失效)firewall-cmd--zone=public --add-port=9200/tcp--permanent#重载防火墙配置(及刷新配置使其生效)firewall-cmd--reload

验证端口是否已放行

firewall-cmd--zone=public --query-port=9200/tcp

输出内容为yes则成功放行

4.3.3 访问cpolar web ui管理界面

在访问之前,不确定ip地址可以通过ifconfig命令查看服务器ip

ifconfig

确定好ip地址后,在浏览器中访问:

http://<此处应为您的IP>:9200#如:http://192.168.184.133:9200

将前面步骤注册好的cpolar账号登录即可进入后台页面

登录成功同时,服务器也会后台无感自动配置token,无需手动配置token

配置文件位置:/usr/local/etc/cpolar/cpolar.yml

cat/usr/local/etc/cpolar/cpolar.yml

4.4 配置gitlab隧道及访问测试

4.4.1 配置 HTTP 隧道绑定到 8888 端口

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

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

接着点击创建隧道菜单,进入到创建页面,如下图配置:

创建完成后,点击左侧菜单的状态菜单,接着点击在线隧道列表菜单按钮,可以看到有2个gitlab的隧道,一个为http协议,另一个为https协议

注意:每个用户创建的隧道显示的公网地址都不一样!

4.4.2 访问公网地址验证 GitLab 是否可访问

在浏览器中访问创建gitlab隧道生成的公网地址(http和https皆可)
这里以https为例:

登录gitlab账号,成功进入gitlab首页!

4.5 设置固定二级子域名(Pro用户)

4.5.1 保留二级子域名

使用cpolar为其配置二级子域名,该域名为固定格式域名,不会随机变化,方便后续远程访问gitlab仓库。

进入官网的预留页面:https://dashboard.cpolar.com/reserved

列表中显示了一条已保留的二级子域名记录:

  • 地区:显示为China Top。
  • 二级域名:显示为gitlab01。

注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主

4.5.2 修改gitlab隧道为子域名方式

进入侧边菜单栏的隧道管理下的隧道列表,可以看到前面配置名为gitlab-8888的隧道

点击编辑按钮进入编辑页面,修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:

4.5.3 访问子域名测试

来到状态菜单下的在线隧道列表可以看到隧道名称为gitlab-8888的公网地址已经变更为二级子域名+固定域名主体及后缀的形式了:

这里以https协议做访问测试:

访问成功!

5 修改 clone 地址为公网地址

部署完成后,即使你已经使用 cpolar 成功穿透并访问 GitLab 页面,GitLab 显示的项目克隆地址仍可能是内网地址(如192.168.x.x),如下图所示:

这会导致使用git clone时默认用的是内网地址,外网机器无法访问。为了解决这个问题,我们需要修改 GitLab 的配置,使其显示为公网地址。

5.1 修改GitLab 配置文件

编辑gitlab的配置文件:

sudovim/etc/gitlab/gitlab.rb

找到如图这行:

external_url'http://192.168.184.133:8888'

将其修改为你的 Cpolar 分配的公网地址(注意不要加端口号):

#注意,请使用http的域名external_url'http://gitlab01.cpolar.top'

保存退出后,然后重新加载gitlab配置:

sudogitlab-ctl reconfigure

5.2 访问测试

访问gitlab穿透的项目地址:

https://gitlab01.cpolar.top/root/myvue3demo

可以看到,clone的地址已经正确的从内网地址变更为cpolar穿透的二级域名地址了!

5.3 下拉代码测试

复制clone地址:

http://gitlab01.cpolar.top/root/myvue3demo.git

在本地资源管理器中任意文件夹位置,单机鼠标右键,选择Open Git Bash here,点击进入打开shell窗口,输入如下命令:

#项目地址替换为您项目的地址链接gitclone http://gitlab01.cpolar.top/root/myvue3demo.git

输入用户信息确认后,可以发现成功下拉代码

5.4 上传代码测试

这边使用AI软件cursor进行了简单的开源文件修改,进行上传代码测试,如图:

控制台已经提示上传成功,可以看到如下提示:
To http://gitlab01.cpolar.top/root/myvue3demo.git

打开gitlab仓库查看,是否有最新提交:

可以发现,修改的开源文件提交上传上来了!

6 常见问题排查

6.1 修改 GitLab 的外部访问地址为公网域名

在大纲为5小节的修改 clone 地址为公网地址时,如果设置外部地址使用的https协议地址,会出现如下问题:

letsencrypt_certificate[...] had an error: RuntimeError: [...] Validation failed, unable to request certificate

这是因为GitLab 在执行reconfigure时尝试向 Let’s Encrypt 自动申请 HTTPS 证书失败,由于你的公网地址是cpolar 动态分配的临时域名(或没有正确配置 DNS),导致验证失败。

而 Cpolar 的地址(如*.cpolar.top):

  • 本质上是临时公网穿透地址
  • 没有公网 DNS 可验证所有权
  • 也无法配合 Let’s Encrypt 做 HTTP-01 验证

所以只适合用作 HTTP 明文访问,而不是自动走 HTTPS。

不要用 https:// 开头的 external_url,改为http协议的链接填入即可,然后再执行sudo gitlab-ctl reconfigure进行配置更新!

7 总结

GitLab最大的价值,并不只是提供一个代码仓库,而是帮助团队建立自己的研发中心。代码管理、项目协作、权限控制以及后续的自动化部署能力,都能够围绕同一平台展开,让开发流程更加统一和规范。

本文完成了GitLab CE在CentOS 7环境中的部署,并通过cpolar实现了公网访问配置。从项目创建、代码拉取、代码提交到公网地址适配,已经形成了一套完整的私有代码托管方案。对于个人开发者、小型团队以及企业内部项目来说,都具有很高的实用价值。

结合cpolar提供的固定公网域名能力之后,即使服务器部署在公司机房或者家庭环境中,团队成员依然能够像使用GitHub一样进行远程协作。无论是在办公室、家里还是出差途中,都能够随时访问项目仓库并完成代码管理工作。

对于很多开发团队来说,真正重要的从来不是把代码放在哪里,而是是否能够长期稳定地掌控自己的代码资产。如果你已经开始重视数据自主权和研发环境的可控性,那么搭建一套属于自己的GitLab,或许会是一个值得考虑的选择。


🍄程序山海,以像素为砖,以算法为梁,搭建未有的世界。一个探索和分享的有趣博主,点击了解!

相关新闻

  • 6%AFFF/AR抗溶性水成膜消防泡沫液口碑好的品牌是谁?浙江金瑞恒具备抗溶保护能力双重防护 - 品牌速递
  • CTF逆向实战:从EasySo看SO层函数Hook与动态调试
  • QGIS插件开发实战:从零到一构建你的第一个工具

最新新闻

  • 深圳2026年6月GEO优化公司Top5:全面对比实力与落地效果 - GEO优化
  • 7步轻松搞定!Umi-OCR离线文字识别的终极完整教程
  • 深度解析开源项目架构:MicroG如何实现HarmonyOS的Google服务兼容性
  • 2026行业内专业的水泥基防火涂料产品推荐榜 - 品牌排行榜
  • 商用车车联网:场景篇 - 金融风控(第6篇):风控评分模型——从规则到算法
  • LangGraph 工作流:把关键流程跑顺

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号