
你的代码,你的地盘!告别“寄人篱下”
还在为把私有项目放在GitHub/GitLab.com上心存顾虑吗?或者觉得这些平台的免费版功能受限,付费版又太贵?是不是有时候会想:“如果能有个完全由自己掌控的代码仓库就好了!” —— 没错,这种想法完全可以实现!
自己搭建一个Git服务器,意味着你的代码完全掌握在自己手中,数据安全、访问控制、功能定制都由你说了算。这对于个人开发者保护私密项目、小团队内部协作、或者有特殊合规需求的企业来说,简直是福音。
市面上自建Git服务的选择不少,其中最耀眼的两位明星当属GitLab和Gitea。一个是功能全面到令人发指的“巨无霸”,另一个是轻快、专注的“小而美”选手。它们各有千秋,到底哪个更适合你?别急,本文就带你分析对比,并手把手教你用最简单快捷的方式(剧透:用Docker!)搭建起属于你自己的Gitea代码仓库。
巨无霸 vs 轻量级选手:GitLab 与 Gitea 该选谁?
在做决定前,先来看看这两位的“体格”和“特长”:
- GitLab: 功能全面的“瑞士军刀” 🧰
- 优点: 它不仅仅是个代码仓库!GitLab集成了代码托管、强大的CI/CD(持续集成/持续部署)、容器注册表、项目管理(Issues, Boards, Wiki)、监控、安全扫描……几乎涵盖了现代软件开发所需的一切。社区版免费且功能已非常强大。
- 缺点: 功能多也意味着资源消耗巨大。官方推荐至少4核CPU和4GB+可用内存才能流畅运行,对于小型服务器来说压力山大。安装和后续维护也相对复杂。
- 一句话点评: 如果你需要一个包罗万象的DevOps平台,且服务器资源充裕(或者不差钱升级配置),GitLab是当然之选。它就像你订阅了全套Adobe Creative Cloud,功能强大无比。
- Gitea: 轻快、专注的“代码管家” 🚀
- 优点: 它的目标就是做一个更好、更快、更简单的自托管Git服务。用Go语言编写,资源占用极低(官方甚至说可以在树莓派上跑!),安装部署超级简单(尤其是用Docker),界面清爽,核心的代码托管、版本控制、用户/组织管理、Pull Request、Issues等功能完善且响应迅速。它是Gogs项目的一个活跃分支。
- 缺点: 内置功能相对GitLab少很多。例如,CI/CD需要集成第三方工具(如Drone, Jenkins, Woodpecker CI),没有内置容器注册表等高级功能。
- 一句话点评: 如果你主要需要一个稳定、快速、资源占用低的代码托管平台,对那些花哨的附加功能没那么感冒,Gitea就是你的菜。它就像一个极简但高效的代码编辑器,专注于把核心功能做到极致。
我的建议?
对于大多数个人开发者、小团队,或者服务器配置不高的情况,我个人强烈推荐从Gitea开始。它足够满足日常的代码托管和协作需求,而且搭建维护起来省心省力。如果你确实需要GitLab的全家桶功能,请确保你的服务器能“喂饱”它。
因此,下面我们将重点演示如何使用Docker快速搭建Gitea。
极速搭建 Gitea:Docker 来助力!
忘掉那些繁琐的依赖安装和环境配置吧!Docker让Gitea的部署变得像泡方便面一样简单。
前提条件:
- 一台能联网的Linux服务器(Ubuntu, CentOS, Debian等皆可)。
- 服务器上已安装好 Docker 和 Docker Compose。(如果还没装?别担心,网上有大把教程,搜一下“[你的操作系统] 安装 Docker/Docker Compose”即可,例如Docker官方安装指南)
- 基础的Linux命令行知识。
操作步骤:
- 创建工作目录并进入:
Bash
sudo mkdir -p /opt/gitea
cd /opt/gitea
(你可以选择其他路径,但建议放在 /opt
或 /srv
下)
2 创建 docker-compose.yml
文件:
这是核心配置文件,告诉Docker如何运行Gitea和它的数据库。
Bash
sudo nano docker-compose.yml
将以下内容粘贴进去(请仔细阅读注释并修改必要的配置):
YAML
version: “3”
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest # 使用最新的Gitea官方镜像
container_name: gitea
environment:
– USER_UID=1000 # 运行Gitea的用户ID (通常是你的普通用户ID)
– USER_GID=1000 # 运行Gitea的用户组ID
# — 数据库设置 (使用下面的PostgreSQL) —
– GITEA__database__DB_TYPE=postgres
– GITEA__database__HOST=db:5432 # 指向下面的db服务
– GITEA__database__NAME=gitea # 数据库名
– GITEA__database__USER=gitea # 数据库用户名
– GITEA__database__PASSWD=a_very_strong_password # !!!务必修改为一个强密码!!!
# — 其他Gitea设置 (可在Web界面配置,也可在此处配置) —
# – GITEA__server__SSH_DOMAIN=your.domain.com # SSH访问域名
# – GITEA__server__ROOT_URL=https://your.domain.com/ # Gitea访问URL (使用HTTPS!)
# – GITEA__service__DISABLE_REGISTRATION=true # 禁止用户自由注册
# – GITEA__mailer__ENABLED=false # 邮件服务,需要时再配置
restart: always
networks:
– gitea
volumes:
– ./gitea:/data # 将Gitea的数据持久化到宿主机的./gitea目录
– /etc/timezone:/etc/timezone:ro
– /etc/localtime:/etc/localtime:ro
ports:
– “3000:3000” # Gitea Web界面端口映射
– “2222:22” # Gitea 内置SSH服务端口映射 (宿主机2222映射到容器22)
# !!! 注意: 如果宿主机22端口已被SSHd占用,这里必须用其他端口如2222 !!!
depends_on:
– db # 确保数据库先启动
db:
image: postgres:14 # 使用PostgreSQL 14镜像 (也可以用mysql:8.0等)
container_name: gitea-db
restart: always
environment:
– POSTGRES_USER=gitea # 数据库用户名 (与上面GITEA__database__USER一致)
– POSTGRES_PASSWORD=a_very_strong_password # !!!务必修改, 与上面GITEA__database__PASSWD一致!!!
– POSTGRES_DB=gitea # 数据库名 (与上面GITEA__database__NAME一致)
networks:
– gitea
volumes:
– ./postgres:/var/lib/postgresql/data # 数据库数据持久化
重要提示:
- 请务必修改
GITEA__database__PASSWD
和POSTGRES_PASSWORD
为你自己设置的强密码! - 检查
USER_UID
和USER_GID
是否是您服务器上运行docker命令的普通用户的ID/GID(通常是1000,可以通过id your_username
命令查看)。 - 确认端口映射,特别是SSH端口
2222:22
,如果宿主机的2222端口已被占用,请修改宿主机端口(冒号前面的数字)。
3 启动服务:
在 /opt/gitea
目录下执行:
Bash
sudo docker-compose up -d
Docker会开始拉取镜像并启动Gitea和数据库容器。-d
参数表示在后台运行。你可以使用 sudo docker-compose ps
查看服务状态,用 sudo docker-compose logs -f
查看实时日志。
4 访问与初始配置:
- 等待一两分钟让服务完全启动。然后通过浏览器访问
http://<你的服务器IP地址>:3000
。 - 你会看到Gitea的安装页面。大部分数据库设置应该已经从环境变量自动填好了,检查一下是否正确(数据库类型选PostgreSQL,主机是
db:5432
,用户名、密码、库名填写你设置的)。 - 关键设置:
- 站点名称: 给你的Gitea站点起个名字。
- 服务器域名: 填写用户将用来访问Gitea的域名 (例如
git.yourdomain.com
)。 - SSH服务域名: 填写用户将用来SSH克隆/推送的域名 (通常与上面一致)。
- (重要!) 应用URL: 填写完整的、用户将用来访问Gitea的URL,强烈建议使用HTTPS,例如
https://git.yourdomain.com/
。(即使现在还没配HTTPS,也先填最终要用的HTTPS地址) - 管理员账号设置: 创建你的第一个管理员账号和密码。
- 点击页面底部的“立即安装”按钮。安装很快完成,之后会自动跳转到登录页面。用你刚创建的管理员账号登录。
恭喜!你的Gitea代码仓库已经跑起来了!
基础安全配置 (不能忽视!)
刚搭好的Gitea还需做些安全加固:
- 配置HTTPS (重中之重!):绝不要让你的代码和密码在HTTP上裸奔! 最常见的做法是使用反向代理(如Nginx, Caddy, Traefik)来处理HTTPS。你需要:
- 获取SSL证书(可以使用Let’s Encrypt免费获取)。
- 配置反向代理服务器,将来自外部HTTPS的请求转发到Gitea容器的3000端口。
- 确保Gitea配置中的
ROOT_URL
设置为https://...
。 <!– end list –>
- (反向代理配置相对独立,篇幅较长,建议另行搜索教程。
- SSH端口: 记住你映射的SSH端口(例子中是2222)。用户克隆/推送时需要指定端口,例如:
git clone ssh://git@your.domain.com:2222/username/repo.git
。 - Gitea内部设置: 登录Gitea后,进入“站点管理”后台:
- 用户注册: 考虑禁用公共注册(在
配置
->授权与认证设置
中),改为管理员手动邀请或创建用户。 - 安全: 建议启用双因素认证(2FA),提升账户安全。
- 邮件服务: 配置邮件服务,用于用户注册验证、密码找回、通知等。
- 用户注册: 考虑禁用公共注册(在
关于GitLab的一点补充
如果你看完对比,还是觉得需要GitLab的全家桶功能,并且服务器资源充足:
- 资源需求: 请务必参考官方最新的硬件推荐,不要低估它的胃口!
- 安装方式: GitLab官方提供了多种安装方式:
- Omnibus包: 这是官方推荐的最简单的方式,在一个包里集成了所有依赖。
- Docker镜像: 也有官方Docker镜像,但配置比Gitea的Docker部署要复杂一些。
- Kubernetes (Helm Chart): 适合大规模部署。
- 官方文档: GitLab的安装和配置相对复杂,强烈建议直接参考其详尽的官方文档进行操作:GitLab Installation Documentation。
结论:掌控你的代码未来
搭建自己的Git服务器,无论是选择轻巧的Gitea还是全能的GitLab,都意味着你将代码的控制权牢牢掌握在自己手中。这不仅关乎安全和隐私,更是一种自由和灵活性的体现。
通过Docker,你会发现搭建Gitea并非难事。迈出这一步,你就能拥有一个属于自己的、稳定可靠的代码“家园”。
行动吧!
- 现在就尝试在你的服务器上运行
docker-compose up -d
吧! - 遇到问题?查阅 Gitea官方文档 或在我们的评论区留言交流。
- 想了解更多服务器软件玩法?欢迎浏览我们网站的其他 [服务器软件教程]!