154 lines
5.4 KiB
Batchfile
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
|