Gitea自建Git代码托管

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
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容