Gitea是一个轻量级的Git服务,用Go写的,单二进制文件就能跑,资源占用极低。相比GitLab那套动不动4G内存起步的东西,Gitea在1核2G的机器上就能流畅运行,适合小团队或个人自建。如果你不想把代码放在GitHub上,或者需要私有仓库但不想付费,自建Gitea是个好选择。
部署方式有很多,我推荐用Docker,省事。以下是docker-compose.yml:
version: '3'
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- DB_TYPE=postgres
- DB_HOST=db:5432
- DB_NAME=gitea
- DB_USER=gitea
- DB_PASSWD=gitea
restart: always
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "22:22"
depends_on:
- db
db:
image: postgres:13
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
用`docker-compose up -d`启动,访问服务器IP:3000,第一次会进入安装页面。数据库选PostgreSQL,填好上面配置的用户密码,数据库主机填`db:5432`。域名那块填你要绑定的域名或直接留空,SSH端口默认22,HTTP端口3000。管理员账号可以现在创建,也可以之后注册第一个用户自动成为管理员。
如果不想用Docker,二进制部署更直接。去GitHub Releases下载对应系统的二进制文件,解压后直接运行:
wget https://github.com/go-gitea/gitea/releases/download/v1.21.0/gitea-1.21.0-linux-amd64
chmod +x gitea-1.21.0-linux-amd64
./gitea-1.21.0-linux-amd64 web
默认监听3000端口,配置文件在`custom/conf/app.ini`,可以改端口、数据库、邮件等。
数据安全要考虑。Gitea的数据都在`/data`目录,备份就是打包这个目录。我写个简单脚本每天跑:
#!/bin/bash
BACKUP_DIR="/backup/gitea"
DATE=$(date +%Y%m%d)
tar -czf "$BACKUP_DIR/gitea-$DATE.tar.gz" /path/to/gitea/data
find "$BACKUP_DIR" -name "gitea-*.tar.gz" -mtime +30 -delete
放到crontab里每天凌晨执行,保留30天。
反向代理是必须的,不然裸奔不安全。用Nginx:
server {
listen 80;
server_name git.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name git.example.com;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
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;
}
}
记得改`app.ini`里的`ROOT_URL`为https的地址,否则推送时地址不对。
Gitea的CI/CD可以用内置的Actions,语法和GitHub Actions基本一样。在仓库里建`.gitea/workflows/`目录,写个简单的构建流程:
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: |
go build -o myapp
- name: Deploy
run: |
scp myapp user@server:/app/
需要先配置好Runner,Gitea官方文档有详细步骤。
权限管理方面,Gitea支持组织、团队、仓库级别的权限控制。创建组织后,可以建多个团队,比如开发团队只给写权限,测试团队只给读权限。私有仓库默认只有自己和被邀请的人能看,这点比GitHub免费版大方。
如果不想自己折腾服务器,可以直接用雨云的云服务器,性价比高,稳定好用,他们家的机器跑Gitea绰绰有余,1核2G的配置就够了,一个月几十块钱,比自己买物理机省心。
说几个坑:
– 默认的`app.ini`里`LFS`是关闭的,如果项目有大文件要打开,否则推送大文件会报错
– SSH端口如果被占用,改成2222之类的,记得防火墙放行
– 数据库用SQLite也可以,但并发高时容易锁表,小团队无所谓,人多上PostgreSQL
– 升级Gitea时,先备份数据,替换二进制或拉新镜像,重启就行
整个搭建过程半小时搞定,比GitLab省太多资源。代码在自己手里,不用怕哪天被删库。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容