#!/usr/bin/env bash # install_gitea.sh —— 新服务器一键安装 Gitea(自包含体系用) # 用法: sudo ./install_gitea.sh 例: sudo ./install_gitea.sh git.example.com # 安装后仍需人工完成: DNS A 记录、宝塔反向代理(含 client_max_body_size 0)、SSL 证书、创建管理员 set -euo pipefail DOMAIN="${1:?用法: sudo ./install_gitea.sh }" BASE=/www/gitea [ "$(id -u)" -eq 0 ] || { echo "必须以 root 运行"; exit 1; } echo "==> 1/7 创建 git 系统用户与目录" id git >/dev/null 2>&1 || useradd --system --shell /bin/bash --home-dir /home/git --create-home git mkdir -p $BASE/custom/conf $BASE/data $BASE/log echo "==> 2/7 查询最新稳定版" VERSION=$(curl -s https://dl.gitea.com/gitea/version.json | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1) [ -n "$VERSION" ] || { echo "无法获取版本号,检查网络"; exit 1; } echo " 最新稳定版: $VERSION" echo "==> 3/7 下载并校验二进制" cd /tmp curl -sL -o gitea-$VERSION-linux-amd64 https://dl.gitea.com/gitea/$VERSION/gitea-$VERSION-linux-amd64 curl -sL -o gitea-$VERSION-linux-amd64.sha256 https://dl.gitea.com/gitea/$VERSION/gitea-$VERSION-linux-amd64.sha256 sha256sum -c gitea-$VERSION-linux-amd64.sha256 install -m 755 gitea-$VERSION-linux-amd64 /usr/local/bin/gitea rm -f gitea-$VERSION-linux-amd64* echo "==> 4/7 写配置 app.ini" SECRET=$(openssl rand -hex 32) cat > $BASE/custom/conf/app.ini < 5/7 systemd 服务" cat > /etc/systemd/system/gitea.service < 6/7 等待启动" for i in $(seq 1 30); do sleep 2 CODE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/ || true) [ "$CODE" = "200" ] && break done [ "$CODE" = "200" ] || { echo "启动失败,查看: journalctl -u gitea -n 30"; exit 1; } echo "==> 7/7 完成。后续人工步骤:" cat < 本机公网 IP 2. 宝塔建反向代理站点: $DOMAIN -> http://127.0.0.1:3000,server 块加 client_max_body_size 0; (不加快递大 push 会被 nginx 默认 1m 限制拒绝) 3. DNS 生效后申请 SSL 证书(注意选对域名) 4. 创建管理员: sudo -u git gitea admin user create --config $BASE/custom/conf/app.ini \\ --admin --username admin --password '<强密码>' --email admin@$DOMAIN --must-change-password=false 5. 生成 API token 并配置 /root/.git-credentials (600) TIP