Spawner is a Minecraft server instance manager with:
Spawner/: ASP.NET Core backend API + websocket serverFrontend/spawner/: React + Vite admin UISpawner.Tests/: backend unit testsdocs/: deployment and integration notes
- Backend/test targets aligned to
.NET 10 - Production CORS behavior defaults to same-origin unless
Cors:AllowedOriginsis configured - Frontend route-level lazy loading to reduce initial bundle load
- CI workflow for backend tests + frontend production build
- Ubuntu Server LTS deployment guide (systemd + nginx)
dotnet run --project SpawnerNotes:
- Development CORS is permissive for local UI work.
- The frontend Vite config proxies
/apiand/wstohttp://localhost:5000in dev.
cd Frontend/spawner
npm ci
npm run devOptional frontend env variables (Frontend/spawner/.env):
VITE_API_ORIGIN=http://localhost:5000VITE_WS_ORIGIN=ws://localhost:5000
dotnet publish Spawner/Spawner.csproj -c Release -o .tmp-build/backendcd Frontend/spawner
npm ci
npm run buildOutput:
- Backend publish output in
.tmp-build/backend - Frontend static files in
Frontend/spawner/dist
If GitHub Releases are enabled with .github/workflows/release-per-commit.yml, each commit can publish prebuilt artifacts:
spawner-backend-linux-x64-<commit>.tar.gzspawner-frontend-dist-<commit>.tar.gzspawner-full-linux-x64-<commit>.tar.gz(recommended)
For Ubuntu Server setup using the prebuilt release packages, see docs/ubuntu-server-lts.md.
See docs/ubuntu-server-lts.md.
Backend settings are loaded from Spawner/appsettings*.json and environment variables.
Important production settings:
ASPNETCORE_ENVIRONMENT=ProductionASPNETCORE_URLS=http://127.0.0.1:5000Cors__AllowedOrigins__0=https://your-domain.example(if frontend is hosted on a different origin)Settings__DefaultJavaArgs=-Xms4G -Xmx8G
Runtime requirement:
- Install the
.NET 10ASP.NET Core runtime on the host running the backend.
GitHub Actions workflow: .github/workflows/ci.yml
This repo also includes .github/workflows/release-per-commit.yml, which can create a prebuilt GitHub Release for each pushed commit:
- backend publish (
linux-x64, framework-dependent, .NET 10) - frontend static build (
dist/) - combined package (
backend+www)
Important:
Frontend/spawnermust be tracked as a normal folder (not a gitlink/submodule pointer), or the release workflow will fail early with a clear error.- GitHub Actions must be enabled for the repository, and the workflow file must be committed to the default branch.