Skip to content

Windows Node Management

BadgerPanel supports running game servers on Windows machines. Windows nodes use a native daemon that manages game server processes through Windows Job Objects instead of Docker containers. This is particularly useful for games that require a Windows environment or have poor Linux support.

Requirements

  • Operating System: Windows Server 2016 or later, or Windows 10 version 1607 or later.
  • Privileges: Administrator access is required for service installation.
  • Network: The node must be able to reach the panel over HTTPS. Ports 8443 (daemon API) and 2022 (SFTP) must be accessible from the panel.
  • SteamCMD: Automatically downloaded by the daemon on first use. No manual installation needed.

Installation

  1. Navigate to Admin > Nodes > Add Node.
  2. Select Windows as the operating system.
  3. Fill in the node name, FQDN or public IP, and ports.
  4. Click Create. The panel generates a PowerShell install command.
  5. On your Windows server, open an elevated PowerShell prompt and paste the command:
powershell
Invoke-Expression (Invoke-WebRequest -Uri "https://panel.example.com/api/nodes/install/TOKEN" -UseBasicParsing).Content

The script performs the following steps:

  • Creates the C:\BadgerDaemon directory structure.
  • Downloads the Windows daemon binary.
  • Writes the configuration file.
  • Adds Windows Firewall rules for ports 8443 and 2022.
  • Registers BadgerDaemon as a Windows Service with automatic restart on failure.
  • Starts the service.

Manual Installation

Download the binary, create C:\BadgerDaemon\config.yaml, and register the service with sc.exe. See the daemon README for detailed manual steps.

Differences from Linux Nodes

AspectLinux (Daemon)Windows (Daemon)
Process isolationDocker containers with cgroup limitsWindows Job Objects with memory and CPU rate limits
Install mechanismEgg install script runs inside a Docker containerEgg Windows install script runs as a native PowerShell process
Game installationDocker image pulls or install scriptSteamCMD integration for Steam-based games, or direct download
File paths/var/lib/badger-daemon/servers/<uuid>C:\BadgerDaemon\servers\<uuid>
Service managersystemdWindows Service Control Manager (SCM)
SFTPEmbedded SFTP server (port 2022)Embedded SFTP server (port 2022)

Job Objects

Windows Job Objects provide resource isolation without the overhead of containerization. The daemon creates a Job Object for each game server process and applies:

  • Memory limit: Hard memory cap via JOB_OBJECT_LIMIT_PROCESS_MEMORY.
  • CPU rate: CPU usage cap via Job Object CPU rate control.
  • Process tree tracking: All child processes spawned by the game server are automatically included in the Job Object and subject to its limits.

SteamCMD Integration

For games distributed via Steam, the daemon uses SteamCMD to download and update game server files. The egg's windows_steam_app_id field specifies the Steam application ID. SteamCMD is downloaded automatically to C:\BadgerDaemon\steamcmd\ on first use.

Supported Games

Windows nodes support any game that can run as a native Windows process. Common examples include ARK: Survival Evolved, Rust, Counter-Strike 2, Team Fortress 2, and other Source/GoldSrc engine games. The egg must have Windows support configured (the supported_os field must include "windows" and the windows_startup field must be set).

Configuration

The daemon configuration file is located at C:\BadgerDaemon\config.yaml. Key settings include:

  • panel.url -- The URL of your BadgerPanel instance.
  • panel.api_key -- Set automatically during registration.
  • daemon.port -- API listen port (default: 8443).
  • sftp.port -- SFTP listen port (default: 2022).
  • servers_path -- Directory for game server files (default: C:\BadgerDaemon\servers).
  • steamcmd_path -- Path to SteamCMD installation (default: C:\BadgerDaemon\steamcmd).

After editing the configuration file, restart the service:

powershell
Restart-Service BadgerDaemon

Auto-Updates

The Windows daemon supports automatic updates, following the same mechanism as the Linux daemon. When the panel distributes a new version, the daemon downloads the updated binary, replaces itself, and restarts the Windows service.

BadgerPanel Documentation