当前位置: 首页 > backend >正文

@Gitea 介绍部署使用详细指南

文章目录

    • **Gitea 介绍、部署、使用详细指南**
    • 1. 概述
      • 1.1 什么是 Gitea?
      • 1.2 核心特性
      • 1.3 Gitea vs GitLab vs Gogs
    • 2. 部署指南
      • 2.1 前提条件
      • 2.2 部署方法一:使用 Docker Compose (推荐)
      • 2.3 部署方法二:二进制安装
      • 2.4 配置反向代理 (Nginx) 和 SSL (可选但推荐)
    • 3. 基本使用指南
      • 3.1 初始设置
      • 3.2 用户与权限管理
      • 3.3 协作功能
    • 4. 常见问题 (FAQ)
    • 附录

Gitea 介绍、部署、使用详细指南


1. 概述

1.1 什么是 Gitea?

Gitea 是一个用 Go 语言编写的、轻量级、开源、自托管的 Git 服务平台。它被设计成可以以最低的资源开销在几乎任何能够运行 Go 语言的平台上运行,包括 Raspberry Pi 等边缘设备。它是 Gogs 的一个分支,但由一个更活跃的社区驱动和维护。

1.2 核心特性

  • Git 托管: 提供完整的 Git 服务,支持 SSH, HTTP 和 HTTPS 协议。
  • Web 界面: 直观友好的 Web 用户界面,与 GitHub 和 GitLab 类似。
  • 代码审查: 支持 Pull Requests (合并请求) 和代码行注释。
  • 问题跟踪 (Issues): 内置的问题和任务跟踪系统。
  • Wiki: 为每个仓库提供独立的 Wiki 文档系统。
  • CI/CD 集成: 可以通过 Webhook 轻松集成 Drone, Jenkins 等 CI/CD 工具。
  • 多语言支持: 支持多种界面语言。
  • 轻量高效: 二进制文件部署,内存和 CPU 占用极低。
  • 多数据库支持: 支持 SQLite, PostgreSQL, MySQL 和 MariaDB。

1.3 Gitea vs GitLab vs Gogs

  • vs GitLab: GitLab 功能极其强大(内置CI/CD,容器仓库等),但也因此非常重量级,对服务器资源(尤其是内存)要求高。Gitea 是轻量级替代方案,专注于核心的代码托管功能。
  • vs Gogs: Gitea 是 Gogs 的分支。主要区别在于社区治理模式,Gitea 拥有一个更开放和活跃的社区,因此功能更新和迭代速度更快。

2. 部署指南

本文将以最常用且易于维护的 Docker Compose 方式在 Linux 服务器上部署 Gitea。同时也会简要介绍二进制包部署。

2.1 前提条件

  • 一台运行中的 Linux 服务器 (如 Ubuntu 20.04/22.04, CentOS 7/8)
  • Docker 和 Docker Compose 已安装
  • 域名一枚 (可选,但强烈推荐),并解析到你的服务器 IP

2.2 部署方法一:使用 Docker Compose (推荐)

这种方法将所有服务(Gitea, PostgreSQL, Redis)容器化,管理方便,隔离性好。

步骤 1: 创建项目目录结构

sudo mkdir -p /opt/gitea/{data,postgres,redis}
cd /opt/gitea
  • data: 用于挂载 Gitea 的主目录(仓库、配置、日志等)
  • postgres: 用于挂载数据库数据,避免容器销毁后数据丢失
  • redis: 用于挂载 Redis 数据

步骤 2: 创建 docker-compose.yml 文件
使用你喜欢的编辑器(如 vimnano) 创建文件 docker-compose.yml:

version: '3'networks:gitea:external: falseservices:server:image: gitea/gitea:latestcontainer_name: gitea_serverenvironment:- USER_UID=1000- USER_GID=1000- GITEA__database__DB_TYPE=postgres- GITEA__database__HOST=db:5432- GITEA__database__NAME=gitea- GITEA__database__USER=gitea- GITEA__database__PASSWD=your_secure_password_hererestart: alwaysnetworks:- giteavolumes:- ./data:/data- /etc/timezone:/etc/timezone:ro- /etc/localtime:/etc/localtime:roports:- "3000:3000"- "2222:22"depends_on:- db- redisdb:image: postgres:15container_name: gitea_dbenvironment:- POSTGRES_USER=gitea- POSTGRES_PASSWORD=your_secure_password_here- POSTGRES_DB=gitearestart: alwaysnetworks:- giteavolumes:- ./postgres:/var/lib/postgresql/dataredis:image: redis:9-alpinecontainer_name: gitea_redisrestart: alwaysnetworks:- giteavolumes:- ./redis:/datacommand: "redis-server --appendonly yes"

