They write their server setup instructions like sh*t, so we made this Docker image to simplify things.
Please read the whole document before putting your hands on your server.
The DST server code changes a lot. We offer multiple variants (tags) on Docker Hub:
latest or vanilla are less frequently updated images, recommended for day-to-day usenightly is a nightly built image, so it (hopefully) comes with the latest server codesteamcmd-rebase works the same way as latest but is based on cm2network/steamcmd:rootAll variants except nightly also have a -slim tagged version which does not come with DST server pre-installed; required files will be downloaded every time the container is launched. The -slim versions cannot be launched offline.
Let's assume you are saving your server config and status to ${HOME}/.klei/DoNotStarveTogether. (This is the default location when it is running outside Docker, so we'll use this as an example. If you want to save it to other location, just mount that directory read-write to the /data folder of the container.)
Start server:
docker run -v ${HOME}/.klei/DoNotStarveTogether:/data -p 10999-11000:10999-11000/udp -p 12346-12347:12346-12347/udp -e "DST_SERVER_ARCH=amd64" -it jamesits/dst-server:latest
If you use docker-compose, an example config is provided.
Just press Ctrl+C and wait a little while to let itself spin down. (If the server is saving data, don't press ^C twice to force kill the server.)
To programmatically shut down the server, send a SIGINT to the supervisord process.
Note: the server may take up to ~5min to save map and fully shut down.
If you don't already have a set of server config in your data directory, we will generate one for you. Start server once using the command above, and you will see:
Creating default server config... Please fill in `DoNotStarveTogether/Cluster_1/cluster_token.txt` with your cluster token and restart server!
To generate a cluster token (as of 2019-11-02):
The token looks like pds-g^aaaaaaaaa-q^jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=. Then either set DST_CLUSTER_TOKEN environment variable during docker run, or paste the token into your_data_directory/DoNotStarveTogether/Cluster_1/cluster_token.txt.
If you need to add mods, change world generation config, etc., please do it now. Don't forget to edit your_data_directory/DoNotStarveTogether/Cluster_1/cluster.ini and get your server an unique name!
After you finish this, re-run start server command, and the server should be running.
(In most cases you don't need this; just pull the prebuilt image from Docker Hub.)
git clone https://github.com/Jamesits/docker-dst-server.git docker-dst-server cd docker-dst-server docker build . -t dst-server:latest
There are some arguments you can set via --build-arg:
BASE_IMAGE: the FROM image (recent Debian or Ubuntu based images are supported)STEAMCMD_PATH: where is steamcmd.sh in the base imageDST_DOWNLOAD: set to 1 to embed DST server into the imageDST_USER: the user to run server as (inside container)DST_GROUP: the group to run server as (inside container)Online catalog. )Restart the server. Updates will be downloaded automatically.
Run c_connect("IP address", port) or c_connect("IP address", port, "password") in client console.
You can try the 3rd party website Don't Starve Together Server List.
You need to expose UDP 10999 (master) and 11000 (caves) for client to connect; udp 12346 and 12347 for steam connection. Don't NAT these ports to different port numbers.
The server use another 2 high UDP ports for unknown communication, and UDP 10998 (listen on localhost) for communication between cluster servers.
Here is a netstat -tulpn output on our test server:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:12346 0.0.0.0:* 54/./dontstarve_ded udp 0 0 0.0.0.0:12347 0.0.0.0:* 53/./dontstarve_ded udp 0 0 0.0.0.0:38223 0.0.0.0:* 53/./dontstarve_ded udp 0 0 0.0.0.0:36517 0.0.0.0:* 54/./dontstarve_ded udp 0 0 127.0.0.1:10998 0.0.0.0:* 54/./dontstarve_ded udp 0 0 0.0.0.0:10999 0.0.0.0:* 54/./dontstarve_ded udp 0 0 0.0.0.0:11000 0.0.0.0:* 53/./dontstarve_ded
Your disk is full.
Usually there is a file system permission issue preventing steamcmd from writing to your game installation directory.
Possible causes:
Local data is stored in <User Documents>\Klei\DoNotStarveTogether\<Random Number>.
There are two situations:
Cluster_X to server and rename to Cluster_1, then it should work.client_save except session and Cluster_X/save/session to server Cluster_1/save.saveindex because the server recognize only the first slot.supervisor.conf to disable cave server.Open Cluster_X/Master/modoverrides.lua and you will see something like workshop-XXXXX where XXXXX is a number.
Open Cluster_1/mods/dedicated_server_mods_setup.lua on server and write ServerModSetup("XXXXX").
Don't Starve Together Dedicated Server Docker Image Copyright (C) 2015-2018 James Swineson (Jamesits) and Mingye Wang (Arthur2e5) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.