tmp deploy

This commit is contained in:
qananasikq
2026-04-18 01:02:50 +03:00
parent a8c5f8aa41
commit 86a5f9ce17
12 changed files with 518 additions and 53 deletions

140
scripts/vps_bootstrap.ps1 Normal file
View File

@@ -0,0 +1,140 @@
# ============================================================
# IAAI scraper -- one-shot installer for Windows Server 2022 (4 vCPU / 4 GB)
#
# RUN AS ADMINISTRATOR in PowerShell:
# Set-ExecutionPolicy -Scope Process Bypass -Force
# iwr -useb https://gitea.millionmiles.ru/qananasikq/iaai-parser/raw/branch/main/scripts/vps_bootstrap.ps1 -OutFile $env:TEMP\b.ps1
# & $env:TEMP\b.ps1
#
# .env nado polozhit' v C:\iaai\.env DO zapuska (cherez RDP clipboard / notepad).
# ============================================================
$ErrorActionPreference = "Stop"
function Step($m) { Write-Host "`n=== $m ===" -ForegroundColor Cyan }
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
throw "Run as Administrator (Start menu -> PowerShell -> Run as Administrator)"
}
# --- .env presence -------------------------------------------
$envSrc = "C:\iaai\.env"
if (-not (Test-Path $envSrc)) {
Write-Host ""
Write-Host "ERROR: $envSrc not found." -ForegroundColor Red
Write-Host "Create it via RDP clipboard:" -ForegroundColor Yellow
Write-Host " mkdir C:\iaai" -ForegroundColor Yellow
Write-Host " notepad C:\iaai\.env # paste contents, save as UTF-8 (no BOM)" -ForegroundColor Yellow
Write-Host "Then re-run this script." -ForegroundColor Yellow
exit 2
}
# --- 1. WSL2 + Ubuntu 22.04 ----------------------------------
Step "WSL state"
$wslList = @()
try {
$raw = wsl --list --quiet 2>$null
if ($raw) {
$wslList = ($raw -split "`n") | ForEach-Object { ($_ -replace "`0","").Trim() } | Where-Object { $_ }
}
} catch {}
$ubuntu = $wslList | Where-Object { $_ -match "Ubuntu" } | Select-Object -First 1
if (-not $ubuntu) {
Step "Installing WSL2 + Ubuntu-22.04 (REBOOT REQUIRED)"
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart | Out-Null
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart | Out-Null
wsl --set-default-version 2 2>$null | Out-Null
wsl --install -d Ubuntu-22.04 --no-launch
Write-Host ""
Write-Host "REBOOT NOW. After reboot:" -ForegroundColor Yellow
Write-Host " 1) Launch 'Ubuntu 22.04' from Start, set username 'iaai' and a password" -ForegroundColor Yellow
Write-Host " 2) Re-run this script (it will continue from here)" -ForegroundColor Yellow
Read-Host "Press Enter to reboot now (or Ctrl+C to abort)"
Restart-Computer -Force
exit 0
}
Write-Host "Ubuntu distro: $ubuntu"
# --- 2. .wslconfig (limit memory for 4 GB host) --------------
$wslConfig = "$env:USERPROFILE\.wslconfig"
$wslConfigDesired = "[wsl2]`nmemory=2500MB`nprocessors=3`nswap=1500MB`nlocalhostForwarding=true`n"
$existing = if (Test-Path $wslConfig) { Get-Content $wslConfig -Raw } else { "" }
if ($existing -ne $wslConfigDesired) {
Step "Writing $wslConfig"
Set-Content -Path $wslConfig -Value $wslConfigDesired -Encoding ASCII -NoNewline
Step "Restarting WSL"
wsl --shutdown
Start-Sleep -Seconds 5
}
# --- 3. Bootstrap script inside WSL --------------------------
$bash = @'
set -e
export DEBIAN_FRONTEND=noninteractive
if ! sudo -n true 2>/dev/null; then
echo "[bootstrap] need passwordless sudo. run inside WSL once:"
echo " echo \"$USER ALL=(ALL) NOPASSWD:ALL\" | sudo tee /etc/sudoers.d/99-$USER"
exit 5
fi
if ! command -v docker >/dev/null 2>&1; then
echo "[bootstrap] installing docker..."
sudo apt-get update -y
sudo apt-get install -y ca-certificates curl gnupg git lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
if [ ! -f /etc/apt/keyrings/docker.gpg ]; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
fi
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker "$USER"
fi
if ! sudo service docker status >/dev/null 2>&1; then
sudo service docker start
sleep 3
fi
if [ ! -d /opt/iaai-parser/.git ]; then
sudo mkdir -p /opt/iaai-parser
sudo chown -R "$USER:$USER" /opt/iaai-parser
git clone https://gitea.millionmiles.ru/qananasikq/iaai-parser.git /opt/iaai-parser
else
cd /opt/iaai-parser && git fetch --all --prune && git reset --hard origin/main
fi
cd /opt/iaai-parser
git log -1 --oneline
# Copy .env from Windows
cp /mnt/c/iaai/.env .env
sed -i '1s/^\xEF\xBB\xBF//' .env || true
sed -i 's/\r$//' .env || true
chmod 600 .env
echo "[bootstrap] .env size: $(wc -c < .env) bytes"
echo "[bootstrap] docker compose build (5-10 min)..."
sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml build
echo "[bootstrap] docker compose up -d..."
sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml up -d
sleep 5
sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml ps
'@
$tmp = "$env:TEMP\wsl_bootstrap.sh"
[System.IO.File]::WriteAllText($tmp, ($bash -replace "`r`n","`n"), [System.Text.UTF8Encoding]::new($false))
Step "Running bootstrap inside WSL (5-15 min on first run)"
$wslPath = (wsl -d $ubuntu -- wslpath -u "$tmp").Trim()
wsl -d $ubuntu -- bash -c "cp '$wslPath' ~/bootstrap.sh && chmod +x ~/bootstrap.sh && ~/bootstrap.sh"
Step "DONE"
Write-Host ""
Write-Host "Useful commands:" -ForegroundColor Green
Write-Host " Status: wsl -d $ubuntu -- bash -c 'cd /opt/iaai-parser && sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml ps'"
Write-Host " Logs: wsl -d $ubuntu -- bash -c 'cd /opt/iaai-parser && sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml logs -f --tail=80 worker'"
Write-Host " Restart: wsl -d $ubuntu -- bash -c 'cd /opt/iaai-parser && sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml restart'"
Write-Host " Update: wsl -d $ubuntu -- bash -c 'cd /opt/iaai-parser && git pull && sudo docker compose -f docker-compose.yml -f docker-compose.vps.yml up -d --build'"