A Terraria with TShock server image! For the Vanilla version, check out the following: | GitHub | Docker |
A containerized version of Terraria Server (with TShock) running on Linux, courtesy of Mono!
Be very cautious with blindly using latest
... TShock can introduce breaking changes between versions. This can cause your world to be corrupted. It is best to specify an exact tag and only "upgrade" when you are confident that your world will not be ruined when changing to a new version of this image (and thus, a new version of TShock). Creating a backup of your world is advised before any upgrades are performed!
(alternatively, you could roll the dice and use latest
. Your choice.)
See Migration issues related to permissions below.
First and foremost, you're going to need Docker. Please check out Docker's documentation for how to install it on the various supported platforms. While the install may be different per platform, the rest of the steps will remain the same (containers sure are nice, aren't they?).
After installing docker, just run the following command and wait a few minutes:
docker run -d -p 7777:7777 --memory=1500m --mount source=terraria,target=/world --name="terraria" trfc/terraria:4.5.12 -autocreate 1 -world /world/Terrarium.wld -password PleaseChange!
Parameter/Option | Description |
---|---|
-d |
run the container in detached mode so you can go about your day. |
-p 7777:7777 |
map port 7777 to the container's port 7777 so that you can connect to the server (since the command does not change the server from its default port). |
--memory=1500m |
set the max amount of memory to use so that your system doesn't crash because of out of memory exceptions. |
--mount source=terraria,target=/world |
create (or attach to if existing) a volume so that your world persists even when the container shuts down. |
--name="terraria" |
name the running container "terraria" |
trfc/terraria:4.5.12 |
use this image 😊 (with a specific tag) |
-autocreate 1 -world /world/Terrarium.wld |
create a small world named Terrarium OR use an existing world named Terrarium (default Terraria server command) |
-password PleaseChange! |
sets the server password to "PleaseChange!" (custom command courtesy of this image) |
After installing docker, start the container (and your server) in interactive mode:
docker run -it -p 7777:7777 --memory=1500m --mount source=terraria,target=/world --name="terraria" trfc/terraria:4.5.12
Next, go through the prompts as it asks (make note of the name of your world).
Finally, after the server starts, exit by pressing Ctrl+p
followed immediately by Ctrl+q
. This will cause the container to switch to daemon mode, which will allow it to keep running in the background.
If the authcode.txt file was left at its default location, the following command will print it to the command line:
docker run --rm --mount source=terraria,target=/world --name="volumeinspect" trfc/vimtainer cat /world/authcode.txt
Addressing the 84 pulls as of the time of this writing...
If you are running into permission issues after updating to the latest version of this image, and if you used the quickstart command from above, consider running the following command:
docker run --rm -d --mount source=terraria,target=/world ubuntu chown -R 8433 world
This addresses a single issue: Terraria.exe now runs under user 8433, and thus needs permission/ownership of the world folder (arguably). The command above mounts to the "terraria" volume and makes user 8433 the owner of the world folder. The container then stops and removes itself (--rm
).
For now, you can target the sudo
tag (trfc/terraria:sudo
) instead of latest
.
✅ Password replace at startup (using jq and copied script?)
✅ Non-root user for running Mono+Terraria
✅ Better README (with instructions)