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

129 lines
4.0 KiB
Batchfile

@echo off
setlocal EnableDelayedExpansion
REM ============================================================
REM Deploy the Campus 2025 (Campus) server to the VPS
REM Reads the root password from password.txt (same folder).
REM Uploads campus-deploy.tar.gz, extracts it, runs install.sh
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 - server deploy
echo target: %USER%@%HOST%
echo domain: https://%DOMAIN%
echo ===========================================
echo.
REM --- checks -------------------------------------------------
if not exist "%PWFILE%" (
echo [X] %PWFILE% not found.
echo Create it next to this .bat and put ONLY the root
echo password on the first line.
goto :fail
)
if not exist "%PKG%" (
echo [X] %PKG% not found in this folder.
goto :fail
)
where pscp >nul 2>&1
if errorlevel 1 (
echo [X] PuTTY tools not found ^(pscp/plink^).
echo Install them first, then re-run this:
echo.
echo winget install PuTTY.PuTTY
echo.
echo Then close and reopen this window ^(PATH refresh^).
goto :fail
)
REM --- read the password (first line only), never echo it ------
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 [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] Extracting + installing on the VPS ...
echo Steps 2 and 3 on the server take ^~1 minute total.
echo The apt step is silent for ^~30-60s - a spinner will show
echo it's alive. Do NOT close this window.
echo.
REM 2025 server binary is CampusServer (not Campus2025). install.sh
REM chmods it itself, so we don't need to touch the binary here. Our tar packs
REM contents flat (tar -czf ... -C $out .), so extract INTO a fresh campus-deploy/
REM rather than expecting the tar to contain a campus-deploy/ prefix.
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 && cd campus-deploy && chmod +x install.sh && ./install.sh"
if errorlevel 1 (
echo [X] Install failed - see the output above.
goto :fail
)
echo.
echo [3/3] Checking the server is answering ...
REM 2025 server: no direct :2059 endpoint any more (Kestrel listens on :8080 only,
REM Caddy terminates TLS + proxies from :443). Smoke test via the public domain.
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.
REM 2025 server currently has no /buildinfo endpoint - skip the build-stamp check.
REM The install.sh already prints a local GET / smoke test result, and above we
REM checked the public URL, so any failure is visible there.
echo.
echo ===========================================
echo DONE!
echo.
echo Game server : https://%DOMAIN%
echo.
echo Admin panel is NOT public (on purpose).
echo Reach it with a tunnel, in another window:
echo ssh -L 8080:localhost:8080 %USER%@%HOST%
echo then open http://localhost:8080/admin
echo.
echo Useful VPS commands:
echo systemctl status campus
echo journalctl -u campus -f (live log)
echo systemctl restart campus
echo.
echo Server IP: %HOST%
echo Domain: https://%DOMAIN%
echo ===========================================
echo.
echo TIP: delete %PWFILE% when you're done - it's
echo your root password sitting in plain text.
echo.
goto :end
:fail
echo.
echo Deploy aborted.
echo.
:end
set PW=
pause