-
released this
2026-10-02 22:26:56 +00:00 | 1 commits to master since this release- New
fetchcommand to download server zips intodist/, named with their version:terractl fetch tmodloader [<version>]downloads from tModLoader's GitHub releases (default: the latest stable) and checks it against the SHA-256 checksum GitHub publishes.terractl fetch vanilla [<version>]downloads from terraria.org (default: its newest; older versions by number,1449or1.4.4.9).--listshows the versions available (tModLoader: stable and preview), and which are already downloaded.--upgrade <name>switches an instance to the zip withupgraderight after.- Every zip is checked (complete, and the right kind) before it's put in
dist/; zips already there aren't downloaded again. If a site doesn't have the version or can't be reached, it says so and where to download it by hand. - Members of the
terrariagroup can use it withoutsudo(except--upgrade). Needscurl.
- Scheduled backups, with a systemd timer per instance (
terraria-backup@<name>.timer):sudo terractl backup enable <name> [--every <when>] [--keep <number>](default: daily, keeping the newest 14).--everytakeshourly,daily,weekly, a time such as04:30, or any systemd calendar expression. Missed backups are made after the machine starts again.backup now <name>makes one immediately,backup disable <name>stops the schedule (existing backups are kept), andbackup list [<name>]shows schedules, the last and next run, and the backups.- Each backup saves the world first if the server is running (as
exportdoes) and goes in/var/lib/terraria/backups/<name>/(TERRARIA_BACKUPSin/etc/default/terractl), readable by theterrariagroup. Only scheduled backups are pruned. renametakes the schedule along,deleteturns it off, and purging the package removes the schedules (not the backups).
- New
doctorcommand:terractl doctor [<name>] [--fix]checks the system (user, programs including ICU and curl, folders, zips, the systemd units and old copies in/etcthat replace them, sandbox access to moved folders, journal access, polkit, the daemon, leftovers of deleted instances) and each instance (file ownership and modes, its server zip, paths inserverconfig.txt, missing mods, shared ports, failed starts and backups). Each problem comes with the command that fixes it.--fixapplies the safe fixes:fix-perms, folder and zip permissions, journal access, theReadWritePaths=drop-in for moved folders, and boot links or backup schedules of instances that are gone. It exits with status 1 if a problem remains. - The daemon (
terractld.service) may now write to/etc/systemd/system, sobackup enableanddoctor --fixalso work through--host. - Warnings about moved folders now also suggest
terractl doctor --fix. - New
upgradecommand to change an instance's server version, up or down:terractl upgrade <name>lists the zips indist/for its type, marking the installed, pinned and newest ones. Theterrariagroup can use it withoutsudo.sudo terractl upgrade <name> <zip>|latestchecks the zip first (right type, readable byterraria, contains the server, passesunzip -t), stops the server (saving the world), backs up its worlds and configs to/var/lib/terraria/backups/<name>/, pinsZIP=, unpacks the zip right away and starts the server again if it was running. If unpacking fails, the instance is left as it was.--no-backupskips the backup.- Going to an older version needs
--downgrade, because worlds saved by a newer version can't be opened by an older one. - Bash completion offers the instance's zips. Works with
--host.
reinstallnow always unpacks the same version again. Before, an instance with a blankZIP=picked the newest zip indist/, soreinstallcould silently upgrade it. It now pins the zip the instance runs first, and refuses if that zip is gone fromdist/. It also keeps the record of the installed version (server/.installed) until the new unpack is done.list,new,importandenablewarn whenTERRARIA_BASEorTERRARIA_DISTis somewhere the services' sandbox doesn't allow (the instances folder not inReadWritePaths=, or either folder under/home), and print the exact drop-in to add. The daemon (terractld.service) is checked too when it's on. A server that can't create its folder now says why in its log, instead of only "Read-only file system".- The guide's "Changing locations" now covers bind mounts (the simplest way to use another disk) as well as drop-ins, and a new section explains keeping instances or zips under
/home. journal-accessis offered by tab completion and listed in the guide's command reference.upgrade, andprepare/runstarted as root, check first that theterrariauser can run the terractl being used. A copy under/rootis refused with an explanation, beforeupgradestops the server, instead of failing withenv: Permission denied.terractlrun by a relative path (e.g.sudo ./bin/terractl prepare <name>from a source tree) no longer fails to switch to theterrariauser.- New
fix-permscommand:sudo terractl fix-perms <name>gives every file of an instance back to theterrariauser and reapplies the usual modes (group can read, others nothing; server binaries executable), e.g. after copying worlds in as root. Symlinks are not followed. Works with--hosttoo. listwarns about zips indist/that theterrariauser can't read (e.g. copied in withscp -pfrom a private file), andinfolists them asunreadable_zip=. A server that fails to install because of one now says how to fix it (sudo chmod 644 <zip>) instead of just "cannot read", and a missing zip is reported as not found.
Downloads
- New