Sign inSign up

0xspica/dst-server

By 0xspica

•Updated 6 months ago

An Docker image that brings Don’t Starve Together dedicated server (dst-server) to ARM/ARM64.

Image
2

10K+

0xspica/dst-server repository overview

⁠ℹ️About

⚠️This is an unofficial experimental image. Please do not report bugs to the official Don't Starve Together dedicated server developers.

This project is based on Jamesits/docker-dst-server⁠. It incorporates code from a-trkulja/x86_64-on-arm64 and includes optimizations to run box64/86 on ARM and ARM64.

This image relies on dynamic binary translation and does not involve any source-code refactoring. In theory, its runtime behavior should remain consistent with upstream, but unknown bugs may still occur.

(Built and tested on OCI Ampere A1 (ARM64) Compute.)

⁠⚙️Configuration

Configuration is fully consistent with the official documentation.

Please refer to Jamesits/docker-dst-server⁠ for the configuration, and to Simple Dedicated Server Setup⁠ on the Don’t Starve Wiki for the setup guide.

In this project, DST_SERVER_ARCH refers to the emulated/target architecture that the DST server is expected to run on (the environment being emulated), not the host machine architecture. You can simply set it to amd64 or x86.

Mapping environment variable used by this project:

  • DST_SERVER_ARCH=amd64 → translated to run on an arm64
  • DST_SERVER_ARCH=x86 → translated to run on an arm

steamcmd is always invoked in x86 (32-bit) mode, because the SteamCMD binary itself is built for x86 (32-bit).

⁠🚀Quick Start (Docker Compose)

⁠Always update

Every restart of the container will automatically reinstall steamcmd and dst-server.
Although this will take a long time, it ensures that the software in the container is up to date.
Upgrading also only requires restarting the container.

Example docker-compose.yml:

version: '3.5'
services:
  dst-server:
    image: 0xspica/dst-server
    restart: "on-failure:5"
    environment:
      DST_SERVER_ARCH: x86
    ports:
      - "10999-11000:10999-11000/udp"
      - "12346-12347:12346-12347/udp"
    volumes:
      - ./DoNotStarveTogether:/data
    stop_grace_period: 6m

⁠Do not update

If you hate long waits, enable persistent volume to avoid repeating downloads.

Their paths are set to /opt/steamcmd and /opt/dst-server respectively.

Example of docker-compose.yml:

version: '3.5'
services:
  dst-server:
    image: 0xspica/dst-server
    restart: "on-failure:5"
    environment:
      DST_SERVER_ARCH: x86
    ports:
      - "10999-11000:10999-11000/udp"
      - "12346-12347:12346-12347/udp"
    volumes:
      - ./DoNotStarveTogether:/data
      - ./steamcmd:/opt/steamcmd
      - ./dst-server:/opt/dst-server
    stop_grace_period: 6m

/data is required. If it isn’t persisted, your save data will be lost every time the container stops.

In this example, DST_SERVER_ARCH is set to x86. This is because some users reported that when running under amd64 emulation, certain MODS may show compatibility issues, while x86 works reliably. If your mod is confirmed to be compatible, you can switch it to amd64 for better performance. A set of performance benchmark is provided at the end of this document for reference.

⁠▶️Manual start

Of course, you can also start it from the command line, similar to the example in the official documentation:

docker run -v ${HOME}/.klei/DoNotStarveTogether:/data -p 10999-11000:10999-11000/udp -p 12346-12347:12346-12347/udp -it 0xspica/dst-server:latest

This is what was mentioned earlier: “Configuration is fully consistent with the official documentation.” You only need to replace the image name with 0xspica/dst-server. Likewise, you can stop the server by pressing Ctrl+C. However, I still recommend using docker-compose.yml

⁠📅Update: 2026/4/15

Long time no see, everyone.
This repository has been refactored for the first time in a long time.

⁠🧩Major changes

  • box64: v0.2.3 → v0.4.1
  • box86: v0.3.1 → v0.3.9
  • Debian: buster (EOL) → trixie
  • Python: 2.7.16 → 3.13.5

⁠📈Expected improvements

Some promising compiler optimizations have also been introduced.

Target platforms include:

  • Raspberry Pi 2 / 3 / 4 / 5
  • RK3288 / RK3399 / RK3588
  • Allwinner A64
  • Snapdragon SD845 / SD888 / SD8 Elite Gen 5
  • Ampere Altra
  • Apple M1
  • Other ARM64 platforms (possibly)

In theory, these updates should provide a noticeable performance improvement.
However, since Debian Buster has reached end-of-life and its repositories are no longer available, I am unfortunately unable to perform a direct performance comparison with the old version.

Have fun!

⁠Legacy Image

The tag of the old image has been changed to 20230518.

If you encounter strange issues, you can use it by changing the image in your configuration from:

    image: 0xspica/dst-server

to

    image: 0xspica/dst-server:20230518

⁠⚠️Known Issue

Sometimes you may encounter the following message:

ERROR! Failed to install app '343050' (Missing configuration)
...
/usr/local/bin/dontstarve_dedicated_server_nullrenderer: line 10: cd: /opt/dst_server/bin64: No such file or directory

After that, the program will terminate.

This happens because the server is configured to use login anonymous by default when downloading the dedicated server. Trying to work around this issue would require additional steamcmd configuration, which would make the setup much more complicated.

This is determined by Steam itself, and this issue is not unique to this project. Unfortunately, there is not much I can do about it. Restart the container, and pray to get lucky. :P

