Vanilla Terraria egg with support for Journey's End. Currently up to 1.4.0.2 is supported, however future patches will require updates to the install script.
You may want to assign a minimum of 768 mb of RAM to a server as it will use around 650 mb to generate the world on the first start.
Terraria only requires a single port to run. The default is 7777
Port | default |
---|---|
Game | 7777 |
Name | Tag |
---|---|
Debian | ghcr.io/ptero-eggs/yolks:debian |
Name | Description | Environment Variable | Default Value | User Viewable | User Editable |
---|---|---|---|---|---|
Terraria version | the version of Terraria that is to be used. You can use the full version number or the file number. (ex. 1.3.5.3 or 1353) Get version numbers here - https://terraria.wiki.gg/wiki/Server#Downloads | TERRARIA_VERSION | latest | Yes | Yes |
World Name | The name for the world file. | WORLD_NAME | world | Yes | Yes |
Max Players | The maximum number of players a server will hold. | MAX_PLAYERS | 8 | Yes | Yes |
World Size | Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large). | WORLD_SIZE | 1 | Yes | Yes |
Difficulty | World Difficulty Options: 0(normal), 1(expert), 2(master), 3(journey) | WORLD_DIFFICULTY | 3 | Yes | Yes |
MOTD | Server MOTD | SERVER_MOTD | Welcome! | Yes | Yes |
World Seed | The Seed to use when creating the World | WORLD_SEED | Yes | Yes | |
Password | The password which should be used. | PASSWORD | Yes | Yes | |
NPCStream | Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off. | NPCSTREAM | 0 | Yes | Yes |
#!/bin/bash
# Vanilla Installation Script
#
# Server Files: /mnt/server
## install packages to get version and download links
apt update
apt install -y curl wget file unzip jq
DOWNLOAD_LINK=invalid
mkdir -p /mnt/server/
cd /mnt/server/
if [ "${TERRARIA_VERSION}" == "latest" ] || [ "${TERRARIA_VERSION}" == "" ] ; then
V=$(curl -sSL https://terraria.org/api/get/dedicated-servers-names | jq -r .[] | head -1)
DOWNLOAD_LINK="https://terraria.org/api/download/pc-dedicated-server/${V}"
else
CLEAN_VERSION=$(echo ${TERRARIA_VERSION} | sed 's/\.//g')
echo -e "Downloading terraria server files"
DOWNLOAD_LINK=$(curl -sSL https://terraria.wiki.gg/wiki/Server#Downloads | grep '>Terraria Server ' | grep -Eoi '<a [^>]+>' | grep -Eo 'href=\"[^\\\"]+\"' | grep -Eo '(http|https):\/\/[^\"]+' | grep "${CLEAN_VERSION}" | cut -d'?' -f1)
fi
## this is a simple script to validate a download url actaully exists
echo ${DOWNLOAD_LINK}
if [ ! -z "${DOWNLOAD_LINK}" ]; then
if curl --output /dev/null --silent --head --fail ${DOWNLOAD_LINK}; then
echo -e "link is valid."
else
echo -e "link is invalid closing out"
exit 2
fi
fi
CLEAN_VERSION=$(echo ${DOWNLOAD_LINK##*/} | cut -d'-' -f3 | cut -d'.' -f1)
echo -e "running 'curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}'"
curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}
echo -e "Unpacking server files"
unzip ${DOWNLOAD_LINK##*/}
echo -e ""
cp -R ${CLEAN_VERSION}/Linux/* ./
chmod +x TerrariaServer.bin.x86_64
echo -e "Cleaning up extra files."
rm -rf ${CLEAN_VERSION}
echo -e "Generating config file"
cat <<EOF > serverconfig.txt
worldpath=/home/container/saves/Worlds
worldname=default
world=/home/container/saves/Worlds/default.wld
difficulty=3
autocreate=1
port=7777
maxplayers=8
EOF
mkdir -p /mnt/server/saves/Worlds
echo -e "Install complete"