搭建自己的代码仓库:GitLab/Gitea服务器安装与配置教程

搭建自己的代码仓库:GitLab/Gitea服务器安装与配置教程

你的代码,你的地盘!告别“寄人篱下”

还在为把私有项目放在GitHub/GitLab.com上心存顾虑吗?或者觉得这些平台的免费版功能受限,付费版又太贵?是不是有时候会想:“如果能有个完全由自己掌控的代码仓库就好了!” —— 没错,这种想法完全可以实现!

自己搭建一个Git服务器,意味着你的代码完全掌握在自己手中,数据安全、访问控制、功能定制都由你说了算。这对于个人开发者保护私密项目、小团队内部协作、或者有特殊合规需求的企业来说,简直是福音。

市面上自建Git服务的选择不少,其中最耀眼的两位明星当属GitLabGitea。一个是功能全面到令人发指的“巨无霸”,另一个是轻快、专注的“小而美”选手。它们各有千秋,到底哪个更适合你?别急,本文就带你分析对比,并手把手教你用最简单快捷的方式(剧透:用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等皆可)。
  • 服务器上已安装好 DockerDocker Compose。(如果还没装?别担心,网上有大把教程,搜一下“[你的操作系统] 安装 Docker/Docker Compose”即可,例如Docker官方安装指南
  • 基础的Linux命令行知识。

操作步骤:

  1. 创建工作目录并进入:

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__PASSWDPOSTGRES_PASSWORD 为你自己设置的强密码
  • 检查 USER_UIDUSER_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。你需要:
      1. 获取SSL证书(可以使用Let’s Encrypt免费获取)。
      2. 配置反向代理服务器,将来自外部HTTPS的请求转发到Gitea容器的3000端口。
      3. 确保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官方文档 或在我们的评论区留言交流。
    • 想了解更多服务器软件玩法?欢迎浏览我们网站的其他 [服务器软件教程]
    软件分享

    MySQL/MariaDB数据库安装、安全配置与远程连接

    2025-4-8 13:18:44

    软件分享

    Linux软件安装不再愁:详解包管理器Apt(Ubuntu)与DNF(CentOS)的使用JPG

    2025-4-15 12:16:57

    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