Ambient background, 3D neon cards, brass HUD styling, glowing charts, gauge rings, and refreshed Command Deck, Fleet Roster, Forge, and Calibrate pages.
232 lines
9.0 KiB
Batchfile
232 lines
9.0 KiB
Batchfile
@echo off
|
|
title Crypto Miner Control Server
|
|
cd /d "%~dp0"
|
|
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════╗
|
|
echo ║ Crypto Miner Control Server Builder ║
|
|
echo ╚══════════════════════════════════════════════════╝
|
|
echo.
|
|
|
|
:: ============================================================
|
|
:: STEP 1: Auto-install Go if missing
|
|
:: ============================================================
|
|
echo [1/5] Checking dependencies...
|
|
|
|
where go >nul 2>nul
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo Go not found. Checking for existing installation...
|
|
|
|
:: Check common install paths
|
|
if exist "C:\Program Files\Go\bin\go.exe" (
|
|
echo Found Go at C:\Program Files\Go\bin
|
|
set "PATH=C:\Program Files\Go\bin;%PATH%"
|
|
) else (
|
|
echo Downloading and installing Go...
|
|
|
|
:: Detect architecture
|
|
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
|
|
set GO_ARCH=amd64
|
|
) else (
|
|
set GO_ARCH=386
|
|
)
|
|
|
|
set GO_VERSION=1.22.2
|
|
set GO_URL=https://go.dev/dl/go%GO_VERSION%.windows-%GO_ARCH%.msi
|
|
set GO_MSI=%TEMP%\go-installer.msi
|
|
|
|
echo Downloading Go %GO_VERSION% for Windows %GO_ARCH%...
|
|
echo (This may take a moment...)
|
|
|
|
:: Download using PowerShell (built into Windows)
|
|
powershell -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%GO_URL%' -OutFile '%GO_MSI%' }"
|
|
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo ERROR: Failed to download Go installer.
|
|
echo Please manually download from: https://go.dev/dl/
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo Installing Go (this may require administrator privileges)...
|
|
msiexec /i "%GO_MSI%" /quiet /norestart
|
|
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo ERROR: Failed to install Go. Try running as Administrator.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
:: Clean up installer
|
|
del "%GO_MSI%" 2>nul
|
|
|
|
:: Add Go to PATH for this session
|
|
set "PATH=C:\Program Files\Go\bin;%PATH%"
|
|
set "PATH=%USERPROFILE%\go\bin;%PATH%"
|
|
|
|
echo Go installed successfully!
|
|
)
|
|
) else (
|
|
echo Go found:
|
|
call go version
|
|
)
|
|
|
|
:: ============================================================
|
|
:: STEP 2: Auto-install Node.js if missing (for frontend)
|
|
:: ============================================================
|
|
where node >nul 2>nul
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo Node.js not found. Checking for existing installation...
|
|
|
|
if exist "C:\Program Files\nodejs\node.exe" (
|
|
echo Found Node.js at C:\Program Files\nodejs
|
|
set "PATH=C:\Program Files\nodejs;%PATH%"
|
|
) else (
|
|
echo Downloading and installing Node.js...
|
|
|
|
set NODE_VERSION=20.12.2
|
|
set NODE_URL=https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-x64.msi
|
|
set NODE_MSI=%TEMP%\node-installer.msi
|
|
|
|
echo Downloading Node.js v%NODE_VERSION%...
|
|
echo (This may take a moment...)
|
|
|
|
powershell -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%NODE_URL%' -OutFile '%NODE_MSI%' }"
|
|
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo WARNING: Failed to download Node.js. Frontend will not be built.
|
|
echo You can manually download from: https://nodejs.org/
|
|
set SKIP_FRONTEND=1
|
|
) else (
|
|
echo Installing Node.js (this may require administrator privileges)...
|
|
msiexec /i "%NODE_MSI%" /quiet /norestart
|
|
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo WARNING: Failed to install Node.js. Frontend will not be built.
|
|
set SKIP_FRONTEND=1
|
|
) else (
|
|
:: Add Node to PATH for this session
|
|
set "PATH=C:\Program Files\nodejs;%PATH%"
|
|
|
|
del "%NODE_MSI%" 2>nul
|
|
echo Node.js installed successfully!
|
|
)
|
|
)
|
|
)
|
|
) else (
|
|
echo Node.js found:
|
|
call node --version
|
|
)
|
|
|
|
:: ============================================================
|
|
:: STEP 3: Create data directories
|
|
:: ============================================================
|
|
echo [2/5] Creating data directories...
|
|
if not exist "data\builds" mkdir "data\builds"
|
|
if not exist "data\logs" mkdir "data\logs"
|
|
if not exist "data\blueprints" mkdir "data\blueprints"
|
|
echo Created: data\builds, data\logs, data\blueprints
|
|
|
|
:: ============================================================
|
|
:: STEP 4: Build frontend
|
|
:: ============================================================
|
|
if "%SKIP_FRONTEND%"=="" (
|
|
echo [3/5] Building frontend dashboard...
|
|
echo Running: npm install ^&^& npm run build in server\web\
|
|
cd server\web
|
|
if not exist "node_modules" (
|
|
echo Installing npm dependencies...
|
|
call npm install
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo ERROR: npm install failed
|
|
cd ..\..
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo npm install completed successfully.
|
|
)
|
|
echo Building frontend with Vite...
|
|
call npm run build
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo WARNING: Frontend build failed, server will run without dashboard.
|
|
) else (
|
|
echo Frontend built successfully: server\web\dist
|
|
)
|
|
cd ..\..
|
|
) else (
|
|
echo [3/5] Skipping frontend build (Node.js not available)
|
|
)
|
|
|
|
:: ============================================================
|
|
:: STEP 5: Build server
|
|
:: ============================================================
|
|
echo [4/5] Building server...
|
|
echo Running: go build in server\...
|
|
|
|
cd server
|
|
|
|
:: Download Go module dependencies
|
|
echo Downloading Go dependencies...
|
|
go mod download
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo WARNING: go mod download failed, trying build anyway...
|
|
)
|
|
|
|
echo Compiling server binary...
|
|
go build -ldflags="-s -w" -o "..\bin\miner-server.exe" .
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo ERROR: Build failed
|
|
pause
|
|
exit /b 1
|
|
)
|
|
cd ..
|
|
echo Server built successfully: bin\miner-server.exe
|
|
|
|
:: ============================================================
|
|
:: LAUNCH
|
|
:: ============================================================
|
|
echo [5/5] Starting server on port 8989...
|
|
echo.
|
|
|
|
:: Detect LAN IP for display
|
|
for /f "usebackq delims=" %%I in (`powershell -NoProfile -Command "(Get-NetIPAddress -AddressFamily IPv4 ^| Where-Object { $_.IPAddress -notlike '127.*' -and $_.PrefixOrigin -ne 'WellKnown' } ^| Select-Object -First 1 -ExpandProperty IPAddress)"`) do set LAN_IP=%%I
|
|
if not defined LAN_IP set LAN_IP=localhost
|
|
|
|
echo.
|
|
echo ╔══════════════════════════════════════════════════════════════╗
|
|
echo ║ SERVER IS NOW LIVE ║
|
|
echo ║ ║
|
|
echo ║ Dashboard URL: http://0.0.0.0:8989 ║
|
|
echo ║ LAN Access: http://%LAN_IP%:8989 ║
|
|
echo ║ Local: http://localhost:8989 ║
|
|
echo ║ ║
|
|
echo ║ WebSocket (agents): ws://%LAN_IP%:8989/ws/agent ║
|
|
echo ║ WebSocket (dash): ws://%LAN_IP%:8989/ws/dashboard ║
|
|
echo ║ ║
|
|
echo ║ Quick Start: ║
|
|
echo ║ 1. Open Dashboard in your browser ║
|
|
echo ║ 2. Go to Settings - configure pool ^& wallet ║
|
|
echo ║ 3. Go to Builder - build your miner installer .exe ║
|
|
echo ║ 4. Run that .exe on each Windows machine ║
|
|
echo ║ ║
|
|
echo ║ Data Directory: %CD%\data\ ║
|
|
echo ║ Config File: %CD%\data\config.json ║
|
|
echo ║ Blueprints: %CD%\data\blueprints\ ║
|
|
echo ║ ║
|
|
echo ║ Press Ctrl+C in this window to stop the server ║
|
|
echo ╚══════════════════════════════════════════════════════════════╝
|
|
echo.
|
|
|
|
:: Open browser
|
|
start http://localhost:8989
|
|
|
|
:: Run server (this blocks until Ctrl+C)
|
|
echo [Server] Starting miner-server.exe on 0.0.0.0:8989...
|
|
echo [Server] Log output below (Ctrl+C to stop):
|
|
echo.
|
|
.\bin\miner-server.exe -port 8989 -data ".\data"
|
|
|
|
echo.
|
|
echo [Server] Server stopped.
|
|
pause
|