# Deploy databaselist ke reverse proxy (10.100.1.24) # Usage: .\scripts\deploy-databaselist.ps1 # .\scripts\deploy-databaselist.ps1 -NoBuild param( [switch]$NoBuild ) $ErrorActionPreference = "Stop" $HostAddr = "10.100.1.24" $SshPort = 22 $SshMac = "hmac-sha1" $SshUser = "root" $RemoteStack = "/opt/stacks/databaselist" $ProjectRoot = Split-Path $PSScriptRoot -Parent $StackDir = Join-Path $ProjectRoot "databaselist" $Tarball = Join-Path $ProjectRoot "databaselist-deploy.tar.gz" if (-not (Test-Path $StackDir)) { throw "Folder tidak ditemukan: $StackDir" } Write-Host "==> Pack databaselist (tanpa .env)..." Push-Location $StackDir tar -czf $Tarball --exclude=".env" . Pop-Location Write-Host "==> Upload ke $HostAddr..." scp -o BatchMode=yes -o MACs=$SshMac -P $SshPort $Tarball "${SshUser}@${HostAddr}:/tmp/databaselist-deploy.tar.gz" Write-Host "==> Extract + fix CRLF + ensure PostgreSQL app DB env..." $ExtractCmd = "cd $RemoteStack && cp .env /tmp/databaselist.env.bak && if [ -s database/database.sqlite ]; then cp database/database.sqlite /tmp/databaselist.sqlite.bak.`$(date +%s); fi && tar -xzf /tmp/databaselist-deploy.tar.gz && find docker -name '*.sh' -exec sed -i 's/\r$//' {} + && chmod +x docker/postgres-init/*.sh 2>/dev/null || true && if ! grep -q '^AUDIT_DB_DATABASE=' .env; then echo AUDIT_DB_HOST=audit-postgres >> .env; echo AUDIT_DB_PORT=5432 >> .env; echo AUDIT_DB_DATABASE=databaselist_audit >> .env; echo AUDIT_DB_USERNAME=audit >> .env; echo AUDIT_DB_PASSWORD=audit_secret_change_me >> .env; fi && if ! grep -q '^APP_DB_DATABASE=' .env; then sed -i 's/^DB_CONNECTION=sqlite/DB_CONNECTION=pgsql/' .env; PW=`$(grep '^AUDIT_DB_PASSWORD=' .env | cut -d= -f2-); echo APP_DB_HOST=audit-postgres >> .env; echo APP_DB_PORT=5432 >> .env; echo APP_DB_DATABASE=databaselist_app >> .env; echo APP_DB_USERNAME=audit >> .env; echo APP_DB_PASSWORD=`$PW >> .env; fi" ssh -o BatchMode=yes -m $SshMac "${SshUser}@${HostAddr}" -p $SshPort $ExtractCmd if ($NoBuild) { Write-Host "==> Restart container (tanpa rebuild)..." ssh -o BatchMode=yes -m $SshMac "${SshUser}@${HostAddr}" -p $SshPort "cd $RemoteStack && docker compose up -d" } else { Write-Host "==> Docker compose build + up..." ssh -o BatchMode=yes -m $SshMac "${SshUser}@${HostAddr}" -p $SshPort "cd $RemoteStack && docker compose up -d --build" } Write-Host "==> Health check..." Start-Sleep -Seconds 8 ssh -o BatchMode=yes -m $SshMac "${SshUser}@${HostAddr}" -p $SshPort "docker ps --filter name=databaselist --format 'table {{.Names}}\t{{.Status}}' && curl -sf -o /dev/null -w 'localhost /up: %{http_code}\n' http://127.0.0.1:8091/up && docker exec databaselist grep -q 'API Docs' /var/www/html/resources/views/partials/nav.blade.php && echo 'nav: API Docs OK' && docker exec databaselist php artisan route:list 2>&1 | grep -E 'api-docs|api-clients|ldap-users' | head -12" Write-Host "" Write-Host "Deploy selesai." Write-Host " https://databaselist.gisportal.id/" Write-Host " https://databaselist.gisportal.id/ldap-users" Write-Host " https://databaselist.gisportal.id/ldap-groups" Write-Host " https://databaselist.gisportal.id/api-docs"