An Docker image that brings Don’t Starve Together dedicated server (dst-server) to ARM/ARM64.
10K+
⚠️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 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 arm64DST_SERVER_ARCH=x86 → translated to run on an armsteamcmd is always invoked in x86 (32-bit) mode, because the SteamCMD binary itself is built for x86 (32-bit).
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
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.
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
Long time no see, everyone.
This repository has been refactored for the first time in a long time.
Some promising compiler optimizations have also been introduced.
Target platforms include:
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!
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
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
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
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
Content type
Image
Digest
sha256:169ec8852…
Size
289.5 MB
Last updated
6 months ago
docker pull 0xspica/dst-server