Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管

Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管

在当今软件开发高速迭代的时代,企业对「私有化代码仓库托管」的需求愈发迫切。通过在公司服务器部署 Gitea,不仅可以实现“Git 私有化托管”与“代码安全隔离”,还能够结合 CI/CD 流水线快速交付,彻底摆脱公有云成本与权限风控的双重烦恼。本教程将手把手教您在 Ubuntu 20.04 环境下,完成从服务器准备、依赖安装到域名配置、SSL 加密、自动化运维的一整套 “Gitea 服务器搭建” 方案,确保您能够快速上手 “Gitea 安装教程” 并实现“企业级 Git 自托管”最佳实践。
本文详细介绍在公司服务器上从零开始部署 Gitea 服务的全流程。全程使用 Ubuntu 20.04 LTS 作为示例操作系统,其他 Linux 发行版亦可参照操作。

作者✍️
猫头虎微信号:Libin9iOak
公众号:猫头虎技术团队
万粉变现经纪人:CSDNWF


Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管


目录

  1. 前置准备
  2. 安装依赖
  3. 创建 Gitea 系统用户与目录
  4. 下载与安装 Gitea 二进制
  5. 配置数据库
  6. 配置 Gitea 应用
  7. 设置 systemd 服务
  8. 防火墙与域名、SSL 配置
  9. 首次启动与初始化
  10. 安全加固与备份
  11. 常见问题与排查

前置准备

  • 一台干净的 Ubuntu 20.04 LTS 服务器,至少 2 GB 内存、20 GB 磁盘空间。
  • 拥有 sudo 权限的用户。
  • 已绑定并解析好域名(如 git.example.com)指向本机 IP。
  • 公司网络允许对 HTTP(80)和 HTTPS(443)端口访问。1

安装依赖

  1. 更新系统包列表并安装基础工具:

    sudo apt update
    sudo apt install -y git curl wget vim ufw
    
  2. 安装数据库:

    • 推荐使用 MariaDB(也可选择 MySQL、PostgreSQL)。
    sudo apt install -y mariadb-server
    sudo systemctl enable --now mariadb
    
  3. 安装 certbot(用于后续 SSL):

    sudo apt install -y certbot
    

创建 Gitea 系统用户与目录

为了安全隔离,建议单独为 Gitea 创建系统用户:

sudo adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Gitea git user' \
   --group \
   --disabled-password \
   --home /home/git \
   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
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

下载与安装 Gitea 二进制

  1. 切换至临时目录:

    cd /tmp
    
  2. 拉取最新版 Gitea(参考 官方下载页面):

    wget -O gitea https://dl.gitea.io/gitea/1.20.2/gitea-1.20.2-linux-amd64
    
  3. 安装至系统可执行路径:

    sudo mv gitea /usr/local/bin/gitea
    sudo chmod +x /usr/local/bin/gitea
    
  4. 验证:

    gitea --version
    

    若能正确输出版本号,则安装成功。


配置数据库

  1. 登录 MariaDB:

    sudo mysql
    
  2. 创建数据库与专用用户:

    CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    CREATE USER 'gitea'@'localhost' IDENTIFIED BY '你的安全密码';
    GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    
  3. 记录下数据库名称、用户名与密码,后续 Gitea 安装时需要使用。


配置 Gitea 应用

/etc/gitea/app.ini 中添加基础配置:

[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gitea
USER     = gitea
PASSWD   = 你的安全密码
SSL_MODE = disable

[server]
DOMAIN           = git.example.com
HTTP_PORT        = 3000
ROOT_URL         = https://git.example.com/
DISABLE_SSH      = false
SSH_PORT         = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs

[security]
INSTALL_LOCK   = true
SECRET_KEY     = 一个随机长密钥,使用 `openssl rand -hex 16` 生成

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /var/lib/gitea/log

确保文件属主为 root:git 并且权限为 660

sudo chown root:git /etc/gitea/app.ini
sudo chmod 660 /etc/gitea/app.ini

设置 systemd 服务

创建 /etc/systemd/system/gitea.service

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mariadb.service

[Service]
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

使能并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable --now gitea
sudo systemctl status gitea

防火墙与域名、SSL 配置

  1. 开启 UFW 并允许常用端口:

    sudo ufw allow OpenSSH
    sudo ufw allow 3000/tcp
    sudo ufw enable
    
  2. 使用 certbot 获取并自动续期免费 SSL:

    sudo certbot certonly --standalone -d git.example.com
    
  3. 在 Nginx 或 Apache 中反向代理 Gitea,并配置 SSL。例如,Nginx 配置片段:

    server {
        listen 80;
        server_name git.example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        server_name git.example.com;
    
        ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

首次启动与初始化

  1. 在浏览器中访问 https://git.example.com

  2. 在安装向导中填写:

    • Database Settings:与前面创建的数据库信息一致。
    • Application General Settings:站点标题、管理员账号(如 admin )、邮箱、密码。
    • Server and SSH Settings:确保 SSH 模块开启,SSH 端口为 22。
  3. 点击“Install Gitea”完成初始化。


安全加固与备份

  1. 更换默认端口:将 SSH 服务端口改为非 22 端口,修改 /etc/ssh/sshd_config 并重启。

  2. 开启 Fail2Ban:安装并配置防爆破:

    sudo apt install -y fail2ban
    
  3. 定期备份

    • 数据库:

      mysqldump -u gitea -p gitea > /backup/gitea-db-$(date +%F).sql
      
    • 仓库文件:

      tar czvf /backup/gitea-repos-$(date +%F).tar.gz /var/lib/gitea/data
      
    • 考虑使用 cron 自动化。


常见问题与排查

  • Gitea 无法启动?

    • 查看日志:sudo journalctl -u gitea -f
    • 检查 app.ini 配置文件格式与权限。
  • SSH 克隆报错 Permission denied

    • 确认服务器 SSH 配置允许 git 用户登录。
    • 检查 git 用户家目录 .ssh/authorized_keys 是否存在并正确。
  • SSL 证书续期失败?

    • 手动执行:sudo certbot renew --dry-run,根据报错信息排查。

  1. 作者✍️ 猫头虎微信号:Libin9iOak; 公众号:猫头虎技术团队; 万粉变现经纪人:CSDNWF ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫头虎

一分也是爱,打赏博主成就未来!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值