vrising + bepinex + arm
Why bother with ARM? Because you already have it — a Raspberry Pi 5, an Orange Pi 5, a free Ampere A1 from Oracle Cloud... and hey, just because.
Overview
Spinning up a vanilla V Rising dedicated server on an ARM device is pretty straightforward if you use emulators like:
- Box64
- FEX-Emu
But once you dive into modding the server with BepInEx plugins, things start to get messy. The big issue? Emulators tend to choke on certain parts of the BepInEx pipeline. More on that here: https://github.com/BepInEx/BepInEx/issues/336
How BepInEx works
- BepInEx uses UnityDoorstop to hook into the
VRisingServer.exeprocess at launch. - On first launch — or after a game update: 2.1. Cpp2IL converts IL2CPP binaries into C# code. 2.2. Il2CppInterop then uses that code to generate Interop .dlls that let plugins talk to the game.
- A .NET runtime starts up, loads the Interop
.dlls and all your plugin .dlls.
The ARM problem
Everything falls apart around steps 2.1–2.2:
- FEX-Emu consistently crashes while running
Cpp2IL. - Box64 hangs during .dll generation in the
Il2CppInteropphase.
The Fix: Patch Il2CppInterop
After some trial and error, a workaround was found:
Disabling multithreaded file writing in Il2CppInterop completely solves the issue under Box64.
Specifically, the patch removes the multithreaded file output, which tends to behave unpredictably with Box64.
Patch:
https://github.com/tsx-cloud/Il2CppInterop/commit/165621195eb8f9009dc3da9aaf2e124333148c04
Prebuilt Docker Image
If you don’t feel like wrestling with Wine, Box64, Doorstop, and rebuilding BepInEx by hand — here’s a ready-to-go container with full plugin support:
- Docker Hub: tsxcloud/vrising-ntsync
- GitHub: github.com/tsx-cloud/vrising-ntsync Ubuntu 25.04, Wine 10.9 (staging, NTSync, and WoW64)
How to Run It
- Create a file named
docker-compose.ymland copy the contents from Docker Hub. - Start the container with:
docker compose up - Drop your plugins into:
./vrising/server/BepInEx/plugins - By default, the
ENABLE_PLUGINSvariable is set tofalse. Flip it to: - ENABLE_PLUGINS=true
Extra Box64 Tweaks You can further tweak Box64 behavior using this config file:
./vrising/server/BepInEx/addition_stuff/box64.rc
This lets you fine-tune the emulator for your specific device or OS quirks.
Performance
Emulation is always a tradeoff — compatibility vs. speed
To see where that balance lands, a few tests were run on a Google Cloud VM with an Axion (Neoverse-V2) CPU: c4a-highmem-2 (2 vCPU, 16 GB RAM, 50 GB SSD, 3000 IOPS, 140 MB/s)
GeekBench 6 CPU Test
GeekBench was run in four different setups:
| Mode | Score | Relative to native |
|---|---|---|
| ARM native | 3470 | 100% |
| Box64 | 1313 | 38% |
| Box64 + Wine NTSync On | 1185 | 34% |
| Box64 + Wine NTSync Off | 1175 | 34% |
Takeaway: Lose about 60% performance from emulating x64. Running Windows apps via Wine adds another ~4% overhead.
V Rising Server Boot Time Test
To keep things fair, the comparison is made against an x64 CPU with similar raw single-thread performance — AMD EPYC Turin (Zen 5) CPU: c4d-highmem-2, 2 vCPU
Case 1: Booting with a 160 MB save file
| Platform | Boot time | Relative to native |
|---|---|---|
| Native (Zen 5) | 23 sec | 100% |
| FEX-Emu + Wine | 109 sec | 21% |
| Box64 + Wine | 111 sec | 21% |
Case 2: Same save + regenerate BepInEx Interop .dll
| Platform | Boot time | Relative to native |
|---|---|---|
| Native (Zen 5) NTSync On | 99 sec | 100% |
| Native (Zen 5) NTSync Off | 102 sec | 97% |
| Box64 + Wine NTSync On | 359 sec | 27% |
| Box64 + Wine NTSync Off | 367 sec | 27% |
| FEX-Emu + Wine | ❌ crash | — |
Bottom line: Emulation is tough — performance drops to about a third.
Links
Docker image for vrising + BepInEx + ARM, also includes a build for x64 architecture
https://hub.docker.com/r/tsxcloud/vrising-ntsync
Docker image with steamCmd, box64 + wine
https://hub.docker.com/r/tsxcloud/steamcmd-wine-ntsync
Geekbench-6.4.0-Linux/geekbench6 on AMD Turin
https://browser.geekbench.com/v6/cpu/12363745
Geekbench-6.4.0-LinuxARMPreview/geekbench6
https://browser.geekbench.com/v6/cpu/12375616
box64 Geekbench-6.4.0-Linux/geekbench_x86_64
https://browser.geekbench.com/v6/cpu/12375508
box64 wine geekbench_x86_64.exe (ntsync on)
https://browser.geekbench.com/v6/cpu/12374593
box64 wine geekbench_x86_64.exe (ntsync off)
https://browser.geekbench.com/v6/cpu/12375184
Posted Jun 11, 2025, 8:44 PM UTC