重要提示: 请将 your_secure_password_here 替换为一个强密码。

步骤 3: 启动 Gitea 栈

sudo docker-compose up -d

-d 选项表示在后台运行。

步骤 4: 完成安装向导
访问 http://your_server_ip:3000,你将看到 Gitea 的首次安装配置页面。

  • 数据库设置: 保持默认即可,Docker Compose 已经通过环境变量配置好了。
  • 常规设置:
    • 站点名称: 你的 Gitea 实例名称。
    • 仓库根目录: /data/git/repositories (容器内路径,已挂载,勿改)。
    • LFS 根目录: /data/git/lfs (同上)。
    • SSH 服务器端口: 填写 2222(与 docker-compose.yml 中映射的端口一致)。
    • SSH 服务器域名: 填写你的服务器 IP 或域名。
    • Gitea 基本 URL: 填写 http://your_domain_or_ip:3000/ 或如果你配置了反向代理,则填写 https://your_domain.com/
  • 创建第一个管理员账户。

配置完成后,点击“安装 Gitea”。

2.3 部署方法二:二进制安装

适用于无法使用 Docker 的环境。

  1. 从 Gitea 下载页面 下载适用于你架构的二进制文件。
  2. 赋予执行权限并移动到系统路径:
    wget -O gitea https://dl.gitea.com/gitea/1.20.0/gitea-1.20.0-linux-amd64
    chmod +x gitea
    sudo mv gitea /usr/local/bin/
    
  3. 创建系统用户并设置目录权限:
    sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
    sudo mkdir -p /var/lib/gitea/{custom,data,log}
    sudo chown -R git:git /var/lib/gitea
    sudo chmod -R 750 /var/lib/gitea
    
  4. 配置 Gitea 为系统服务 (/etc/systemd/system/gitea.service):
    [Unit]
    Description=Gitea
    After=syslog.target
    After=network.target[Service]
    RestartSec=2s
    Type=simple
    User=git
    Group=git
    WorkingDirectory=/var/lib/gitea
    ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
    Restart=always[Install]
    WantedBy=multi-user.target
    
  5. 启动并启用服务:
    sudo systemctl enable --now gitea
    
  6. 访问 http://your_server_ip:3000 完成网页安装向导。

2.4 配置反向代理 (Nginx) 和 SSL (可选但推荐)

目的: 使用域名访问并启用 HTTPS 加密。

  1. 安装 Nginx 和 Certbot:

    # Ubuntu/Debian
    sudo apt install nginx certbot python3-certbot-nginx# CentOS/Rocky Linux
    sudo dnf install nginx certbot python3-certbot-nginx
    
  2. 创建 Nginx 配置文件 /etc/nginx/conf.d/gitea.conf

    server {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost: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;}
    }
    
  3. 测试配置并重载 Nginx:

    sudo nginx -t
    sudo systemctl reload nginx
    
  4. 使用 Certbot 获取 SSL 证书:

    sudo certbot --nginx -d your_domain.com
    

    Certbot 会自动修改 Nginx 配置,将其重定向到 HTTPS。

  5. 修改 Gitea 配置:更新 app.ini (对于 Docker,文件在 /opt/gitea/data/gitea/conf/app.ini) 中的 ROOT_URL

    [server]
    ROOT_URL = https://your_domain.com/
    
  6. 重启 Gitea 服务或容器:

    # Docker Compose
    sudo docker-compose restart# Systemd
    sudo systemctl restart gitea
    

现在你可以通过 https://your_domain.com 安全地访问 Gitea。

3. 基本使用指南

3.1 初始设置

  1. 注册与登录: 安装后,用创建的管理员账户登录。
  2. 创建仓库: 点击右上角 “+” 号 -> “新建仓库”。
  3. 推送到仓库:
    echo "# My Project" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git branch -M main
    git remote add origin https://your_domain.com/username/repo-name.git
    git push -u origin main
    

3.2 用户与权限管理

  • 管理员: 可以管理全站设置、用户、仓库、组织。
  • 用户: 可以创建仓库、加入组织、协作。
  • 组织: 用于管理团队和团队项目。可以创建团队并设置精细的仓库权限(读、写、管理员)。