⁠⏱️7-Zip (26.00) single-thread performance benchmark

⁠64 bit mode

Native performance (arm64):

7-Zip (z) 26.00 (arm64) : Copyright (c) 1999-2026 Igor Pavlov : 2026-02-12
 64-bit arm_v:8-A locale=C.UTF-8 Threads:4 OPEN_MAX:1073741816, ASM

 mt1
Compiler:  ver:9.2.1 20191025 GCC 9.2.1 : UNALIGNED
Linux : 6.18.12+deb13-cloud-arm64 : #1 SMP PREEMPT Debian 6.18.12-1~bpo13+1 (2026-02-25) : aarch64
PageSize:4KB THP:always hwcap:119FFF:CRC32:SHA1:SHA2:AES:ASIMD
arm64

1T CPU Freq (MHz):  2975  2986  2987  2987  2986  2978  2987

RAM size:   23993 MB,  # CPU hardware threads:   4
RAM usage:    437 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       5052   100   4915   4915  |      74832   100   6409   6389
23:       4716   100   4807   4806  |      73629   100   6376   6373
24:       4489   100   4832   4827  |      71788   100   6303   6302
25:       4292   100   4900   4901  |      70282   100   6271   6256
----------------------------------  | ------------------------------
Avr:      4637   100   4864   4862  |      72633   100   6340   6330
Tot:             100   5602   5596

Emulated performance (amd64):

7-Zip (z) 26.00 (x64) : Copyright (c) 1999-2026 Igor Pavlov : 2026-02-12
 64-bit locale=C.UTF-8 Threads:4 OPEN_MAX:1073741816, ASM

 mt1
Compiler:  ver:9.4.0 GCC 9.4.0 : SSE2
Linux : 6.18.12+deb13-cloud-arm64 : #1 SMP PREEMPT Debian 6.18.12-1~bpo13+1 (2026-02-25) : x86_64
PageSize:4KB THP:always hwcap:57888911 hwcap2:2
Box64 v0.4.1 on Neoverse-N1 @1.00 GHz
(40661)

1T CPU Freq (MHz):  2968  2982  2986  2987  2990  2989  2988

RAM size:   23993 MB,  # CPU hardware threads:   4
RAM usage:    437 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       3645   100   3550   3547  |      61448   100   5246   5247
23:       3439   100   3520   3504  |      60595   100   5245   5245
24:       3352   100   3602   3605  |      59468   100   5225   5221
25:       3279   100   3745   3745  |      58943   100   5237   5246
----------------------------------  | ------------------------------
Avr:      3429   100   3604   3600  |      60114   100   5238   5240
Tot:             100   4421   4420

⁠32 bit mode

Native performance (armhf):

7-Zip (z) 26.00 (armt) : Copyright (c) 1999-2026 Igor Pavlov : 2026-02-12
 32-bit arm_v:7-A thumb:2 locale=C.UTF-8 Threads:4 OPEN_MAX:1073741816

 mt1
Compiler:  ver:9.2.1 20191025 GCC 9.2.1 : FP NEON SIMD32 UNALIGNED
Linux : 6.18.12+deb13-cloud-arm64 : #1 SMP PREEMPT Debian 6.18.12-1~bpo13+1 (2026-02-25) : aarch64
PageSize:4KB THP:always hwcap:1F7B0D6:NEON hwcap2:5F:CRC32:SHA1:SHA2:AES
armt

1T CPU Freq (MHz):  2979  2982  2987  2986  2986  2986  2989

RAM size:    2048 MB,  # CPU hardware threads:   4
RAM usage:    437 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       4666   100   4530   4540  |      48797   100   4179   4166
23:       4300   100   4381   4382  |      48161   100   4163   4169
24:       4073   100   4399   4380  |      47351   100   4158   4157
25:       3981   100   4538   4546  |      46585   100   4151   4146
----------------------------------  | ------------------------------
Avr:      4255   100   4462   4462  |      47724   100   4163   4160
Tot:             100   4312   4311

Emulated performance (x86):

7-Zip (z) 26.00 (x86) : Copyright (c) 1999-2026 Igor Pavlov : 2026-02-12
 32-bit ILP32 locale=C.UTF-8 Threads:4 OPEN_MAX:1073741816, ASM

 mt1
Compiler:  ver:9.4.0 GCC 9.4.0 : i686
Linux : 6.18.12+deb13-cloud-arm64 : #1 SMP PREEMPT Debian 6.18.12-1~bpo13+1 (2026-02-25) : x86_64
PageSize:4KB THP:always hwcap:681811F
Box86 on Neoverse-N1 @1000 MHz
(601)

1T CPU Freq (MHz):  2976  2979  2987  2986  2982  2987  2984

RAM size:    2048 MB,  # CPU hardware threads:   4
RAM usage:    437 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       2884   100   2810   2806  |      32949   100   2804   2813
23:       2761   100   2804   2814  |      32614   100   2830   2823
24:       2718   100   2918   2923  |      32090   100   2826   2817
25:       2672   100   3053   3052  |      31475   100   2799   2802
----------------------------------  | ------------------------------
Avr:      2759   100   2896   2899  |      32282   100   2815   2814
Tot:             100   2856   2856

Tag summary

Content type

Image

Digest

sha256:169ec8852…

Size

289.5 MB

Last updated

6 months ago

docker pull 0xspica/dst-server