> For AI agents: the complete documentation index is available at https://docs.vps.town/llms.txt, the full documentation bundle is available at https://docs.vps.town/llms-full.txt.

# 使用 VPS.Town 大盘机搭建 Gitea 自托管代码，不再依赖 GitHub

:::tip 温馨提示

本文由用户 ([赛博丁真](#)) 撰写，并已加入 `VPS.Town 优秀原创文章激励计划`，本站享有完整版权，未经允许不得转载。

本文已通过 [VPS.Town 社区文章投稿及奖励规则 (试行稿)](https://docs.vps.town/kb/community.md) 审核，并获得 `现金 40 元` 奖励。

:::

:::details 📖 本文目录

[](#引言)[](#为什么选择-gitea)[](#其中-vpstown-的大盘鸡方案最适合-gitea-部署使用)[](#️-安装教程)[](#第一步连接到您的-vps-服务器)[](#第二步安装-docker)[](#第三步创建-docker-compose-配置文件)[](#创建-gitea-目录)[](#填入-docker-compose-的内容)[](#默认配置使用-sqlite)[](#启动-gitea)[](#配合宝塔面板配置反向代理)[](#选择网站--反向代理--添加反代)[](#填入你的域名目标地址填入本地-ipgitea-端口)[](#1-申请-ssl-证书)[](#将域名-ip-解析到-vps)[](#2-选择网站的-ssl-设置)[](#3-使用文件验证申请证书)[](#4-执行安装)[](#5-创建账户)[](#6-创建仓库)[](#使用方法同-github)[](#进阶使用-mysql-数据库进行安装)
:::

## 引言

:::details 本文配图

![banner](/assets/images/how-to-self-hosted-deploy-gitea-vps-town/banner.png)

:::

> **🧩Gitea** 是一个轻量级的 **Git 代码托管平台**，也就是说，它可以用来像 GitHub、GitLab 一样管理代码仓库。

## 为什么选择 Gitea？🚀

1. **自托管（Self-hosted）🔐**

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

2. **避免平台风险 ❌🌐**

   相比于 GitHub 可能因政策原因被阻断访问，或 Gitee 存在的内容审查机制，Gitea 作为自托管平台，不依赖第三方服务，从根本上杜绝了外部平台带来的访问限制与内容审查问题，保障了研发工作的连续性与自由性。

3. **灵活配置 CDN 加速 ⚡️🌍**

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

4. **资源占用小，部署简便 🧩📦**

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

5. **开源社区活跃，功能不断迭代 🔄🛠️**

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

## **其中 VPS.Town 的「大盘鸡」方案最适合 Gitea 部署使用**

:::tip 🚀 VPS.Town 大盘鸡解决方案

1. 最多可提供高达 **8TB 大容量存储** 的选项，非常适合存放大量项目代码与文档；
2. 同时也提供 **SSD & HDD** 混合方案，读写速度更快、成本更低；
3. 性价比高，适合个人开发者、小团队进行长期托管部署；
4. 抗 DMCA 版权投诉，可用于一些敏感项目；
5. ⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB

无 AFF 购买链接：[点我一键直达](https://vps.town/cart/goodsList.htm?fid=3\&gid=1)

:::

## 🛠️ 安装教程

### **第一步：连接到您的 VPS 服务器**

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

![SSH 连接 VPS 服务器](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 1.png>)

### **第二步：安装 docker**

我们将使用 docker 官方的安装脚本。该脚本简化了 docker 编译安装过程，操作更加便捷。

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

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

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

### 创建 gitea 目录

使用 [VPS.TOWN](https://vps.town) 大盘机时，默认挂载目录为/home，无需对硬盘格式化

:::tip 💡 VPS.Town 大盘鸡解决方案

1. 最多可提供高达 **8TB 大容量存储** 的选项，非常适合存放大量项目代码与文档；
2. 同时也提供 **SSD & HDD** 混合方案，读写速度更快、成本更低；
3. 性价比高，适合个人开发者、小团队进行长期托管部署；
4. 抗 DMCA 版权投诉，可用于一些敏感项目；
5. ⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB
6. 服务器位于香港，距离大陆近，延迟低，速度快

无 AFF 购买链接：[点我一键直达](https://vps.town/cart/goodsList.htm?fid=3\&gid=1)

:::

![image.png](/assets/images/how-to-self-hosted-deploy-gitea-vps-town/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](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 1.png>)

### 启动 gitea

```bash
docker compose up -d
```

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 2.png>)

### 配合宝塔面板配置反向代理

> 宝塔面板适合新手快速配置反向代理，当然，你也可以使用 1panel 等工具进行配置

安装宝塔面板：[宝塔面板下载，免费全能的服务器运维软件](https://www.bt.cn/new/download.html)

首次进入网站设置项会提示安装 nginx，选择版本安装即可

### 选择网站 → 反向代理 → 添加反代

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 3.png>)

### 填入你的域名、目标地址填入本地 ip+gitea 端口

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 4.png>)

### 1. 申请 ssl 证书

#### 将域名 IP 解析到 vps

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 5.png>)

### 2. 选择网站的 ssl 设置

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 6.png>)

### 3. 使用文件验证申请证书

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 7.png>)

### 4. 执行安装

打开你的域名，按照官方指引进行设置即可（默认使用 sqlite）

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 7.png>)

### 5. 创建账户

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

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 9.png>)

### 6. 创建仓库

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

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 8.png>)

### 使用方法同 github

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 9.png>)

## 进阶：使用 MySQL 数据库进行安装

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

:::warning ⚠️ 强烈建议修改 MySQL 密码

虽然 docker 的网络不暴露在公网，但为了安全起见，强烈建议修改 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=gitea
    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=gitea #请注意修改用户名和密码
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql
```

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

![image.png](</assets/images/how-to-self-hosted-deploy-gitea-vps-town/image 10.png>)
