Mod Valheim Server

Running Valheim Mods on OCI ARM Using Wine

In my original guide, I showed how to build a Valheim dedicated server on Oracle Cloud Infrastructure (OCI) Always Free using the ARM-based Ampere A1 shape.

That setup works perfectly for a vanilla Valheim server, but when I started experimenting with mods I discovered an important limitation:

Many Valheim mods were built with the expectation that they would run on a traditional x86 Windows or Linux environment.

Because OCI Always Free uses ARM processors, we need an additional compatibility layer.

This is where Wine comes in. If you don’t want the explanation and just the different steps skip to the bottom.

Why Mods Are More Complicated on ARM

The standard Valheim dedicated server was originally designed for x86 processors.

Most Valheim modding tools, including:

  • BepInEx
  • Server-side administration mods
  • Map sharing tools
  • Gameplay modifications

were developed and tested on x86 systems.

An OCI Always Free VM uses Ampere ARM CPUs instead.

This means some modding setups that work perfectly on a home PC may fail completely on an ARM server.

The Vanilla Setup

The server from my original guide uses:

Docker
– Box64
– SteamCMD
– Valheim Dedicated Server

This works because Box64 translates x86 instructions into ARM instructions.

For many users this is enough.

If all you want is a dedicated server with no mods, stop there.

The Mod-Friendly Setup

For maximum compatibility, some community containers introduce Wine into the stack:

Docker
– Box64
– Wine
– SteamCMD
– Valheim Dedicated Server
– BepInEx Mods

Wine was originally created to run Windows applications on Linux.

In this case it is being used to improve compatibility with software that expects a more traditional x86 environment.

The result is:

  • Better mod support
  • Easier BepInEx integration
  • More community mods working correctly
  • Fewer ARM-specific issues

What Actually Changes?

The OCI infrastructure remains exactly the same.

You still use:

  • Ubuntu 22.04 Minimal ARM
  • VM.Standard.A1.Flex
  • OCI Always Free
  • Docker
  • The same networking configuration
  • The same security lists
  • The same Valheim ports

The only change is the Docker image.

Instead of using a container focused purely on running Valheim through Box64, you use a container that also includes Wine.

Everything else remains largely unchanged.

Does Wine Increase Cost?

No.

Wine runs entirely inside the existing VM.

You are not adding:

  • Extra compute instances
  • Load balancers
  • Additional public IPs
  • Block volumes
  • Paid OCI services

The server remains within OCI Always Free limits.

Performance Considerations

Wine introduces another compatibility layer.

In theory this can add overhead.

In practice, on a small Valheim server the difference is usually negligible compared to the benefit of improved mod compatibility.

If your goal is:

  • Vanilla gameplay
  • Maximum simplicity

then the original Box64-only approach is preferable.

If your goal is:

  • BepInEx
  • Server administration mods
  • Gameplay enhancements
  • Experimenting with the Valheim mod ecosystem

then a Wine-enabled container is often the easier route.

My Recommendation

For a first OCI Valheim server:

Use the Box64-only setup from the main guide.

Get the server working first.

Once you have a stable server, create a backup and then experiment with a Wine-enabled container for mod support.

This approach keeps troubleshooting simple and gives you a known-good recovery point if something goes wrong.

Before You Switch

Always back up:

  • World files (.db)
  • World definitions (.fwl)
  • Docker compose files
  • Configuration files

The different Steps

On step 5 in the original post instead of entering

image: ghcr.io/gornius/valheim_box64:latest

Use this instead:

image: tsxcloud/valheim-arm:latest

Also add:

environment:
  - ENABLE_PLUGINS=true

So you compose file should now look something like this:

services:
  valheim_box64:
    image: tsxcloud/valheim-arm:latest
    container_name: valheim-server
    restart: unless-stopped
    ports:
      - "2456:2456/udp"
      - "2457:2457/udp"
      - "2458:2458/tcp"
    environment:
      - VALHEIM_SERVER_NAME=My Valheim Server
      - VALHEIM_WORLD_NAME=Dedicated
      - VALHEIM_PASSWORD=ChangeMe123
      - VALHEIM_ISPUBLIC=1
      - ENABLE_PLUGINS=true
    volumes:
      - "./server_files/:/root/server_files"
      - "./server_data/:/root/.config/unity3d/IronGate/Valheim/"

With this you get a location inwhich to drop your mod files into:

./valheim/server/BepInEx/plugins

For example you can drop the dll files here and your mods should work:

ModName.dll

After adding a mod make sure you restart container:

docker restart valheim-server

Thanks again to Gornius for creating and maintaining the Valheim Box64 container that makes this ARM-based OCI deployment possible.