diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml index 7c734e5..d1010c8 100644 --- a/.gitea/workflows/docker.yml +++ b/.gitea/workflows/docker.yml @@ -49,7 +49,7 @@ jobs: if [ "${{ github.ref_name }}" = "main" ]; then echo "DOCKER_TAG_SUFFIX=latest" >> $GITHUB_ENV echo "CONTAINER_NAME=ppanel-server" >> $GITHUB_ENV - echo "DEPLOY_PATH=/root/vpn_server" >> $GITHUB_ENV + echo "DEPLOY_PATH=/root/bindbox" >> $GITHUB_ENV echo "为 main 分支设置生产环境变量" elif [ "${{ github.ref_name }}" = "dev" ]; then echo "DOCKER_TAG_SUFFIX=dev" >> $GITHUB_ENV @@ -137,8 +137,19 @@ jobs: echo "镜像推送完成" - # 步骤5: 连接服务器拉镜像启动 - - name: 🚀 连接服务器拉镜像启动 + # 步骤5: 传输配置文件 + - name: 📂 传输配置文件 + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ env.SSH_HOST }} + username: ${{ env.SSH_USER }} + password: ${{ env.SSH_PASSWORD }} + port: ${{ env.SSH_PORT }} + source: "docker-compose.cloud.yml" + target: "${{ env.DEPLOY_PATH }}/" + + # 步骤6: 连接服务器更新并启动 + - name: 🚀 连接服务器更新并启动 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ env.SSH_HOST }} @@ -149,60 +160,27 @@ jobs: command_timeout: 600s script: | echo "连接服务器成功,开始部署..." - echo "部署容器名: ${{ env.CONTAINER_NAME }}" - echo "部署路径: ${{ env.DEPLOY_PATH }}" - echo "部署镜像: ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}" + echo "部署目录: ${{ env.DEPLOY_PATH }}" + echo "部署标签: ${{ env.DOCKER_TAG_SUFFIX }}" - # 确保部署目录存在 - mkdir -p ${{ env.DEPLOY_PATH }}/config - mkdir -p ${{ env.DEPLOY_PATH }}/logs - - # 停止并删除旧容器(忽略所有错误) - if docker ps -a | grep -q ${{ env.CONTAINER_NAME }} 2>/dev/null; then - echo "停止旧容器..." - docker stop ${{ env.CONTAINER_NAME }} >/dev/null 2>&1 || true - echo "等待容器完全停止..." - sleep 5 - - echo "删除旧容器..." - # 静默删除,完全忽略错误输出 - docker rm ${{ env.CONTAINER_NAME }} >/dev/null 2>&1 || true - sleep 2 - - # 如果仍然存在,尝试强制删除(静默) - if docker ps -a | grep -q ${{ env.CONTAINER_NAME }} 2>/dev/null; then - echo "尝试强制删除..." - docker rm -f ${{ env.CONTAINER_NAME }} >/dev/null 2>&1 || true - sleep 3 - fi - - echo "容器清理完成,继续部署..." - fi - - # 拉取最新分支镜像 - echo "拉取镜像: ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }}..." - docker pull ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }} - - # 启动新容器 - echo "启动新容器..." + # 进入部署目录 cd ${{ env.DEPLOY_PATH }} - docker run -d \ - --name ${{ env.CONTAINER_NAME }} \ - --restart unless-stopped \ - --network host \ - -v ./config/ppanel.yaml:/app/etc/ppanel.yaml \ - -v ./logs:/app/logs \ - ${{ env.REPO }}:${{ env.DOCKER_TAG_SUFFIX }} - - # 检查容器状态 - sleep 5 - if docker ps | grep -q ${{ env.CONTAINER_NAME }}; then - echo "✅ 容器启动成功" - else - echo "❌ 容器启动失败" - docker logs ${{ env.CONTAINER_NAME }} - exit 1 - fi + + # 创建/更新环境变量文件 + echo "PPANEL_SERVER_TAG=${{ env.DOCKER_TAG_SUFFIX }}" > .env + + # 拉取最新镜像 + echo "📥 拉取镜像..." + docker-compose -f docker-compose.cloud.yml pull ppanel-server + + # 启动服务 + echo "🚀 启动服务..." + docker-compose -f docker-compose.cloud.yml up -d ppanel-server + + # 清理未使用的镜像 + docker image prune -f || true + + echo "✅ 部署命令执行完成" # 步骤6: TG通知 (成功) - name: 📱 发送成功通知到Telegram diff --git a/docker-compose.cloud.yml b/docker-compose.cloud.yml index d6f98b3..8b3dd3d 100644 --- a/docker-compose.cloud.yml +++ b/docker-compose.cloud.yml @@ -10,7 +10,7 @@ services: # 1. 业务后端 (PPanel Server) # ---------------------------------------------------- ppanel-server: - image: registry.kxsw.us/ario-server:latest + image: registry.kxsw.us/ario-server:${PPANEL_SERVER_TAG:-latest} container_name: ppanel-server restart: always ports: diff --git a/pkg/kutt/kutt.go b/pkg/kutt/kutt.go index 25b4433..390c457 100644 --- a/pkg/kutt/kutt.go +++ b/pkg/kutt/kutt.go @@ -7,6 +7,7 @@ import ( "fmt" "io" "net/http" + "strings" "time" ) @@ -153,5 +154,10 @@ func (c *Client) CreateInviteShortLink(ctx context.Context, baseURL, inviteCode, return "", err } + // 强制使用 HTTPS + if strings.HasPrefix(link.Link, "http://") { + link.Link = strings.Replace(link.Link, "http://", "https://", 1) + } + return link.Link, nil }