一、前置准备
- 服务器已安装 Docker + Docker Compose(没装的看文末一键安装命令)
- 服务器开放端口:3000(Web) 、222(SSH 克隆)
- 建议创建一个单独目录存放配置(方便管理)
mkdir -p /opt/gitea && cd /opt/gitea
二、创建 docker-compose.yml 配置文件
在 /opt/gitea 目录下创建 docker-compose.yml,直接复制粘贴即可:
version: "3"
networks:
webvibecoding:
external: false
services:
# 数据库(使用 SQLite 可省略,这里用 MySQL 更稳定)
mysql:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123321123b # 数据库 root 密码(可修改)
- MYSQL_USER=gitea
- MYSQL_PASSWORD=123321123b
- MYSQL_DATABASE=gitea
volumes:
- ./mysql:/var/lib/mysql
networks:
- webvibecoding
# Gitea 主服务
gitea:
image: gitea/gitea:latest
restart: always
ports:
- "3000:3000" # Web 访问端口
- "222:22" # SSH 克隆端口
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./gitea:/data # 数据持久化
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- webvibecoding
depends_on:
- mysql
配置说明
- 数据存在当前目录
./gitea和./mysql,卸载容器数据不会丢失 - Web 端口:3000,SSH 端口:222
- 数据库密码可自行修改
三、启动 Gitea
# 后台启动(-d 表示后台运行)
docker-compose up -d
# 查看启动状态
docker-compose ps
看到 gitea 和 mysql 状态为 Up 就说明启动成功。
四、Web 页面初始化配置
打开浏览器访问:
http://你的服务器IP:3000
会进入 Gitea 初始化页面
按下面配置填写:
1. 数据库配置
| 配置 | 内容 |
|---|---|
| 数据库类型 | MySQL |
| 主机 | mysql:3306 |
| 用户名 | gitea |
| 密码 | 123321123b |
| 数据库名 | gitea |
2. 基础配置
| 配置 | 内容 |
|---|---|
| 站点名称 | 自定义(如:我的 Git 仓库) |
| 仓库根路径 | 默认即可 |
| Gitea 基础 URL | http://你的服务器IP:3000 |
| SSH 端口 | 222 |
3. 管理员账号(必创建)
拉到页面最下方,创建管理员账号:
- 用户名:admin
- 密码:自定义
- 邮箱:自定义
点击 立即安装,完成后自动跳转到登录页。
五、使用 Gitea
- 登录:
http://IP:3000 - 创建仓库 → 克隆使用
- SSH 克隆示例:
git clone ssh://git@服务器IP:222/用户名/仓库名.git
HTTP 克隆示例:
git clone http://服务器IP:3000/用户名/仓库名.git
六、常用运维命令
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看日志
docker-compose logs -f gitea
# 升级 Gitea(拉最新镜像 + 重启)
docker-compose pull
docker-compose up -d
七、Nginx 域名绑定(无 SSL 纯 HTTP 版)
前置要求
- 域名已解析到服务器公网 IP
- 服务器开放端口:
80 (HTTP) - 依旧在
/opt/gitea目录操作
步骤 1:修改 docker-compose.yml
直接替换你原有的配置,仅保留 80 端口,无 SSL、无复杂配置,完美兼容原有 Gitea:
networks:
webvibecoding:
external: false
services:
# 数据库(不变)
mysql:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123321123b
- MYSQL_USER=gitea
- MYSQL_PASSWORD=123321123b
- MYSQL_DATABASE=gitea
volumes:
- ./mysql:/var/lib/mysql
networks:
- webvibecoding
# Gitea 主服务(删除3000端口映射)
gitea:
image: gitea/gitea:latest
restart: always
ports:
- "222:22" # SSH克隆端口(保留不变)
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- webvibecoding
depends_on:
- mysql
# Nginx 极简配置(仅HTTP 80端口)
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80" # 仅开放80端口
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- /etc/localtime:/etc/localtime:ro
networks:
- webvibecoding
depends_on:
- gitea
步骤 2:创建 Nginx 配置目录 + 文件
# 创建配置文件夹
mkdir -p /opt/gitea/nginx/conf.d
在 /opt/gitea/nginx/conf.d 新建 gitea.conf,直接复制:
server {
listen 80;
# 你的专属域名
server_name 域名;
# 反向代理到Gitea容器
location / {
proxy_pass http://gitea: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;
}
}
步骤 3:重启服务生效
cd /opt/gitea
# 重启所有容器
docker-compose down && docker-compose up -d
# 查看状态(3个服务都为Up即成功)
docker-compose ps
步骤 4:修改 Gitea 基础 URL(必做)
-
浏览器访问:
http://域名 -
管理员登录 → 右上角头像 → 控制面板
-
左侧 基本设置
-
修改:
Gitea 基础 URL:http://域名SSH 端口:222(保持不变)
-
拉到最下方 保存
最终效果
✅ 访问地址:无端口,直接用域名
✅ SSH 克隆:git clone ssh://git@域名:222/用户名/仓库名.git
✅ HTTP 克隆:git clone http://域名/用户名/仓库名.git
附录:一键安装 Docker + Docker Compose
# Docker
curl -fsSL https://get.docker.com | bash
systemctl enable docker && systemctl start docker
# Docker Compose
apt install -y docker-compose # Debian/Ubuntu
# 或 CentOS
yum install -y docker-compose