3.3 协作功能

  • Fork & Pull Request: 工作流与 GitHub 完全一致。
  • 问题 (Issues): 可以分配、标签、里程碑管理。
  • Web 钩子 (Webhooks): 在仓库设置中配置,用于触发 CI/CD pipeline。

4. 常见问题 (FAQ)

Q1: 如何备份和恢复 Gitea?
A: Gitea 提供了方便的 CLI 命令(即使在 Docker 中也可使用)。

  • 备份:
    # Docker 方式
    sudo docker exec -u git -it gitea_server bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini'
    # 备份文件会生成在 /opt/gitea/data/gitea/ 下,请将其拷贝到安全的地方。
    
  • 恢复:
    1. 停止 Gitea 服务。
    2. 使用 gitea restore 命令指定备份文件。
    3. 重启服务。

Q2: 如何升级 Gitea (Docker 方式)?
A: 非常简单!

cd /opt/gitea
sudo docker-compose pull    # 拉取最新镜像
sudo docker-compose down    # 停止当前服务
sudo docker-compose up -d   # 用新镜像重新启动服务

Q3: 忘记管理员密码怎么办?
A: 可以通过命令行重置。

# Docker 方式
sudo docker exec -it gitea_server bash
su git
cd /app/gitea
./gitea admin user change-password --username your_admin_username --password your_new_password

Q4: 如何修改配置?
A: 主配置文件是 app.ini

  • Docker: 位于挂载卷中,例如 /opt/gitea/data/gitea/conf/app.ini。修改后需要重启容器:sudo docker-compose restart
  • 二进制: 通常位于 /etc/gitea/app.ini。修改后需要重启服务:sudo systemctl restart gitea

Q5: 如何迁移旧服务器上的 Git 仓库到 Gitea?
A: 最简单的方法是:

  1. 在旧服务器上为每个仓库创建一个裸克隆:git clone --bare repo_url.git
  2. 在 Gitea 上创建一个新的空仓库。
  3. 将裸克隆推送到 Gitea:
    cd repo.git
    git push --mirror https://gitea_url/username/new_repo.git
    

Q6: 出现 500 Internal Server Error 怎么办?
A:

  1. 首先查看日志定位错误原因。
    • Docker: sudo docker-compose logs server
    • 二进制: journalctl -u gitea -f 或查看 /var/lib/gitea/log/gitea.log
  2. 常见原因:数据库连接失败、权限问题、配置文件格式错误。

附录

  • 官方文档: https://docs.gitea.com
  • GitHub 仓库: https://github.com/go-gitea/gitea
  • 论坛和社区: https://discourse.gitea.com
http://www.xdnf.cn/news/19077.html

相关文章:

  • 【二叉树(DFS)- LeetCode】124. 二叉树中的最大路径和
  • 3 反向传播
  • WebStorm-在WebStorm中使用Git管理项目
  • Set和Map
  • Manus AI:突破多语言手写识别的技术壁垒,重塑全球交流方式
  • 【69页PPT】智慧方案智慧校园解决方案(附下载方式)
  • oceanbase-参数及变量的记录
  • 零成本解锁 Cursor Pro:虚拟卡白嫖1个月+14天试用全攻略
  • 【MFC自动生成的文件详解:YoloClassMFC.cpp 的逐行解释、作用及是否能删除】
  • 30分钟入门实战速成Cursor IDE(2)
  • B树的概述以及插入逻辑
  • 亚马逊的宝藏促销活动~
  • Java全栈开发实战:从基础到微服务的深度探索
  • KNN算法详解:鸢尾花识别和手写数字识别
  • 在做题中学习(91):二叉树的锯齿形层序遍历
  • Vue3 中的 v-model 语法糖
  • 什么是token,什么叫词嵌入
  • linux系统学习(9.文件系统管理)
  • Linux Shell 编程
  • Less介绍Less变量
  • C/C++ 编程实战 -- CMake用法
  • 隧道搭建技术
  • C++/python解决OpenCV的窗口被渲染到了屏幕外,导致imshow方法无法弹出窗口问题
  • JDK12安装步骤及下载(附小白详细教程)
  • 钉钉补卡事件处理方案
  • 算法---字符串
  • FDTD_mie散射_仿真学习(2)
  • 【机器人概念设计软件操作手册】 建模技巧与最佳实践
  • 自适应RAG架构:智能检索增强生成的演进与实现
  • 前端如何使用canvas实现截图