A simple docker container for running a TShock Terraria server
You can install the latest automated build by pulling the image from the docker index.
docker pull kalhartt/tshock:latestA bash script is included to help launch and manage tshock servers using this
container. Note the script requires expect to be installed, and the running
user must have docker permissions. To start a server just do the following:
wget https://raw.githubusercontent.com/kalhartt/docker-tshock/master/tshock.sh
chmod +x tshock.sh
# Start the server
./tshock.sh start servername
# Attach the server (ctrl-p ctrl-q to detach)
./tshock.sh attach servername
# stop the server
./tshock.sh stop servernameWhere servername is a name of your choice. This will create a directory at
$HOME/servername to store your world files, logs, and config files. You can
start the server with custom options as listed below:
$ ./tshock.sh
Usage:
tshock [-g PORT] [-p PORT] [-d BASEDIR] start NAME
tshock attach NAME
tshock stop NAME
Options:
NAME Name of the docker container
-d BASEDIR Directory for mounted volumes (default: $HOME/NAME)
-p PORT Port to bind terraria server to (default: 7777)
$ ./tshock -p 1234 -d /abs/path/to/server start myserverThe Terraria server is launched with the arguments
-world /opt/tshock/Terraria/Worlds/Default.wld -autocreate 2. These arguments
can be overriden by passing any arguments to docker run like so:
docker run -it kalhartt/tshock:latest \
-world /opt/tshock/Terraria/Worlds/MyWorld.wld \
-maxplayers 16It can be nice to have access to the world files outside of docker to ease
backups. This can be accomplished by using dockers volumes and some tshock
arguments. In this example, there is a local folder Worlds which we will
mount to the container at /opt/tshock/Worlds. This way all world files will
be accessible from both locally and inside the docker container.
docker run --name='tshock' -it \
-p 7777:7777 -p 7878:7878 \
-v Worlds:/opt/tshock/Worlds \
kalhartt/tshock:latest \
-world /opt/tshock/Worlds/MyWorld.wld \
-autocreate 2It is also possible to use a custom config file using the same mechanism. In
this example, a local folder config contains the config.json file to be
used by the server.
docker run --name='tshock' -it \
-p 7777:7777 -p 7878:7878 \
-v config:/opt/tshock/config \
kalhartt/tshock:latest \
-world /opt/tshock/Worlds/Default.wld \
-autocreate 2 \
-config /opt/tshock/config/config.json