gitea在Ubuntu安装实战记录

官方教程

使用二进制文件安装 | Gitea Documentation

数据库创建

数据库名称:ijneer-gitea-db

字符集类型:CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';

二进制安装

  1. 下载安装包

    wget -O gitea https://dl.gitea.com/gitea/1.26.2/gitea-1.26.2-linux-amd64
    //本行必须执行(下方)
    chmod +x gitea

  2. 检查服务器git环境

    git --version (版本必须大于等于2.0)

  3. 创建用户git

    On Ubuntu/Debian:

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

  4. 创建工作路径

    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

    配置工作路径变量
    export GITEA_WORK_DIR=/var/lib/gitea/

    复制安装包(二进制文件)到全局目录
    cp gitea /usr/local/bin/gitea

  5. 将服务添加到linux服务中

    创建服务文件:
    sudo vim /etc/systemd/system/gitea.service

    插入内容(默认,可以根据实际调整):
    [Unit]
    Description=Gitea (Git with a cup of tea)
    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
    Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

    [Install]
    WantedBy=multi-user.target

    将服务添加到自启动:
    sudo systemctl enable gitea

    启动服务或重启服务:
    sudo systemctl start gitea
    sudo systemctl restart gitea

  6. 访问

    防火墙开放端口(默认3000):
    sudo ufw allow 3000/tcp

    访问后,根据提示填写数据库信息->初始化->创建管理员->完成并登陆。

域名代理解析

  1. 修改 Gitea 配置 /etc/gitea/app.ini

    打开配置文件:nano /etc/gitea/app.ini
    找到 [server] 区块,完整域名标准配置

    [server]

    基础域名,不带http/https、不带端口

    DOMAIN = git.example.com

    SSH克隆时显示的域名,和DOMAIN保持一致即可

    SSH_DOMAIN = git.example.com

    对外完整访问地址,末尾必须加 /

    ROOT_URL = https://git.example.com/

    监听本机127.0.0.1,只允许Nginx反向代理访问,不暴露公网端口

    HTTP_ADDR = 127.0.0.1
    HTTP_PORT = 3000

    开启反向代理支持,必须打开

    ENABLE_REVERSE_PROXY = true

    自动识别代理传递的域名与协议

    PUBLIC_URL_DETECTION = auto

    本地内部访问地址(worker、内部服务调用)

    LOCAL_ROOT_URL = http://127.0.0.1:3000/

  2. Nginx 反向代理配置

    新建站点文件 nano /etc/nginx/sites-available/git

    server {
    listen 80;
    server_name git.example.com;
    # HTTP强制跳转HTTPS
    return 301 https://hostrequest_uri;
    }

    server {
    listen 443 ssl;
    server_name git.example.com;
    # SSL证书(certbot自动生成)
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;

    复制代码
     # 代理核心:传递域名、真实IP、协议 
     location / { 
     	proxy_pass http://127.0.0.1:3000; 
     	proxy_http_version 1.1; 
     	proxy_set_header Host $host; 
     	# 传递访问域名(关键!Gitea靠这个解析域名) 
     	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; 
     	# 传递http/https协议 # 支持大文件上传 
     	client_max_body_size 200M; 
     } 

    }

  3. DNS 域名解析

    登录域名服务商后台,添加 A 记录:
    - 主机记录:git
    - 记录类型:A 记录
    - 记录值:你的服务器公网 IP

使用配置

  1. 关闭注册

    修改:/etc/gitea/app.ini
    [service]
    DISABLE_REGISTRATION = true # 禁用用户注册

    重启服务后生效。