Appearance
Gitea 部署指南
概述
Gitea 是一个轻量级的 DevOps 平台软件,从开发计划到产品成型的整个软件生命周期,它都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。Gitea 最初是从 Gogs 分支而来,几乎所有代码都已更改。
Gitea 简介
核心功能
- Git 托管: 完整的 Git 仓库管理
- 代码审查: Pull Request 和代码审查
- 项目管理: Issue 追踪和看板
- CI/CD: 内置 Actions 支持
- 包管理: 支持多种包格式
- Wiki: 项目文档管理
技术特点
- 轻量级: 最低配置要求低,适合小型服务器
- 跨平台: 支持 Linux、macOS、Windows
- 易安装: 单一二进制文件,安装简单
- 开源免费: MIT 许可证,完全开源
安装部署
系统要求
yaml
最低配置:
CPU: 1核
内存: 512MB
磁盘: 10GB
推荐配置:
CPU: 2核+
内存: 2GB+
磁盘: 50GB+
软件依赖:
- Git (>= 2.0)
- SSH Server
- 数据库 (可选: MySQL/PostgreSQL/SQLite3)CentOS 安装
1. 安装 Git
bash
# 更新系统
sudo yum update -y
# 安装依赖
sudo yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# 下载 Git 源码
wget https://github.com/git/git/archive/refs/tags/v2.45.1.tar.gz
tar -zxf v2.45.1.tar.gz
cd git-*
# 编译安装
make prefix=/usr/local all
sudo make prefix=/usr/local install
# 验证版本
git --version2. 创建用户
bash
# 创建 git 用户
groupadd git
useradd git -g git
# 创建目录
mkdir -p /usr/local/gitea
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea
chmod -R 750 /var/lib/gitea3. 下载 Gitea
bash
cd /usr/local/gitea
# 下载最新版本
wget -O gitea https://dl.gitea.com/gitea/1.21.3/gitea-1.21.3-linux-amd64
# 设置权限
chmod +x gitea
chown git:git gitea4. 配置系统服务
创建 /etc/systemd/system/gitea.service:
ini
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysqld.service
After=postgresql.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea
ExecStart=/usr/local/gitea/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.targetbash
# 启动服务
systemctl daemon-reload
systemctl enable gitea
systemctl start gitea
# 查看状态
systemctl status giteaDebian/Ubuntu 安装
1. 安装依赖
bash
sudo apt update
sudo apt install -y git2. 创建用户
bash
sudo adduser --system --shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git git3. 下载安装
bash
sudo mkdir -p /usr/local/gitea
cd /usr/local/gitea
wget -O gitea https://dl.gitea.com/gitea/1.21.3/gitea-1.21.3-linux-amd64
sudo chmod +x gitea
sudo chown git:git gitea4. 配置服务
bash
sudo systemctl enable gitea
sudo systemctl start giteaDocker 安装
使用 Docker Compose
yaml
# docker-compose.yml
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.21.3
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:
- ./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/mysqlbash
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f配置管理
初始配置
访问 http://your-server:3000 进行初始配置:
yaml
数据库设置:
数据库类型: SQLite3 / MySQL / PostgreSQL
主机: localhost:3306
用户名: gitea
密码: your-password
数据库名称: gitea
应用设置:
域名: your-domain.com
SSH 端口: 22
HTTP 端口: 3000
基础 URL: http://your-domain.com/
可选设置:
管理员账号: admin
管理员密码: your-admin-password
管理员邮箱: admin@example.com配置文件
配置文件位于 /etc/gitea/app.ini 或 /var/lib/gitea/custom/conf/app.ini:
ini
[server]
APP_DATA_PATH = /var/lib/gitea/data
DOMAIN = your-domain.com
HTTP_PORT = 3000
ROOT_URL = http://your-domain.com/
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD = your-password
[repository]
ROOT = /var/lib/gitea/data/gitea-repositories
[security]
INSTALL_LOCK = true
SECRET_KEY = your-secret-key
INTERNAL_TOKEN = your-internal-token
[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
[mailer]
ENABLED = true
HOST = smtp.example.com:587
FROM = gitea@example.com
USER = your-email@example.com
PASSWD = your-email-password反向代理配置
Nginx 配置
nginx
server {
listen 80;
server_name your-domain.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;
client_max_body_size 100M;
}
}Apache 配置
apache
<VirtualHost *:80>
ServerName your-domain.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>HTTPS 配置
bash
# 使用 Let's Encrypt
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d your-domain.com
# 自动续期
sudo certbot renew --dry-run使用指南
创建仓库
bash
# 通过网页创建
# 1. 登录 Gitea
# 2. 点击 "+" 按钮
# 3. 选择 "新建仓库"
# 4. 填写仓库信息
# 通过命令行
curl -X POST \
-H "Authorization: token YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"my-repo","private":true}' \
http://your-domain.com/api/v1/user/repos用户管理
bash
# 创建用户
gitea admin user create --username newuser --password password --email user@example.com
# 修改密码
gitea admin user change-password --username newuser --password newpassword
# 删除用户
gitea admin user delete --username newuser组织管理
bash
# 创建组织
curl -X POST \
-H "Authorization: token YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"username":"myorg","full_name":"My Organization"}' \
http://your-domain.com/api/v1/orgsWebhook 配置
yaml
# Webhook 设置
Settings -> Webhooks -> Add webhook
Webhook 类型:
- Gitea
- Slack
- Discord
- Dingtalk
- Telegram
- Microsoft Teams
触发事件:
☑ Push events
☑ Create events
☑ Delete events
☑ Issues events
☑ Pull request events备份与恢复
备份
bash
# 使用 gitea dump 命令
gitea dump -c /etc/gitea/app.ini
# 手动备份
#!/bin/bash
BACKUP_DIR="/backup/gitea"
DATE=$(date +%Y%m%d)
# 备份数据库
mysqldump -u gitea -p'password' gitea > ${BACKUP_DIR}/gitea-${DATE}.sql
# 备份仓库
tar -czf ${BACKUP_DIR}/repositories-${DATE}.tar.gz /var/lib/gitea/data/gitea-repositories
# 备份配置
cp /etc/gitea/app.ini ${BACKUP_DIR}/app.ini-${DATE}
# 删除旧备份
find ${BACKUP_DIR} -mtime +30 -delete恢复
bash
# 恢复数据库
mysql -u gitea -p'password' gitea < gitea-backup.sql
# 恢复仓库
tar -xzf repositories-backup.tar.gz -C /
# 恢复配置
cp app.ini-backup /etc/gitea/app.ini
# 重启服务
systemctl restart gitea性能优化
数据库优化
sql
-- MySQL 优化
SET GLOBAL innodb_buffer_pool_size = 1073741824;
SET GLOBAL max_connections = 200;
SET GLOBAL query_cache_size = 67108864;缓存配置
ini
[cache]
ENABLED = true
ADAPTER = redis
HOST = network=tcp,addr=127.0.0.1:6379,password=,db=0日志配置
ini
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /var/log/gitea
[log.file]
FILE_NAME = gitea.log
MAX_SIZE_SHIFT = 28
DAILY_ROTATE = true
MAX_DAYS = 7常见问题
忘记管理员密码
bash
# 重置密码
gitea admin user change-password --username admin --password newpasswordSSH 连接问题
bash
# 检查 SSH 配置
cat /etc/ssh/sshd_config | grep -i "AllowUsers"
# 添加 git 用户
echo "AllowUsers git" >> /etc/ssh/sshd_config
systemctl restart sshd性能问题
bash
# 检查系统资源
top
free -h
df -h
# 优化配置
# 增加 cache 大小
# 使用 Redis 缓存
# 优化数据库总结
Gitea 是一个轻量级、易用的 Git 托管平台:
优势:
- 轻量级: 资源占用少,适合小型服务器
- 易部署: 单一二进制文件,安装简单
- 功能完整: 提供完整的 Git 托管功能
- 开源免费: MIT 许可证,完全开源
适用场景:
- 小型团队协作
- 私有代码托管
- CI/CD 集成
- 学习和测试环境
通过合理配置和优化,Gitea 可以满足大多数团队的代码托管需求。
