mirror of
https://github.com/mblanke/Dashboard.git
synced 2026-03-01 12:10:20 -05:00
Initial commit: ATLAS Dashboard (Next.js)
This commit is contained in:
174
deploy-auto.ps1
Normal file
174
deploy-auto.ps1
Normal file
@@ -0,0 +1,174 @@
|
||||
#!/usr/bin/env pwsh
|
||||
# Atlas Dashboard - Automated Deployment Script
|
||||
# This script packages and deploys the dashboard to Atlas server
|
||||
|
||||
param(
|
||||
[string]$Password = "powers4w",
|
||||
[string]$AtlasHost = "100.104.196.38",
|
||||
[string]$AtlasUser = "soadmin"
|
||||
)
|
||||
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " Atlas Dashboard - Automated Deploy" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# Step 1: Create tar archive
|
||||
Write-Host "Step 1: Creating archive..." -ForegroundColor Yellow
|
||||
$archivePath = "C:\Dashboard.tar.gz"
|
||||
|
||||
# Remove old archive if exists
|
||||
if (Test-Path $archivePath) {
|
||||
Remove-Item $archivePath -Force
|
||||
Write-Host " Removed old archive"
|
||||
}
|
||||
|
||||
# Create the archive (excluding unnecessary files)
|
||||
Write-Host " Compressing files..."
|
||||
tar -czf $archivePath `
|
||||
--exclude=.git `
|
||||
--exclude=node_modules `
|
||||
--exclude=.next `
|
||||
--exclude=.env.local `
|
||||
--exclude=dist `
|
||||
--exclude=out `
|
||||
-C "d:\Projects\Dev\Dashboard" .
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
$size = (Get-Item $archivePath).Length / 1MB
|
||||
Write-Host " ✅ Archive created: $([math]::Round($size, 2)) MB" -ForegroundColor Green
|
||||
}
|
||||
else {
|
||||
Write-Host " ❌ Failed to create archive" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Step 2: Transfer to server
|
||||
Write-Host "Step 2: Transferring to Atlas server..." -ForegroundColor Yellow
|
||||
|
||||
# Create secure string for password
|
||||
$secPassword = ConvertTo-SecureString $Password -AsPlainText -Force
|
||||
|
||||
# Use scp to transfer (requires SSH to be installed)
|
||||
Write-Host " Uploading dashboard.tar.gz..."
|
||||
$scpCommand = "scp -o StrictHostKeyChecking=no Dashboard.tar.gz ${AtlasUser}@${AtlasHost}:/opt/dashboard.tar.gz"
|
||||
|
||||
# For Windows, we need plink or similar. Let's use a different approach with SSH
|
||||
# Actually, let's try using scp directly via git bash or openssh
|
||||
|
||||
try {
|
||||
# First verify SSH works
|
||||
& ssh -o StrictHostKeyChecking=no -o BatchMode=yes ${AtlasUser}@${AtlasHost} "echo Connected" 2>$null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host " SSH connection test needed password, continuing..." -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
# Transfer file
|
||||
Write-Host " Transferring..."
|
||||
& scp -o StrictHostKeyChecking=no Dashboard.tar.gz "${AtlasUser}@${AtlasHost}:/opt/dashboard.tar.gz" 2>&1
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " ✅ Transfer successful" -ForegroundColor Green
|
||||
}
|
||||
else {
|
||||
Write-Host " ⚠️ Transfer may have failed, continuing anyway..." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Host " ⚠️ Error during transfer: $_" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Step 3: Extract and setup on server
|
||||
Write-Host "Step 3: Extracting and configuring on server..." -ForegroundColor Yellow
|
||||
|
||||
$remoteCommands = @"
|
||||
set -e
|
||||
echo "Extracting files..."
|
||||
cd /opt/dashboard
|
||||
tar -xzf ../dashboard.tar.gz
|
||||
|
||||
echo "Verifying files..."
|
||||
ls -la Dockerfile docker-compose.yml .env.example
|
||||
|
||||
echo "Creating .env.local..."
|
||||
if [ ! -f .env.local ]; then
|
||||
cp .env.example .env.local
|
||||
echo "Created .env.local - please edit with your credentials"
|
||||
fi
|
||||
|
||||
echo "Files ready in /opt/dashboard"
|
||||
ls -la | head -20
|
||||
"@
|
||||
|
||||
Write-Host " Running setup commands on server..."
|
||||
$remoteCommands | ssh -o StrictHostKeyChecking=no ${AtlasUser}@${AtlasHost}
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " ✅ Setup complete" -ForegroundColor Green
|
||||
}
|
||||
else {
|
||||
Write-Host " ⚠️ Setup had some issues, checking..." -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Step 4: Build and deploy
|
||||
Write-Host "Step 4: Building and deploying..." -ForegroundColor Yellow
|
||||
|
||||
$deployCommands = @"
|
||||
set -e
|
||||
cd /opt/dashboard
|
||||
|
||||
echo "Building Docker image (this may take 2-3 minutes)..."
|
||||
docker-compose build
|
||||
|
||||
echo "Starting container..."
|
||||
docker-compose up -d
|
||||
|
||||
echo "Waiting for container to start..."
|
||||
sleep 5
|
||||
|
||||
echo "Checking status..."
|
||||
docker-compose ps
|
||||
|
||||
echo "Viewing logs..."
|
||||
docker-compose logs --tail=20 dashboard
|
||||
"@
|
||||
|
||||
Write-Host " This will take 2-3 minutes..." -ForegroundColor Yellow
|
||||
$deployCommands | ssh -o StrictHostKeyChecking=no ${AtlasUser}@${AtlasHost}
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " ✅ Deployment started" -ForegroundColor Green
|
||||
}
|
||||
else {
|
||||
Write-Host " ⚠️ Deployment had issues - check logs on server" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Green
|
||||
Write-Host " ✅ Deployment Process Complete!" -ForegroundColor Green
|
||||
Write-Host "========================================" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "Next steps:" -ForegroundColor Cyan
|
||||
Write-Host "1. SSH to server: ssh ${AtlasUser}@${AtlasHost}" -ForegroundColor White
|
||||
Write-Host "2. Edit credentials: cd /opt/dashboard && nano .env.local" -ForegroundColor White
|
||||
Write-Host "3. Restart container: docker-compose restart dashboard" -ForegroundColor White
|
||||
Write-Host "4. Access dashboard: http://${AtlasHost}:3001" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host "📊 Dashboard URL: http://${AtlasHost}:3001" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# Cleanup
|
||||
Write-Host "Cleaning up local archive..." -ForegroundColor Yellow
|
||||
if (Test-Path $archivePath) {
|
||||
Remove-Item $archivePath -Force
|
||||
Write-Host "✅ Cleanup complete" -ForegroundColor Green
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Done! 🎉" -ForegroundColor Green
|
||||
Reference in New Issue
Block a user