在当今软件开发高速迭代的时代,企业对「私有化代码仓库托管」的需求愈发迫切。通过在公司服务器部署 Gitea,不仅可以实现“Git 私有化托管”与“代码安全隔离”,还能够结合 CI/CD 流水线快速交付,彻底摆脱公有云成本与权限风控的双重烦恼。本教程将手把手教您在 Ubuntu 20.04 环境下,完成从服务器准备、依赖安装到域名配置、SSL 加密、自动化运维的一整套 “Gitea 服务器搭建” 方案,确保您能够快速上手 “Gitea 安装教程” 并实现“企业级 Git 自托管”最佳实践。 本文详细介绍在公司服务器上从零开始部署 Gitea 服务的全流程。全程使用 Ubuntu 20.04 LTS 作为示例操作系统,其他 Linux 发行版亦可参照操作。
作者✍️ 公众号:猫头虎技术团队 万粉变现经纪人:CSDNWF
sudo
权限的用户。git.example.com
)指向本机 IP。更新系统包列表并安装基础工具:
sudo apt update
sudo apt install -y git curl wget vim ufw
安装数据库:
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
安装 certbot(用于后续 SSL):
sudo apt install -y certbot
为了安全隔离,建议单独为 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
切换至临时目录:
cd /tmp
拉取最新版 Gitea(参考 官方下载页面):
wget -O gitea https://dl.gitea.io/gitea/1.20.2/gitea-1.20.2-linux-amd64
安装至系统可执行路径:
sudo mv gitea /usr/local/bin/gitea
sudo chmod +x /usr/local/bin/gitea
验证:
gitea --version
若能正确输出版本号,则安装成功。
登录 MariaDB:
sudo mysql
创建数据库与专用用户:
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 安装时需要使用。
在 /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
创建 /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
开启 UFW 并允许常用端口:
sudo ufw allow OpenSSH
sudo ufw allow 3000/tcp
sudo ufw enable
使用 certbot 获取并自动续期免费 SSL:
sudo certbot certonly --standalone -d git.example.com
在 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;
}
}
https://git.example.com
。
admin
)、邮箱、密码。更换默认端口:将 SSH 服务端口改为非 22 端口,修改 /etc/ssh/sshd_config
并重启。
开启 Fail2Ban:安装并配置防爆破:
sudo apt install -y fail2ban
定期备份:
数据库:
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
自动化。
sudo journalctl -u gitea -f
app.ini
配置文件格式与权限。Permission denied
?
git
用户家目录 .ssh/authorized_keys
是否存在并正确。sudo certbot renew --dry-run
,根据报错信息排查。