diff --git a/.env.example b/.env.example index 882367d..e66160a 100644 --- a/.env.example +++ b/.env.example @@ -123,7 +123,7 @@ COOKIE_SECURE=true # Токен Gitea (право write:package) — нужен самому бэкенду в рантайме для # провижининга новых нод (см. NodeService::provision_node_via_ssh, шлёт этот # же токен на ноду, чтобы она тоже могла тянуть образ с Gitea Registry). -GITEA_REGISTRY_TOKEN=CHANGE_ME_GITEA_REGISTRY_TOKEN +GT_REGISTRY_TOKEN=CHANGE_ME_GT_REGISTRY_TOKEN VPS_IP=CHANGE_ME_VPS_IP DEPLOY_DIR=/root/netrunner-core BINARY_NAME=netrunner-control-plane diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index dbbe450..b2d9c2d 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -2,7 +2,7 @@ # реестр — встроенный Container Registry самой Gitea (gitea.netrunner-vpn.com), # не ghcr.io — секрет secrets.GITHUB_TOKEN там валиден только на самом # GitHub. Логин — токеном Gitea с правом write:package -# (secrets.GITEA_REGISTRY_TOKEN), один и тот же токен используется во всех +# (secrets.GT_REGISTRY_TOKEN), один и тот же токен используется во всех # репозиториях, где собираются образы (netrunner-backend/netrunner-landing/ # netrunner-proxy) — пакеты в Gitea принадлежат аккаунту, не конкретному # репозиторию, заводить по секрету на каждый репозиторий не нужно, но @@ -39,7 +39,7 @@ jobs: with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} - password: ${{ secrets.GITEA_REGISTRY_TOKEN }} + password: ${{ secrets.GT_REGISTRY_TOKEN }} - name: Extract metadata (tags, labels) id: meta @@ -85,7 +85,7 @@ jobs: with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} - password: ${{ secrets.GITEA_REGISTRY_TOKEN }} + password: ${{ secrets.GT_REGISTRY_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 0687c73..3a902d9 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,6 +1,6 @@ # Копия .github/workflows/deploy.yml для Gitea Actions. Образы тянутся из # встроенного Container Registry самой Gitea (gitea.netrunner-vpn.com), не -# ghcr.io — secrets.GITEA_REGISTRY_TOKEN, не GHCR_TOKEN/GITHUB_TOKEN. +# ghcr.io — secrets.GT_REGISTRY_TOKEN, не GHCR_TOKEN/GITHUB_TOKEN. # Триггер workflow_run (авто-деплой после успешной сборки) поддерживается не # во всех версиях Gitea Actions — если deploy-dev не срабатывает автоматически # после build, проверить версию Gitea или временно дергать деплой вручную @@ -57,7 +57,7 @@ jobs: host: ${{ vars.DEV_VPS_IP }} username: root key: ${{ secrets.DEV_SSH_PRIVATE_KEY }} - envs: "DB_PASSWORD,CF_API_TOKEN,JWT_SECRET,ARGON_SALT,TON_MASTER_WALLET,PROXY_INTERNAL_SECRET,CRYPTOBOT_API_TOKEN,TELOXIDE_TOKEN,BOT_USERNAME,GITEA_REGISTRY_TOKEN" + envs: "DB_PASSWORD,CF_API_TOKEN,JWT_SECRET,ARGON_SALT,TON_MASTER_WALLET,PROXY_INTERNAL_SECRET,CRYPTOBOT_API_TOKEN,TELOXIDE_TOKEN,BOT_USERNAME,GT_REGISTRY_TOKEN" script: | set -e cd /root/netrunner-core @@ -76,7 +76,7 @@ jobs: # Нужен самому бэкенду в рантайме, не только CI — см. # NodeService::provision_node_via_ssh (шлёт этот же токен на новую # ноду, чтобы она тоже могла тянуть образ с gitea.netrunner-vpn.com). - GITEA_REGISTRY_TOKEN=${GITEA_REGISTRY_TOKEN} + GT_REGISTRY_TOKEN=${GT_REGISTRY_TOKEN} CRYPTOBOT_API_TOKEN=${CRYPTOBOT_API_TOKEN} CRYPTOBOT_TESTNET=true BOT_ENABLED=true @@ -96,7 +96,7 @@ jobs: export CADDY_IMAGE="gitea.netrunner-vpn.com/nineap/netrunner-caddy-cloudflare:latest" echo "🚀 Deploying ${IMAGE} to DEV" - echo "${{ secrets.GITEA_REGISTRY_TOKEN }}" | docker login gitea.netrunner-vpn.com -u ${{ github.actor }} --password-stdin + echo "${{ secrets.GT_REGISTRY_TOKEN }}" | docker login gitea.netrunner-vpn.com -u ${{ github.actor }} --password-stdin docker compose -f docker-compose.dev-remote.yml pull docker compose -f docker-compose.dev-remote.yml up -d --remove-orphans @@ -114,7 +114,7 @@ jobs: CRYPTOBOT_API_TOKEN: ${{ secrets.DEV_CRYPTOBOT_API_TOKEN }} TELOXIDE_TOKEN: ${{ secrets.DEV_TELOXIDE_TOKEN }} BOT_USERNAME: ${{ vars.DEV_BOT_USERNAME }} - GITEA_REGISTRY_TOKEN: ${{ secrets.GITEA_REGISTRY_TOKEN }} + GT_REGISTRY_TOKEN: ${{ secrets.GT_REGISTRY_TOKEN }} deploy-prod: name: Pull & restart on Prod VPS @@ -139,7 +139,7 @@ jobs: host: ${{ vars.VPS_IP }} username: root key: ${{ secrets.SSH_PRIVATE_KEY }} - envs: "DB_PASSWORD,DATA_VPS_IP,JWT_SECRET,ARGON_SALT,TON_MASTER_WALLET,GRAFANA_PUBLIC_URL,PROXY_INTERNAL_SECRET,CRYPTOBOT_API_TOKEN,TELOXIDE_TOKEN,BOT_USERNAME,WEB_APP_BASE_URL,GITEA_REGISTRY_TOKEN" + envs: "DB_PASSWORD,DATA_VPS_IP,JWT_SECRET,ARGON_SALT,TON_MASTER_WALLET,GRAFANA_PUBLIC_URL,PROXY_INTERNAL_SECRET,CRYPTOBOT_API_TOKEN,TELOXIDE_TOKEN,BOT_USERNAME,WEB_APP_BASE_URL,GT_REGISTRY_TOKEN" script: | set -e cd /root/netrunner-core @@ -164,7 +164,7 @@ jobs: PROXY_INTERNAL_SECRET=${PROXY_INTERNAL_SECRET} # Нужен самому бэкенду в рантайме, не только CI — см. # NodeService::provision_node_via_ssh. - GITEA_REGISTRY_TOKEN=${GITEA_REGISTRY_TOKEN} + GT_REGISTRY_TOKEN=${GT_REGISTRY_TOKEN} PORT=8080 SUBSCRIPTION_CHECK_INTERVAL=1800 NODE_HEALTH_CHECK_INTERVAL=60 @@ -180,7 +180,7 @@ jobs: export IMAGE="gitea.netrunner-vpn.com/nineap/netrunner-control-plane:${{ github.event.inputs.image_tag }}" echo "🚀 Deploying ${IMAGE}" - echo "${{ secrets.GITEA_REGISTRY_TOKEN }}" | docker login gitea.netrunner-vpn.com -u ${{ github.actor }} --password-stdin + echo "${{ secrets.GT_REGISTRY_TOKEN }}" | docker login gitea.netrunner-vpn.com -u ${{ github.actor }} --password-stdin # Тянем свежий образ, прогоняем миграции (one-shot) и поднимаем сервисы. docker compose -f docker-compose.prod.yml pull @@ -202,4 +202,4 @@ jobs: TELOXIDE_TOKEN: ${{ secrets.TELOXIDE_TOKEN }} BOT_USERNAME: ${{ vars.BOT_USERNAME }} WEB_APP_BASE_URL: ${{ vars.WEB_APP_BASE_URL }} - GITEA_REGISTRY_TOKEN: ${{ secrets.GITEA_REGISTRY_TOKEN }} + GT_REGISTRY_TOKEN: ${{ secrets.GT_REGISTRY_TOKEN }} diff --git a/src/modules/nodes/service.rs b/src/modules/nodes/service.rs index 33bbe87..e7fe600 100644 --- a/src/modules/nodes/service.rs +++ b/src/modules/nodes/service.rs @@ -153,8 +153,8 @@ impl NodeService { let sess = Self::connect_ssh(ip, "root", password)?; // 3. Подготавливаем команды автоматизации - let gh_token = std::env::var("GITEA_REGISTRY_TOKEN").map_err(|_| { - AppError::Internal("GITEA_REGISTRY_TOKEN не задан — провижининг ноды невозможен".into()) + let gh_token = std::env::var("GT_REGISTRY_TOKEN").map_err(|_| { + AppError::Internal("GT_REGISTRY_TOKEN не задан — провижининг ноды невозможен".into()) })?; // Секрет и публичный URL этого же бэкенда — нода должна ходить именно // сюда для проверки токенов/лимитов (--require-auth), а не работать