Egg Repository

Pterodactyl Community Egg Repository

Terraria Vanilla

Dig, fight, explore, build! Nothing is impossible in this action-packed adventure game.

Read Me

Terraria

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.

Minimum RAM warning

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.

Required Server Ports

Terraria only requires a single port to run. The default is 7777

Portdefault
Game7777

Plugins may require ports to be added to the server

Yolks
NameTag
Debianghcr.io/ptero-eggs/yolks:debian
Variables and Startup

Startup Command

./TerrariaServer.bin.x86_64 -config serverconfig.txt

Variables

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

Environment Variable: TERRARIA_VERSION
Default Value: latest
User Viewable:
User Editable:
World Name

The name for the world file.

Environment Variable: WORLD_NAME
Default Value: world
User Viewable:
User Editable:
Max Players

The maximum number of players a server will hold.

Environment Variable: MAX_PLAYERS
Default Value: 8
User Viewable:
User Editable:
World Size

Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).

Environment Variable: WORLD_SIZE
Default Value: 1
User Viewable:
User Editable:
Difficulty

World Difficulty Options: 0(normal), 1(expert), 2(master), 3(journey)

Environment Variable: WORLD_DIFFICULTY
Default Value: 3
User Viewable:
User Editable:
MOTD

Server MOTD

Environment Variable: SERVER_MOTD
Default Value: Welcome!
User Viewable:
User Editable:
World Seed

The Seed to use when creating the World

Environment Variable: WORLD_SEED
Default Value:
User Viewable:
User Editable:
Password

The password which should be used.

Environment Variable: PASSWORD
Default Value:
User Viewable:
User Editable:
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.

Environment Variable: NPCSTREAM
Default Value: 0
User Viewable:
User Editable:
Install Script
#!/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"
Installation Imageghcr.io/ptero-eggs/installers:debianInstallation Entrypointbash