Hosting Guides

Headless V Rising Deployments via Docker Compose

8 min readDebian 12Docker ComposeUnity
Once your server is online, jump to the V Rising command and config reference.

Stunlock Studios ships V Rising as a Windows only dedicated server, so a Linux deployment requires a Wine compatibility layer. The community maintained trueosiris/vrising image bundles Wine and SteamCMD with a clean entrypoint, which lets us treat the V Rising server like any other Compose service. Once the container is running, all real tuning happens inside ServerHostSettings.json and ServerGameSettings.json: clan sizes, tickrate, blood drain multipliers, and PvP rule windows.

Prerequisites

  • Debian 12 with Docker Engine and the Compose plugin.
  • 8 GB RAM, 4 CPU cores, 15 GB SSD disk.
  • UDP 9876 and UDP 9877 open at the firewall.

Step 1: Project Layout

user@host
sudo mkdir -p /opt/vrising/{server,persistent}
sudo chown -R 1000:1000 /opt/vrising
cd /opt/vrising

Step 2: The Compose File

docker-compose.yml
services:
vrising:
image: trueosiris/vrising:latest
container_name: vrising
restart: unless-stopped
stop_grace_period: 60s
ports:
- "9876:9876/udp"
- "9877:9877/udp"
environment:
SERVERNAME: "Vardoran Nights"
WORLDNAME: "world1"
GAMEPORT: 9876
QUERYPORT: 9877
RCON_ENABLED: "true"
RCON_PASSWORD: "REPLACE_ME"
volumes:
- ./server:/mnt/vrising/server
- ./persistent:/mnt/vrising/persistentdata

Step 3: First Boot

user@host
docker compose up -d
docker compose logs -f vrising
# Wait for: "Setup complete" and then "Server started"

Step 4: Host Settings

After the first boot generates the default config, edit the host settings file. The defaults are sensible for a public PvE server; what follows tunes for a 30 player PvP league.

persistent/Settings/ServerHostSettings.json
{
"Name": "Vardoran Nights",
"Description": "Locked PvP league, full loot, weekly wipes",
"Port": 9876,
"QueryPort": 9877,
"MaxConnectedUsers": 30,
"MaxConnectedAdmins": 4,
"ServerFps": 30,
"SaveName": "world1",
"Password": "REPLACE_LONG_PASSWORD",
"ListOnSteam": true,
"ListOnEOS": true,
"AutoSaveCount": 40,
"AutoSaveInterval": 120,
"Rcon": {
"Enabled": true,
"Port": 25575,
"Password": "REPLACE_ME"
}
}

Step 5: Game Settings

persistent/Settings/ServerGameSettings.json
{
"GameModeType": "PvP",
"CastleDamageMode": "Always",
"SiegeWeaponHealth": "Normal",
"PlayerDamageMode": "Always",
"ClanSize": 4,
"BloodBoundEquipment": true,
"TeleportBoundItems": true,
"AnnounceSiegeWeaponSpawn": true,
"VBloodUnitSettings": [],
"InventoryStacksModifier": 2.0,
"DropTableModifier_General": 1.5,
"BloodDrainModifier": 0.75,
"DurabilityDrainModifier": 1.0
}

Performance and Tuning

  • Pin ServerFps to 30 for any deployment of 20 players or more. 60 is achievable only on the fastest single thread CPUs.
  • Lower BloodDrainModifier for casual PvE communities (0.5), raise toward 1.5 for hardcore PvP leagues.
  • Set AutoSaveCount: 40 so a corruption event has 40 historic snapshots to roll back to.

Conclusion

The Wine container makes V Rising on Linux a one file deployment. After that, all the differentiation is in the two JSON config files: lock them down, version them in a private git repo, and you have a reproducible, recoverable competitive server.