Skip to content

使用 lidong 搭建 Gitea 自托管代码平台

引言

Gitea 是一个轻量级的 Git 代码托管平台,可在自己的服务器上管理代码仓库、议题与协作流程。

为什么选择 Gitea?

  1. 完整自托管

    Gitea 支持完全自托管,可以在自己的服务器上安装和运行。这意味着所有的代码和数据都由自己掌控,极大地提升了数据安全性,有效防止敏感代码外泄的风险。

  2. 掌握运行环境

    自托管可以自行决定访问策略、备份周期与升级窗口,降低外部平台策略变化对内部研发流程的影响。

  3. 灵活配置 CDN 加速

    使用 Gitea 可以根据自身网络环境,自由选择并配置 CDN 服务,从而优化访问速度和稳定性,特别适合在多地协作或访问环境复杂的情况下使用。

  4. 资源占用小,部署简便

    Gitea 是用 Go 语言编写的,编译后的单一可执行文件体积小,运行效率高,资源占用少,部署和维护都非常方便,适合中小型团队或个人开发者快速上手。

  5. 持续维护与功能迭代

    Gitea 拥有活跃的开源社区,持续进行功能更新与漏洞修复,保障了平台的可用性和稳定性。同时支持丰富的功能如 issue 管理、PR 流程、代码审查、Webhook 等,能够满足大多数开发场景需求。

部署前准备

准备一台已安装 Debian 的 lidong 服务器,并规划独立的数据目录。若仓库包含重要业务代码,请同步准备异机备份。

安装教程

第一步:连接到您的 VPS 服务器

使用 SSH 工具连接到您的 lidong 服务器实例,确保您切换到 root 用户,以便执行后续操作。

SSH 连接到 lidong 服务器

第二步:安装 docker

以下使用 Docker 官方安装脚本准备运行环境。

安装 docker 是为了隔离系统与运行环境,保障 VPS 的安全,同时也能简化配置,节省配置时间

bash
curl -fsSL https://get.docker.com | bash -s docker

第三步:创建 docker-compose 配置文件

创建 gitea 目录

以下示例将持久化数据放在 /home/gitea。如服务器的数据盘挂载点不同,请先调整目录路径。

image.png

bash
mkdir  /home/gitea #在数据盘上创建目录存放数据
mkdir gitea #存放docker-compose文件
cd ./gitea
nano ./docker-compose.yaml

填入 docker-compose 的内容

默认配置,使用 sqlite

yaml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.21.1
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - /home/gitea:/data #/home/gitea 可修改为自定义数据目录
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "'127.0.0.1:3000':3000" #若需要修改端口可修改127.0.0.1:3000
      - "'127.0.0.1:2222':22" #容器内ssh端口映射,安全起见设置为本地,有需要可以重新打开

完成后 CTRL+X 推出,保存时选 Y

image.png

启动 gitea

bash
docker compose up -d

image.png

配置 Nginx 反向代理

先将域名解析到服务器,再创建 Nginx 站点配置。以下示例把 git.example.com 转发到本机 Gitea 的 3000 端口:

nginx
server {
    listen 80;
    server_name git.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

保存后执行 nginx -t 检查语法,再重新加载 Nginx。HTTPS 证书可参阅 Acme.sh 自动更新证书指南

1. 初始化 Gitea

打开你的域名,按照官方指引进行设置即可(默认使用 sqlite)

2. 创建账户

创建账户后即可使用,第一个创建的用户即为管理员账户

image.png

3. 创建仓库

点击+号,即可创建并托管你的第一个代码仓库

image.png

使用方法同 github

image.png

进阶:使用 MySQL 数据库进行安装

将 docker-compose 文件修改为以下内容:

安全提示:即使数据库网络未直接暴露到公网,也应将示例中的 MySQL 密码替换为高强度随机密码,并通过安全方式保存。

bash
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.21.1
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql #请注意修改用户名和密码
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=CHANGE_ME_GITEA_DB_PASSWORD
    restart: always
    networks:
      - gitea
    volumes:
      - /home/gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=CHANGE_ME_MYSQL_ROOT_PASSWORD
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=CHANGE_ME_GITEA_DB_PASSWORD
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

安装时选择 mysql,填入相关信息安装即可

image.png

lidong 文档中心 · 清晰、可靠、持续维护