How to Install and Set Up TShock on a Terraria Server
TShock turns a plain Terraria server into one you can actually run: accounts, ranks, protected builds, item bans and server-side characters, with nothing for your players to install. Here is how to install it on a rented server, Windows or Linux, claim the owner account, and change the first settings that matter.
It adds moderation and protection to a normal Terraria server without asking players to install anything.
Content mods belong on tModLoader. A server runs TShock or tModLoader, not both.
TShock 6.2.1 matches Terraria 1.4.5.8. After patches, wait for the matching TShock build.
Public or semi-public servers should review UUID login, account rules, backups, spawn protection, groups and regions before inviting people in.
What TShock is, and when to use it
TShock is a server-side toolbox for vanilla Terraria. It adds user accounts, groups and permissions, anti-cheat tools, regions, item bans, warps, server-side characters, lots of admin commands and plugin support through the ServerPlugins folder. The practical point is simple: players do not install TShock. They join with the normal Terraria client on the same Terraria version as the server.
Use it when you want vanilla Terraria plus proper administration: trusted friends who need ranks, a small public world that needs anti-grief protection, or any server where “just share the password” is no longer enough. If you still need the base server itself, start with our guide to setting up a vanilla Terraria dedicated server. If your real goal is modded content such as Calamity, use our guide to installing mods with tModLoader instead.
| Option | Who joins | Mods or plugins | Admin tools | Best for |
|---|---|---|---|---|
| Vanilla server | Normal Terraria clients on the same Terraria version | No TShock plugins or content mods | Basic server controls only | Private worlds with very light admin needs |
| TShock | Normal Terraria clients on the same Terraria version | TShock plugins only; no content mods | Accounts, ranks, regions, item bans, SSC, anti-cheat | Vanilla friends or public servers that need structure |
| tModLoader | Players using the matching modded setup | Content mods such as Calamity | Different focus from TShock’s admin stack | Modded play rather than vanilla administration |
If your main concern is client access across different devices rather than admin tooling, our guide to Terraria servers for mobile players covers that side of the decision.
Before you install: match versions, install .NET 9, back up the world
The version rule matters more than anything else. Each TShock release is built for one Terraria version. As of November 2026, the latest stable release is TShock 6.2.1 for Terraria 1.4.5.8. Older examples show the same pattern: 6.1 was for Terraria 1.4.5.6, and 5.2.4 was for 1.4.4.9. When Terraria gets patched, do not update the server immediately if you need TShock. Wait for the matching TShock release, then update the server and your players together.
That wait avoids two common failures. First, players get a plain version mismatch and cannot join. Second, even if the core server starts, plugins built for the old target may fail because the server binary they hook into has changed. TShock 6 also needs the .NET 9 runtime. Mono-based instructions from old TShock 4 guides are outdated. For memory, TShock’s own minimum is at least 1GB, and if you already have a world you should back up the .wld file before doing anything else.
This is the update order worth following after every Terraria patch.
current version
whole tshock folder
over the old install
Terraria version
- TShock 6.2.1 is built for Terraria 1.4.5.8
- TShock 6 needs the .NET 9 runtime
If you are upgrading an existing TShock install rather than doing a clean setup, back up the whole server folder, especially the tshock folder and tshock.sqlite. That database holds accounts, groups, bans and regions. Lose it, and you are effectively starting over.
Install TShock on rented hosting, Windows or Linux
Rented server panels
On rented hosting, the cleanest route is usually to stop the server, take a backup, then switch the server type or version to TShock in the control panel. Start it once and let it generate its own tshock folder. That first boot matters because it creates config.json, sscconfig.json, tshock.sqlite, setup-code.txt and the log folder. After that, the server behaves like any other TShock install: you claim ownership with the setup code, then edit config and groups.
If the setup code has already scrolled out of the panel console, open tshock/setup-code.txt in the file manager. The same code is saved there.
Windows
Install the .NET 9 runtime first. Then extract the TShock win-x64 release into its own folder and run TShock.Server.exe. On first start it will prompt for a world and port; the default Terraria server port is 7777. Keeping TShock in its own folder makes upgrades and rollbacks much cleaner than mixing files into a previous vanilla directory.
Terraria-TShock/ |- TShock.Server.exe |- bin/ |- ServerPlugins/ |- i18n/ |- GeoIP.dat `- tshock/ <- created on first start
If you host at home, allow 7777 TCP through the firewall and forward 7777 TCP on the router. If you already have an existing world, point the prompts at that .wld file instead of creating a new one.
Linux
Install the .NET 9 runtime, then use the linux-x64 release. The Linux download contains a .tar inside the zip. Extract that inner tar as well, otherwise file permissions may not survive and the server can fail to start until you fix them manually.
mkdir ~/tshock-server && cd ~/tshock-server unzip TShock-6.2.1-for-Terraria-1.4.5.8-linux-x64-Release.zip tar xf TShock-Beta-linux-x64-Release.tar chmod +x TShock.Server ./TShock.Server
Once the world exists, start it without the prompts:
./TShock.Server -world /home/you/tshock-server/worlds/MyWorld.wld -autocreate 1 -port 7777
If you prefer containers, TShock publishes an official image: docker pull ghcr.io/pryaxis/tshock:stable.
Use ./TShock.Server, not old mono TerrariaServer.exe instructions. The autostart form is useful because it skips the interactive prompts; just remember that -world should be an absolute path, and command-line options override config.json. If you are pointing at an existing world, you would keep -world and drop -autocreate.
Claim ownership, then switch setup mode off
On first boot, TShock prints a setup token to the console and writes it to tshock/setup-code.txt. That token gives temporary admin access so one person can bootstrap the real owner account. Do not stop at “I can run commands now”. The permanent owner account is what survives restarts because it lives in the database.
/setup <code> /user add <name> <password> owner /login <name> <password> /setup
- Join the server in-game.
- Type
/setup <code>using the token shown in the console or file. This grants temporary setup access. - Create the real owner account with
/user add <name> <password> owner. - Log into that account with
/login <name> <password>. - Run
/setupon its own to disable the setup system.
Turn setup mode off because the token exists only to bootstrap the first owner. Leaving that path active gives one more route to powerful access if someone sees the code. Protect the owner password and keep the tshock folder backed up; it is part of your game server security, not just a convenience file.
First config.json changes worth making
Most servers do not need dozens of settings on day one. They do need a sensible baseline. The config file lives in tshock/config.json, and all settings sit inside a "Settings" object. Edit with the server stopped, or run /reload after changes. Also remember that launch flags such as -port or -maxplayers override the file, so if a setting refuses to stick, check the startup line.
{
"Settings": {
"DisableUUIDLogin": true,
"RequireLogin": true,
"MaxSlots": 8,
"BackupInterval": 10,
"BackupKeepFor": 240,
"SpawnProtection": true,
"SpawnProtectionRadius": 10,
"DisableTombstones": true,
"PvPMode": "disabled",
"RestApiEnabled": false
}
} | Setting | Default | Suggested change | Why it matters |
|---|---|---|---|
DisableUUIDLogin | false | Set true on public servers | TShock warns that UUID auto-login can be abused because a malicious server can steal a user’s UUID. Setting this to true means players log in with their account password instead. It costs players one extra command, and the warning disappears from the console on the next start. |
MinimumPasswordLength | 4 | Raise it on public servers | Longer passwords make guessing harder but add a little friction when people register. |
ServerPassword | "" | Set one for invite-only friend worlds; leave empty if accounts are the real gate | A server password blocks random joins before they ever reach your world. Trade-off: one shared secret tends to spread, so it is a weak long-term control for a public community. |
RequireLogin | false | Set true on semi-public or public servers | This ties actions to named accounts and groups, which makes moderation and logs useful. Trade-off: another step for players when they first join. |
MaxSlots | 8 | Set it to the real cap you want, and keep Terraria’s own max players two higher | TShock’s own advice: with Terraria’s max players two higher than MaxSlots, extra joiners get a clean “Server is full” message. |
BackupInterval / BackupKeepFor | 10 / 240 | Keep backups on; increase retention if the world matters more than disk space | By default TShock saves a world backup every 10 minutes into tshock/backups and keeps each one for 240 minutes. That is your fastest way back from grief or an admin mistake. Raise BackupKeepFor (2880 is two days) if you want to roll back further. |
SpawnProtection | false | Set true where random joins might grief spawn | Stops players placing tiles within SpawnProtectionRadius (10 tiles) of the spawn point, so new arrivals cannot wall in or wreck the spawn. Admins can still build there. |
DisableTombstones | false | Set true on messy casual or public worlds | Tombstones pile up quickly on a busy world, and someone has to clear them. The trade-off is losing the death marker. |
PvPMode | "normal" | Use "disabled" unless PvP is intentional | Disabling casual PvP removes a common source of “who hit who” arguments on social servers. |
RestApiEnabled | false | Leave it off | The REST API opens another network port (7878 by default) for remote control. Unless you use a tool that needs it, keeping it off leaves one less door open. |
Groups, ranks and giving friends the right amount of power
TShock 6.2.1 creates a default ladder that inherits upward: guest → default → vip → newadmin → admin → trustedadmin → owner. There is also a separate insecure-guest group. The important design point is inheritance: you do not need to rebuild every permission from scratch.
Use this ladder as a risk scale. vip is still a player-facing rank. newadmin starts moderation tools such as kick and mute. admin adds bans and broader movement powers. trustedadmin can change config and world state. owner can manage groups, regions and bans at the top level, so do not hand it out casually.
| Group | Build | Kick | Ban | Config | Groups |
|---|---|---|---|---|---|
guest | Yes | No | No | No | No |
default | Yes | No | No | No | No |
vip | Yes | No | No | No | No |
newadmin | Yes | Yes | No | No | No |
admin | Yes | Yes | Yes | No | No |
trustedadmin | Yes | Yes | Yes | Yes | No |
owner | Yes | Yes | Yes | Yes | Yes |
One detail trips up new owners: the /user command is reserved for superadmins, and even the owner group is not superadmin all the time. Run /su first, which makes you superadmin for 10 minutes, then change a friend’s rank with /user group <user> <newgroup>. Commands typed in the server console already run with full rights. Registered players should normally land in default, which is already the generated value of DefaultRegistrationGroupName. If someone registers and still feels oddly restricted, check both their group and whether a region is blocking them.
A useful pattern is a custom builder group. Not because it grants huge extra power, but because it gives you a named bucket to allow into protected regions without also giving moderation tools.
/group add builder tshock.world.modify /group parent builder default /su /user group <friend> builder
The default parent keeps the normal registered-player commands, so the new group behaves like a regular player until you let it into a protected region. Check what a group already has with /group listperm <group> before stacking more permissions on top.
Everyday admin commands
| Task | Command | Lowest default group |
|---|---|---|
| Remove a disruptive player for now | /kick <player> | newadmin |
| Silence chat spam | /mute <player> | newadmin |
| Ban for good, with a reason | /ban add <player> "Griefing" | admin |
| Review or lift bans | /ban list, /ban del <id> | admin |
| Change someone’s rank | /su, then /user group <user> <group> | owner |
| Apply config edits without a restart | /reload | trustedadmin |
| Save, or save and shut down | /save, /off | trustedadmin |
Commands work with either / or ! in front; the ! version runs silently, so other players do not see it in chat. You can also type them in the server console without the prefix.
Protect builds and the world: regions, item bans and SSC
Use regions for anything that must not be changed
Spawn protection is only a radius. Regions are the precise tool. They let the server check tile edits against a named protected rectangle before the change is accepted, which is why they are so effective against grief: the bad placement or break attempt never lands in the world in the first place. The trade-off is admin time, because somebody has to define the boundaries and decide who is allowed in.
/region set 1 /region set 2 /region define town /region protect town true /region allowg builder town
Use /region allow <user> <region> if access is for one named person instead of a whole group. If you want chest access protected along with blocks, set RegionProtectChests to true. Leave it false if shared storage inside a protected base matters more than strict anti-theft.
Ban problem items instead of arguing after the damage
Item bans are best when one specific item keeps causing the same moderation issue. The server can block use of that item regardless of what a player brought in. The trade-off is that broad bans can frustrate legitimate builders, so keep them targeted.
/itemban add <item> /itemban allow <item> <group>
You also have /projban and /tileban for the same logic at projectile and tile level.
Enable SSC before a public community settles in
SSC is off by default. Turn it on in tshock/sscconfig.json if you want inventories to live on the server rather than on each player’s local character. That is the cleanest way to stop people importing items from other worlds, and it gives you consistent character state across reconnects. The trade-off is a different expectation for players: they are now using a server-owned character inventory, with server-defined starting health, mana and inventory.
{
"Settings": {
"Enabled": true,
"StartingHealth": 100,
"StartingMana": 20,
...
}
} Enable SSC before players commit to the world if possible. Switching later changes what they carry and causes confusion even when it is working correctly.
Symptom, likely cause and first fix
When TShock goes wrong, the answer is usually version matching, launch flags, permissions or one missing file. If friends cannot get in at all, work down this chart first.
For everything else, start with the table, then check tshock/logs and the current launch line before changing more settings.
| Symptom | Likely cause | First fix |
|---|---|---|
| Players get a version mismatch after a Terraria update | The server, TShock or clients are no longer on the same Terraria version | Wait for the matching TShock release, then update the server and players together. TShock 6.2.1 is for Terraria 1.4.5.8. |
| The server will not start on Linux | .NET 9 is missing, or you only unzipped the release and lost executable permissions | Install the .NET 9 runtime, extract the inner .tar, then run chmod +x TShock.Server and start ./TShock.Server. |
/setup says the code is invalid or setup is already done | You used an old token, or setup mode was already completed and disabled | Read the current code from tshock/setup-code.txt if this is the first setup. If setup was already done, log in with the existing owner account instead. |
| You cannot find the setup code on a rented server | The panel console does not show the earlier boot lines | Open tshock/setup-code.txt in the file manager. Start the server once first so the file is generated. |
| Friends cannot build | They are blocked by a region, spawn protection, or they are not using the group you expected | Check whether the problem is only at spawn or inside a named region. Then confirm their account group and use /region allow or /region allowg where appropriate. |
| Plugins fail after an update | The plugin targets an older TShock or Terraria version | Replace it with a build for your current TShock version. Treat -ignoreversion as a last resort because it can load incompatible code, not as a proper upgrade path. |
| You lost owner access | tshock.sqlite was deleted, replaced or reset | Restore the tshock folder or at least tshock.sqlite from backup. If the database is gone for good, you will need to set the server up again. |
Players cannot connect on 7777 | Firewall, router forwarding or password mismatch | Allow and forward 7777 TCP where relevant, then confirm the server password and launch port are what you think they are. |
| World time stops when nobody is online | The server is hibernating when empty | Add -forceupdate to the launch line if you want time to keep passing. The trade-off is that the server keeps working even when empty. |
Tune it or upgrade: when a bigger plan helps
TShock itself is not usually the thing that “needs tuning” first. More often, the limit is the amount of admin structure you have put in place, the headroom in the plan, or the discipline around updates. For memory, at least 1GB is the floor, but practical sizing depends on the kind of server you are actually running.
| Topic | Friends server | Public server |
|---|---|---|
| RAM starting point | 1-2GB is a practical start for a vanilla small group of up to 8 | 4GB+ is the practical starting point for a large public TShock server |
| Login and access | A server password may be enough if the group is trusted | Use accounts, require login, and disable UUID login on public worlds |
| Protection | Spawn protection plus a few regions is usually enough | Build around regions, chest protection, item bans and possibly SSC from the start |
| Uptime | Manual restarts can be fine if one organiser is around | Autostart, regular backups and clean recovery matter as much as raw memory |
| Updates | Wait for the matching TShock release after Terraria patches | Apply the same rule, and hold plugin updates to the same standard |
If the server struggles once several people are online building and fighting, lower the slot count or drop plugins you do not use before paying for more. If you are weighing panel quality, clean version switching and enough headroom for a public world, read our Terraria server hosting comparison.
If you are moving from a private world to a public community, look for a host that offers TShock as a server type, keeps it updated after Terraria patches and gives you enough memory for a public world.
Compare the best Terraria server hostsTerraria server FAQ
Do players need to install TShock to join?
No. TShock is server-side, so players join with the normal Terraria client. The only hard requirement on their side is that their Terraria version must match the server’s Terraria version.
Can I use TShock with tModLoader or Calamity?
No. TShock is for vanilla Terraria administration, while Calamity and other content mods belong on tModLoader. A server runs one stack or the other, not both at once.
Is TShock updated for the latest Terraria version?
Each TShock release targets one Terraria version, so the answer depends on the current patch state. As of November 2026, the latest stable release is TShock 6.2.1 for Terraria 1.4.5.8. After any future Terraria patch, wait for the matching TShock release before updating.
How do I make myself admin on a TShock server?
Use the first-boot setup flow: join the server, run /setup <code>, create an owner account with /user add <name> <password> owner, then log in with /login. Finish by running /setup on its own to disable setup mode. Keep that owner password private and keep tshock.sqlite backed up.
How much RAM does a TShock server need?
TShock’s minimum is at least 1GB. In practice, 1-2GB is a sensible start for a vanilla small group of up to 8, while a large public TShock server is better planned around 4GB+.
More Terraria server help
The host comparison, plus our other guides to running a Terraria server.
Checked against the TShock 6.2.1 release, its generated config and default groups, and the TShock wiki, November 2026. Host panels label the TShock option differently, but the setup code, commands and config file are the same everywhere.