Intermediate 35 min — Run a modded Terraria server with tModLoader and mods like Calamity.
Download the tModLoader server from GitHub:
mkdir -p /opt/tmodloader && cd /opt/tmodloader
wget https://github.com/tModLoader/tModLoader/releases/latest/download/tModLoader.zip
unzip tModLoader.zip
chmod +x start-tModLoaderServer.sh
Alternatively, install via SteamCMD:
steamcmd +login anonymous +app_update 1281930 +quit
Mods go in the Mods directory:
mkdir -p ~/.local/share/Terraria/tModLoader/Mods
Download .tmod files from the Steam Workshop or from the mod browser, then copy them:
cp Calamity.tmod ~/.local/share/Terraria/tModLoader/Mods/
cp MagicStorage.tmod ~/.local/share/Terraria/tModLoader/Mods/
Create an enabled.json to specify which mods to load:
echo '["CalamityMod", "MagicStorage"]' > ~/.local/share/Terraria/tModLoader/Mods/enabled.json
cat > /opt/tmodloader/serverconfig.txt << 'EOF'
world=/opt/tmodloader/worlds/modded.wld
worldname=modded
autocreate=3
port=7777
maxplayers=8
difficulty=0
EOF
For Calamity, use a Large world (autocreate=3) so biomes generate properly.
[Unit]
Description=tModLoader Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/tmodloader
ExecStart=/opt/tmodloader/start-tModLoaderServer.sh -config /opt/tmodloader/serverconfig.txt
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Save to /etc/systemd/system/tmodloader.service, then:
systemctl daemon-reload
systemctl enable --now tmodloader
All clients MUST have the exact same mods and versions as the server. tModLoader handles this during connection — it will prompt clients to download missing mods. If versions don't match, the client will be rejected.
Desert Forge hosting starts at $2/week — instant setup, DDoS protection, free tier available.
Get a serverBrowser-based utilities for self-hosters and developers. No signup, no upload.