搭建私有代码仓库:Ubuntu 下的 Gitea 安装指南

简介

Gitea 是一个开源的代码托管平台,它以其轻量级和易用性而闻名。作为一个自托管的 Git 服务,它提供了类似 GitHub/GitLab 的核心功能,包括仓库管理、问题追踪、代码审查等,但资源占用更少,部署维护更简单。

无论是个人开发者想要搭建私人代码库,还是小型团队需要一个自主可控的协作平台,Gitea 都是一个理想的选择。它的主要特点包括:

  • 安装简单:一个二进制文件即可运行
  • 资源友好:最低配置即可流畅运行
  • 功能完整:支持 Pull Requests、Wiki、CI/CD 等
  • 跨平台:支持 Linux、Windows、macOS 等多个系统

本教程将指导你在 Ubuntu 22.04 系统上搭建 Gitea 服务,包括环境配置、安装部署和安全加固等完整步骤。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择 Ubuntu 22.04 版本,按照自己需求是否预装 Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

安装步骤

1. 更新系统

首先更新系统包:

sudo apt update -y

2. 安装 Nginx

Nginx 将作为反向代理,让我们能够通过域名访问 Gitea:

sudo apt install nginx -y

3. 配置防火墙

如果你启用了防火墙,需要开放 HTTP 和 HTTPS 端口:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

4. 安装 PostgreSQL 数据库

Gitea 支持多种数据库,这里我们选择 PostgreSQL(版本 >= 12)作为数据库。

添加 PostgreSQL 官方源:

sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

导入签名密钥:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

更新包列表:

sudo apt-get update

安装 PostgreSQL:

sudo apt-get -y install postgresql

5. 配置 PostgreSQL

首先修改密码加密方式为 SCRAM-SHA-256:

sudo nano /etc/postgresql/16/main/postgresql.conf

找到并修改(如果没有则添加):

password_encryption = scram-sha-256

登录 PostgreSQL 控制台:

su -c "psql" - postgres

创建数据库用户:

CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';

创建数据库:

CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

编辑认证配置:

local    giteadb    gitea    scram-sha-256

重启 PostgreSQL:

sudo systemctl restart postgresql

6. 安装 Gitea

下载 Gitea 二进制文件:

wget -O gitea https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-linux-amd64

设置执行权限:

chmod +x gitea

创建 git 用户:

adduser \\
   --system \\
   --shell /bin/bash \\
   --gecos 'Git Version Control' \\
   --group \\
   --disabled-password \\
   --home /home/git \\
   git

创建必要的目录结构:

mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

复制 Gitea 二进制文件到系统目录:

cp gitea /usr/local/bin/gitea

7. 配置 Gitea 系统服务

创建服务配置文件:

sudo nano /etc/systemd/system/gitea.service

添加以下内容:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Wants=postgresql.service
After=postgresql.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
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target

启用并启动服务:

systemctl daemon-reload
systemctl enable gitea
systemctl start gitea

8. 配置 Nginx

创建 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/your_domain.conf

添加以下配置:

server {
    listen 80;
    server_name your_domain;
    location / {
        client_max_body_size 512M;
        proxy_pass <http://localhost:3000>;
        proxy_set_header Connection $http_connection;
        proxy_set_header Upgrade $http_upgrade;
        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;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/your_domain.conf

测试并重启 Nginx:

nginx -t
sudo systemctl restart nginx

9. 配置 SSL 证书

安装 Certbot:

sudo apt install certbot python3-certbot-nginx -y

获取 SSL 证书:

sudo certbot --nginx -d your_domain

完成以上步骤后,访问你的域名,你会看到 Gitea 的初始化页面:

在这个页面中,你需要:

  1. 填写数据库配置信息
  2. 设置管理员账号(建议不要使用 admin 作为用户名)
  3. 根据需要调整其他配置项

至此,你已经完成了 Gitea 的完整安装和配置。现在你可以通过 HTTPS 安全地访问你的 Gitea 实例了。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site