部署 Gitea

#!/bin/bash
# Gitea 管理脚本:安装前先卸载旧的
set -e

GITEA_VERSION="1.22.3"                          # 要安装的版本
GITEA_BIN="/usr/local/bin/gitea"
GITEA_USER="git"
GITEA_HOME="/var/lib/gitea"
GITEA_CONF="/etc/gitea"
SERVICE_FILE="/etc/systemd/system/gitea.service"

uninstall_gitea() {
    echo "⚠️ 卸载旧版 Gitea ..."
    systemctl stop gitea >/dev/null 2>&1 || true
    systemctl disable gitea >/dev/null 2>&1 || true
    rm -f $SERVICE_FILE
    rm -f $GITEA_BIN
    systemctl daemon-reload
    echo "✅ 卸载完成(数据目录 $GITEA_HOME 和配置 $GITEA_CONF 保留)"
}

install_gitea() {
    echo "📥 开始安装 Gitea v${GITEA_VERSION} ..."
    # 卸载旧版本
    uninstall_gitea

    # 创建用户和目录
    id -u $GITEA_USER &>/dev/null || useradd -r -m -d $GITEA_HOME -s /bin/bash $GITEA_USER
    mkdir -p $GITEA_HOME/{custom,data,log} $GITEA_CONF
    chown -R $GITEA_USER:$GITEA_USER $GITEA_HOME $GITEA_CONF

    # 下载二进制
    wget -O $GITEA_BIN "https://dl.gitea.com/gitea/${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64"
    chmod +x $GITEA_BIN

    # 写 systemd 服务
    cat > $SERVICE_FILE <<EOF
[Unit]
Description=Gitea
After=syslog.target
After=network.target
Requires=network.target

[Service]
RestartSec=2s
Type=simple
User=$GITEA_USER
Group=$GITEA_USER
WorkingDirectory=$GITEA_HOME
ExecStart=$GITEA_BIN web --config $GITEA_CONF/app.ini
Restart=always
Environment=USER=$GITEA_USER HOME=$GITEA_HOME GITEA_WORK_DIR=$GITEA_HOME

[Install]
WantedBy=multi-user.target
EOF

    systemctl daemon-reload
    systemctl enable gitea
    systemctl start gitea
    echo "✅ 安装完成!访问 http://你的IP:3000 初始化"
}

restart_gitea() {
    echo "🔄 正在重启 Gitea ..."
    systemctl restart gitea
    echo "✅ 已重启"
}

stop_gitea() {
    echo "⏹️ 正在停止 Gitea ..."
    systemctl stop gitea
    echo "✅ 已停止"
}

menu() {
    echo "===== Gitea 管理 ====="
    echo "1) 安装最新 Gitea(会自动卸载旧版)"
    echo "2) 卸载 Gitea"
    echo "3) 重启 Gitea"
    echo "4) 停止 Gitea"
    echo "======================"
    read -p "请选择操作: " choice

    case $choice in
        1) install_gitea ;;
        2) uninstall_gitea ;;
        3) restart_gitea ;;
        4) stop_gitea ;;
        *) echo "无效选择" ;;
    esac
}

menu
❤️ 转载文章请注明出处,谢谢!❤️