更多云服务器知识,尽在hostol.com
你的代码,是什么?
我们常常说,代码是冰冷的逻辑,是0和1的组合。但你我心里都清楚,它远不止于此。它是你的思想结晶,是你无数个深夜爆肝的成果,是你解决了一个复杂问题后,那种难以言喻的成就感的见证。它是你向这个世界展示你才华的、最硬核的名片。
那么,这样一个对你来说无比宝贵的东西,你是愿意把它“租”放在一个公共的、人来人વાર的“云端公寓”(比如GitHub或Gitee)里,还是更渴望为它建造一座完全由你掌控、安全私密、并且可以随心所欲“装修”的“私人城堡”?
如果你对后者,哪怕有过一丝丝心动,那么,恭喜你,这篇文章就是为你量身定做的。
“云端公寓”虽好,但毕竟不是自己的家
在动手建造“城堡”之前,我们必须公平地评价一下“云端公寓”的好处。GitHub和Gitee,这两位“世界级房东”,无疑是伟大、便捷且功能强大的。
- GitHub: 它是全球开发者的“中央公园”和“社交广场”。你在这里,可以与全世界最顶尖的开发者交流,参与到最前沿的开源项目中。它是你简历上含金量最高的“技术认证”。但对于国内的我们来说,这位“房东”住得有点远,有时候,我们去他家串个门(
git push/pull
),路上的网络可能会有点堵。 - Gitee (码云): 它是我们国内开发者自己的“小区活动中心”。访问速度飞快,体验流畅,还集成了很多符合国人使用习惯的特色功能。对于纯国内的团队协作和项目托管,它的体验,无可挑剔。
这两者都很好。但是,“租房”住,总归有一些无法回避的“痛点”:
- 你没有“房产证”: 你的代码,虽然属于你,但它存放在别人的服务器上。平台的规则、服务条款、甚至国际关系的变化,都可能在理论上,影响到你对自己代码的访问。
- “装修”风格受限: 你无法深度定制平台的功能,无法随心所欲地集成你自己的自动化流程(CI/CD)。
- “邻居”太多: 共享的平台,意味着你的代码上传下载速度,总会受到平台整体带宽和他人的影响。
- “房间”数量有限: 大部分平台对于免费的“私有仓库”数量或协作者数量,或多或少都有一些限制。
那么,有没有一种选择,能让我们同时拥有Git强大的版本控制能力,又能彻底摆脱上述所有烦恼呢?
答案是:有!那就是亲手为你的代码,建造一座“私人城堡”——自建Git服务。
为什么要建自己的“代码城堡”?
“太折腾了吧?”你可能会想。不,这绝不是折腾,这是一次一劳永逸的“投资”,你将获得的是:
- 绝对的数据主权: 你的代码,只存在于你的服务器硬盘上。除了你自己,没有人能看到它、扫描它、分析它。这种100%的掌控感,是任何第三方平台都给不了的。
- 极致的性能体验: 你的每一次
git push
,都是一次对你服务器的“独享专线”访问。那速度,那流畅度,会让你从此对Gitee的“快”都变得不屑一顾。 - 无限的“房间”和“钥匙”: 你想创建多少个私有仓库,就创建多少个。你想邀请多少个小伙伴来一起“添砖加瓦”,就邀请多少个。再也没有任何限制。
- 无与伦比的学习价值: 搭建和维护自己的Git服务,这个过程本身,就是一次极好的Linux服务器运维实践。
“城堡施工方案”:选择轻巧而强大的Gitea
要建城堡,我们得选一套好的“施工图纸和建材”。
忘了那些需要一台8核16G服务器才能跑起来的“史前巨兽”(比如重量级的GitLab)吧。对于我们个人开发者和小型团队,我们的选择标准是:轻量、高效、易于安装。
在这里,我为你推荐我的“梦中情选”——Gitea。
- 它是什么? Gitea是一个用Go语言编写的、社区驱动的、超轻量级的自托管Git服务。
- 它有多轻? 轻到一台1核1G内存的服务器,都能流畅地运行它。
- 它有多好用? 它提供了你所熟悉和喜爱的、类似GitHub的漂亮Web界面,包括代码仓库管理、Pull Request、Issues跟踪、Wiki等等,功能一应俱全。
好了,蓝图已定,我们立刻开工!
第一步:为“城堡”打地基 (安装Gitea)
当然,今天我们就来深入聊聊开发者世界里的一个“终极梦想”——拥有一个完全属于自己的代码仓库。这不仅仅是一个技术教程,更是一篇关于“数字主权”和“创作自由”的宣言。
Gitee vs GitHub:在国内,如何利用服务器搭建自己的Git代码仓库?
你的代码,是什么?
我们常常说,代码是冰冷的逻辑,是0和1的组合。但你我心里都清楚,它远不止于此。它是你的思想结晶,是你无数个深夜爆肝的成果,是你解决了一个复杂问题后,那种难以言喻的成就感的见证。它是你向这个世界展示你才华的、最硬核的名片。
那么,这样一个对你来说无比宝贵的东西,你是愿意把它“租”放在一个公共的、人来人વાર的“云端公寓”(比如GitHub或Gitee)里,还是更渴望为它建造一座完全由你掌控、安全私密、并且可以随心所欲“装修”的“私人城堡”?
如果你对后者,哪怕有过一丝丝心动,那么,恭喜你,这篇文章就是为你量身定做的。
“云端公寓”虽好,但毕竟不是自己的家
在动手建造“城堡”之前,我们必须公平地评价一下“云端公寓”的好处。GitHub和Gitee,这两位“世界级房东”,无疑是伟大、便捷且功能强大的。
- GitHub: 它是全球开发者的“中央公园”和“社交广场”。你在这里,可以与全世界最顶尖的开发者交流,参与到最前沿的开源项目中。它是你简历上含金量最高的“技术认证”。但对于国内的我们来说,这位“房东”住得有点远,有时候,我们去他家串个门(
git push/pull
),路上的网络可能会有点堵。 - Gitee (码云): 它是我们国内开发者自己的“小区活动中心”。访问速度飞快,体验流畅,还集成了很多符合国人使用习惯的特色功能。对于纯国内的团队协作和项目托管,它的体验,无可挑剔。
这两者都很好。但是,“租房”住,总归有一些无法回避的“痛点”:
- 你没有“房产证”: 你的代码,虽然属于你,但它存放在别人的服务器上。平台的规则、服务条款、甚至国际关系的变化,都可能在理论上,影响到你对自己代码的访问。
- “装修”风格受限: 你无法深度定制平台的功能,无法随心所欲地集成你自己的自动化流程(CI/CD)。
- “邻居”太多: 共享的平台,意味着你的代码上传下载速度,总会受到平台整体带宽和他人的影响。
- “房间”数量有限: 大部分平台对于免费的“私有仓库”数量或协作者数量,或多或少都有一些限制。
那么,有没有一种选择,能让我们同时拥有Git强大的版本控制能力,又能彻底摆脱上述所有烦恼呢?
答案是:有!那就是亲手为你的代码,建造一座“私人城堡”——自建Git服务。
为什么要建自己的“代码城堡”?
“太折腾了吧?”你可能会想。不,这绝不是折腾,这是一次一劳永逸的“投资”,你将获得的是:
- 绝对的数据主权: 你的代码,只存在于你的服务器硬盘上。除了你自己,没有人能看到它、扫描它、分析它。这种100%的掌控感,是任何第三方平台都给不了的。
- 极致的性能体验: 你的每一次
git push
,都是一次对你服务器的“独享专线”访问。那速度,那流畅度,会让你从此对Gitee的“快”都变得不屑一顾。 - 无限的“房间”和“钥匙”: 你想创建多少个私有仓库,就创建多少个。你想邀请多少个小伙伴来一起“添砖加瓦”,就邀请多少个。再也没有任何限制。
- 无与伦比的学习价值: 搭建和维护自己的Git服务,这个过程本身,就是一次极好的Linux服务器运维实践。
“城堡施工方案”:选择轻巧而强大的Gitea
要建城堡,我们得选一套好的“施工图纸和建材”。
忘了那些需要一台8核16G服务器才能跑起来的“史前巨兽”(比如重量级的GitLab)吧。对于我们个人开发者和小型团队,我们的选择标准是:轻量、高效、易于安装。
在这里,我为你推荐我的“梦中情选”——Gitea。
- 它是什么? Gitea是一个用Go语言编写的、社区驱动的、超轻量级的自托管Git服务。
- 它有多轻? 轻到一台1核1G内存的服务器,都能流畅地运行它。
- 它有多好用? 它提供了你所熟悉和喜爱的、类似GitHub的漂亮Web界面,包括代码仓库管理、Pull Request、Issues跟踪、Wiki等等,功能一应俱全。
好了,蓝图已定,我们立刻开工!
第一步:为“城堡”打地基 (安装Gitea)
这个过程,比你想象的要简单得多。我们将使用最直接、最干净的“二进制”安装方式。
- 为Gitea创建一个专属“管家” 我们不应该用root账户来运行Gitea,这不安全。我们为它创建一个专门的、低权限的系统用户,比如
git
。
Bash
sudo adduser git
(根据提示为git
用户设置一个密码)
2下载Gitea“城堡主体结构” 我们切换到git
用户,并进入它的主目录。
Bash
su - git
cd ~
去Gitea的官网或GitHub发布页面,找到最新版本的、适用于linux-amd64
的二进制文件下载链接,然后用wget
下载它。
Bash
# 注意:请替换成你看到的最新版本链接
wget -O gitea https://dl.gitea.io/gitea/1.17.3/gitea-1.17.3-linux-amd64
给它加上可执行权限。
Bash
chmod +x gitea
现在,你的“城堡”主体就已经有了。你可以通过 ./gitea web
命令临时启动它来测试一下。
3聘请一位“智能管家” (配置Systemd服务) 我们总不能每次都手动去启动Gitea吧?我们需要让系统来自动管理它,让它能开机自启。这就需要用到systemd
。
切回到你的sudo用户)
Bash
exit # 从git用户切回
sudo nano /etc/systemd/system/gitea.service
在打开的文件里,粘贴以下内容(这是Gitea官方推荐的“管家配置单”):
Ini, TOML
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/
ExecStart=/home/git/gitea web --config /home/git/gitea/custom/conf/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/home/git/
[Install]
WantedBy=multi-user.target
保存退出。然后,让“管家”系统重新加载配置,并正式“雇佣”这位Gitea管家,让它立刻上岗,并且设置“永久雇佣”(开机自启)。
Bash
sudo systemctl daemon-reload
sudo systemctl start gitea
sudo systemctl enable gitea
第二步:“内部精装修” (Gitea Web安装向导)
现在,你的Gitea服务,已经在你服务器的3000端口上,悄悄地运行起来了。
打开你的浏览器,访问 http://你的服务器IP:3000
。
你会看到一个漂亮的安装向导页面。别慌,这是Gitea这位“总设计师”,在动工前,最后一次和你确认“装修图纸”。
- 数据库设置: 对于个人使用,数据库类型请选择SQLite3!这是Gitea最迷人的地方之一,它不需要你额外安装MySQL,自带一个轻量级的数据库文件。真正的“开箱即用”。
- 应用基本设置:
- 站点标题: 给你的代码城堡起个霸气的名字!
- 仓库根目录: 保持默认的
/home/git/gitea-repositories
即可。 - 服务器域名: 暂时填写你的服务器IP地址。
- Gitea 基本 URL: 暂时填写
http://你的服务器IP:3000/
。
- 管理员账号设置: 这里,务必创建一个属于你自己的管理员账号和密码。
确认无误后,点击最下方的“立即安装”。稍等片刻,一个崭新的、完全属于你的、功能媲美GitHub的Gitea界面,就会呈现在你眼前!
第三步:“修建宏伟的正门” (使用Nginx反向代理)
现在,你的城堡已经建好了,但每次进去,都要通过“IP地址:3000”这个“施工小门”,这既不优雅,也不安全。我们需要为它修建一个宏伟、气派、且有顶级安保的“正门”,比如 git.yourdomain.com
。
这就需要我们那位老朋友——Nginx出场了。
1创建Nginx配置文件。
Bash
sudo nano /etc/nginx/sites-available/gitea
输入以下反向代理配置:
Nginx
server {
listen 80;
server_name git.yourdomain.com; # 换成你自己的域名
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
# ... 此处省略其他几行proxy_set_header...
}
}
2启用配置并用Certbot开启HTTPS。 这个流程,你现在肯定已经驾轻就熟了。启用这个配置,然后运行sudo certbot --nginx
,为你的git.yourdomain.com
也配上免费的SSL证书。
3最后一步:更新Gitea的URL配置。 用git
用户登录,编辑Gitea的配置文件:
Bash
su - git
nano /home/git/gitea/custom/conf/app.ini
把里面的ROOT_URL
和DOMAIN
,都改成你最终的、带有https
的域名,比如https://git.yourdomain.com/
。然后重启Gitea服务。
欢迎来到你的“代码城堡”
现在,当你通过https://git.yourdomain.com
,访问你那个崭新的、漂亮的、运行在你自己的服务器上的Gitea界面时,你应该能感受到一种前所未有的满足感和安全感。
你不再是“云端公寓”里的一个匆匆过客,你成了自己“代码城堡”的国王。这座城堡里的每一行代码,每一次提交,都由你全权掌控,烙上了你独一无二的印记。
去吧,去邀请你的伙伴,或者,就你自己,开始在这片完全属于你的土地上,建造你的下一个伟大工程吧。