前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管

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

作者头像
猫头虎
发布2025-06-08 08:42:59
发布2025-06-08 08:42:59
29800
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

前置准备

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

安装依赖

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

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt update
sudo apt install -y git curl wget vim ufw

安装数据库:

  • 推荐使用 MariaDB(也可选择 MySQL、PostgreSQL)。
代码语言:javascript
代码运行次数:0
运行
复制
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

安装 certbot(用于后续 SSL):

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt install -y certbot

创建 Gitea 系统用户与目录

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

代码语言:javascript
代码运行次数:0
运行
复制
sudo adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Gitea git user' \
   --group \
   --disabled-password \
   --home /home/git \
   git

创建存放 Git 仓库及配置的目录,并赋予权限:

代码语言:javascript
代码运行次数:0
运行
复制
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 二进制

切换至临时目录:

代码语言:javascript
代码运行次数:0
运行
复制
cd /tmp

拉取最新版 Gitea(参考 官方下载页面):

代码语言:javascript
代码运行次数:0
运行
复制
wget -O gitea https://dl.gitea.io/gitea/1.20.2/gitea-1.20.2-linux-amd64

安装至系统可执行路径:

代码语言:javascript
代码运行次数:0
运行
复制
sudo mv gitea /usr/local/bin/gitea
sudo chmod +x /usr/local/bin/gitea

验证:

代码语言:javascript
代码运行次数:0
运行
复制
gitea --version

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


配置数据库

登录 MariaDB:

代码语言:javascript
代码运行次数:0
运行
复制
sudo mysql

创建数据库与专用用户:

代码语言:javascript
代码运行次数:0
运行
复制
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;

记录下数据库名称、用户名与密码,后续 Gitea 安装时需要使用。


配置 Gitea 应用

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

代码语言:javascript
代码运行次数:0
运行
复制
[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

代码语言:javascript
代码运行次数:0
运行
复制
sudo chown root:git /etc/gitea/app.ini
sudo chmod 660 /etc/gitea/app.ini

设置 systemd 服务

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

代码语言:javascript
代码运行次数:0
运行
复制
[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

使能并启动服务:

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl daemon-reload
sudo systemctl enable --now gitea
sudo systemctl status gitea

防火墙与域名、SSL 配置

开启 UFW 并允许常用端口:

代码语言:javascript
代码运行次数:0
运行
复制
sudo ufw allow OpenSSH
sudo ufw allow 3000/tcp
sudo ufw enable

使用 certbot 获取并自动续期免费 SSL:

代码语言:javascript
代码运行次数:0
运行
复制
sudo certbot certonly --standalone -d git.example.com

在 Nginx 或 Apache 中反向代理 Gitea,并配置 SSL。例如,Nginx 配置片段:

代码语言:javascript
代码运行次数:0
运行
复制
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”完成初始化。

安全加固与备份

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

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

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt install -y fail2ban

定期备份

数据库:

代码语言:javascript
代码运行次数:0
运行
复制
mysqldump -u gitea -p gitea > /backup/gitea-db-$(date +%F).sql

仓库文件:

代码语言:javascript
代码运行次数:0
运行
复制
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,根据报错信息排查。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管
    • 前置准备
    • 安装依赖
    • 创建 Gitea 系统用户与目录
    • 下载与安装 Gitea 二进制
    • 配置数据库
    • 配置 Gitea 应用
    • 设置 systemd 服务
    • 防火墙与域名、SSL 配置
    • 首次启动与初始化
    • 安全加固与备份
    • 常见问题与排查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档