Добавление ssh-ключа к контейнеру tunnel

This commit is contained in:
2026-06-17 04:45:33 +03:00
parent 7e8b748caf
commit 65bebf8b85
4 changed files with 29 additions and 0 deletions
+4
View File
@@ -37,6 +37,10 @@ backend/openapi.json
# Бэкапы (создаёт scripts/backup.sh на Pi) # Бэкапы (создаёт scripts/backup.sh на Pi)
backups/ backups/
# AI-ассистенты (локальные, в репозиторий не идут)
CLAUDE.md
.claude/
# Редактор / ОС # Редактор / ОС
.DS_Store .DS_Store
Thumbs.db Thumbs.db
+8
View File
@@ -9,6 +9,14 @@ VPS_TUNNEL_USER="${VPS_TUNNEL_USER:-tunnel}"
: "${VPS_TUNNEL_PORT:?VPS_TUNNEL_PORT is required}" : "${VPS_TUNNEL_PORT:?VPS_TUNNEL_PORT is required}"
UPSTREAM="${UPSTREAM:-app:8000}" UPSTREAM="${UPSTREAM:-app:8000}"
# Ключ должен быть смонтирован файлом. Если тут пусто/папка — Docker создал каталог,
# потому что файла deploy/tunnel/id_tunnel на хосте нет.
if [ ! -f /key/id_tunnel ]; then
echo "[tunnel] ERROR: /key/id_tunnel is not a regular file."
echo "[tunnel] Put your private key at deploy/tunnel/id_tunnel on the host (its pubkey must be in authorized_keys of tunnel@VPS)."
exit 1
fi
# Копируем ключ и выставляем строгие права (с хоста права могут не годиться, особенно с Windows). # Копируем ключ и выставляем строгие права (с хоста права могут не годиться, особенно с Windows).
mkdir -p /root/.ssh mkdir -p /root/.ssh
cp /key/id_tunnel /root/.ssh/id_tunnel cp /key/id_tunnel /root/.ssh/id_tunnel
+16
View File
@@ -101,6 +101,22 @@ switch ($appEnv) {
} }
"test" { "test" {
$compose = Join-Path $root "docker-compose.test.yml" $compose = Join-Path $root "docker-compose.test.yml"
docker info --format '{{.ServerVersion}}' *> $null
if ($LASTEXITCODE -ne 0) {
Write-Host "Docker daemon is not reachable. Start Docker Desktop, wait until it is running, then re-run .\run.ps1" -ForegroundColor Red
exit 1
}
$keyFile = Join-Path $root "deploy\tunnel\id_tunnel"
if (-not (Test-Path $keyFile -PathType Leaf)) {
if (Test-Path $keyFile -PathType Container) {
Write-Host "deploy\tunnel\id_tunnel is a DIRECTORY - Docker auto-created it because the key file was missing." -ForegroundColor Red
Write-Host "Remove it first: Remove-Item -Recurse -Force deploy\tunnel\id_tunnel" -ForegroundColor Yellow
} else {
Write-Host "No SSH key at deploy\tunnel\id_tunnel (the tunnel container needs it)." -ForegroundColor Red
}
Write-Host "Add your VPS-authorized key: Copy-Item `$env:USERPROFILE\.ssh\id_ed25519 deploy\tunnel\id_tunnel" -ForegroundColor Yellow
exit 1
}
Write-Host "Building and starting prod-clone in Docker (app + in-container tunnel)..." -ForegroundColor Green Write-Host "Building and starting prod-clone in Docker (app + in-container tunnel)..." -ForegroundColor Green
docker compose -f $compose up --build -d docker compose -f $compose up --build -d
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
+1
View File
@@ -60,6 +60,7 @@ case "$app_env" in
( cd "$root/frontend" && npm run dev ) ( cd "$root/frontend" && npm run dev )
;; ;;
test) test)
docker info >/dev/null 2>&1 || { echo "Docker-демон недоступен — запусти Docker и повтори ./run.sh"; exit 1; }
echo "Сборка и запуск прод-клона в Docker (app + туннель в контейнере)…" echo "Сборка и запуск прод-клона в Docker (app + туннель в контейнере)…"
docker compose -f "$root/docker-compose.test.yml" up --build -d docker compose -f "$root/docker-compose.test.yml" up --build -d
echo " Публично: https://forbidden-stars.ru (Swagger: /api/docs)" echo " Публично: https://forbidden-stars.ru (Swagger: /api/docs)"