Files
Campus-25/server/DeployCampusServer-WipeDBs.bat
2026-10-14 06:59:51 +02:00

154 lines
5.4 KiB
Batchfile

@echo off
setlocal EnableDelayedExpansion
REM ============================================================
REM Campus 2025 server deploy -- WITH DB WIPE
REM -----------------------------------------------------------
REM Same upload+install flow as DeployCampusServer.bat, but the
REM live /opt/campus/Data/DBs/ folder on the VPS is BACKED UP
REM and then REMOVED before install.sh runs, so the DBs shipped
REM in the tarball (i.e. whatever's in your local
REM Server\2025-RecRoom-Server-E12354-main\Data\DBs\
REM ) end up as the new live DBs on the VPS.
REM
REM Backups live at /root/campus-dbs-backup-YYYYMMDD_HHMMSS/
REM on the VPS -- pull one down with pscp if you need to roll
REM back, or `rm -rf` them yourself once you're happy.
REM
REM Requires:
REM - campus-deploy.tar.gz next to this .bat (run PackageServer.ps1)
REM - password.txt next to this .bat with the VPS root password
REM - PuTTY tools (pscp + plink) on PATH
REM ============================================================
cd /d "%~dp0"
set HOST=50.114.179.17
set DOMAIN=gameauth.ddns.net
set USER=root
set PKG=campus-deploy.tar.gz
set PWFILE=password.txt
echo.
echo ===========================================
echo Campus 2025 - DEPLOY + WIPE DBs
echo target : %USER%@%HOST%
echo domain : https://%DOMAIN%
echo ===========================================
echo.
echo !!! DESTRUCTIVE - PLEASE READ !!!
echo.
echo This will REPLACE every LiteDB file under
echo /opt/campus/Data/DBs/
echo on the VPS with the copies inside your local
echo Server\2025-RecRoom-Server-E12354-main\Data\DBs\
echo.
echo Affected files (all LiteDB collections):
echo Players.db PlayersFriends.db
echo Rooms.db Chat.db Events.db
echo Heartbeats.db Leaderboard.db Images.db
echo Settings.db (and every *-log.db)
echo.
echo Existing live DBs are copied to
echo /root/campus-dbs-backup-YYYYMMDD_HHMMSS/
echo before deletion, so this is reversible if you
echo act fast, but any new writes AFTER the deploy
echo land in the new DBs and cannot be merged back.
echo.
set /p CONFIRM=" Type YES (all caps) to continue, anything else aborts: "
if not "%CONFIRM%"=="YES" (
echo.
echo aborted, nothing was sent.
goto :end
)
REM --- checks -------------------------------------------------
if not exist "%PWFILE%" (
echo [X] %PWFILE% not found next to this .bat.
goto :fail
)
if not exist "%PKG%" (
echo [X] %PKG% not found. Run PackageServer.ps1 first.
goto :fail
)
where pscp >nul 2>&1
if errorlevel 1 (
echo [X] PuTTY tools not found ^(pscp/plink^).
echo winget install PuTTY.PuTTY ^(then reopen this window^)
goto :fail
)
REM --- read the password (first line only, never echoed) ------
set PW=
for /f "usebackq delims=" %%p in ("%PWFILE%") do (
if not defined PW set "PW=%%p"
)
if not defined PW (
echo [X] %PWFILE% is empty.
goto :fail
)
echo.
echo [1/3] Uploading %PKG% ...
echo ^(~49 MB - pscp shows a live progress bar below^)
echo.
echo y | pscp -pw "!PW!" "%PKG%" %USER%@%HOST%:/root/
if errorlevel 1 (
echo [X] Upload failed - wrong password, or host unreachable.
goto :fail
)
echo upload complete.
echo.
echo [2/3] Backing up live DBs, wiping them, then installing ...
echo Backup path shows below as 'backed up existing DBs -^> ...'
echo Then install.sh runs normally; because the DB dir is empty
echo after the wipe, the tarball's DBs become the new live DBs.
echo.
REM One long plink line - CMD parses this whole quoted string as a single arg
REM to plink. Inside, we run the wipe+backup, then hand off to install.sh
REM exactly like the normal deploy path.
echo y | plink -ssh -pw "!PW!" %USER%@%HOST% "cd /root && rm -rf campus-deploy && mkdir campus-deploy && echo ' extracting archive ...' && tar -xzf %PKG% -C campus-deploy && TS=$(date +%%Y%%m%%d_%%H%%M%%S) && BACKUP=/root/campus-dbs-backup-$TS && if [ -d /opt/campus/Data/DBs ]; then mkdir -p $BACKUP && cp -a /opt/campus/Data/DBs/. $BACKUP/ 2>/dev/null || true; echo ' backed up existing DBs -> '$BACKUP; systemctl stop campus 2>/dev/null || true; sleep 2; rm -rf /opt/campus/Data/DBs; echo ' wiped /opt/campus/Data/DBs'; fi && cd campus-deploy && chmod +x install.sh && ./install.sh"
if errorlevel 1 (
echo [X] Install failed - see the output above.
echo Live DBs were backed up to /root/campus-dbs-backup-YYYYMMDD_HHMMSS/
echo on the VPS before the wipe, so you can restore them.
goto :fail
)
echo.
echo [3/3] Smoke test ...
timeout /t 3 /nobreak >nul
curl -sk --ssl-no-revoke -o nul -w " https://%DOMAIN%/ -> HTTP %%{http_code}%%\n" --max-time 10 https://%DOMAIN%/
echo.
echo ===========================================
echo DONE!
echo.
echo Live DBs on the VPS have been replaced with
echo the local copies in this repo.
echo.
echo Rollback (from a VPS shell):
echo systemctl stop campus
echo rm -rf /opt/campus/Data/DBs
echo cp -a /root/campus-dbs-backup-YYYYMMDD_HHMMSS /opt/campus/Data/DBs
echo systemctl start campus
echo.
echo Clean up old backups when done:
echo ls -1dt /root/campus-dbs-backup-*
echo rm -rf /root/campus-dbs-backup-YYYYMMDD_HHMMSS
echo.
echo Server IP: %HOST%
echo Domain: https://%DOMAIN%
echo ===========================================
echo.
goto :end
:fail
echo.
echo Deploy aborted.
echo.
:end
set PW=
pause