tModLoader-Web-Managed-Server

tModLoader-Web-Managed-Server

Docker app from Crosis47's Repository

Overview

Independently maintained Terraria tModLoader dedicated server with a web dashboard for worlds, Workshop mods, players, configuration, and backups. Inspired by JACOBSMILE/tmodloader1.4. First startup requires internet access to install the game runtime. Open the container logs for the one-time setup code, then open WebUI and create your administrator credential. The game waits for setup. Manage game settings in the dashboard after setup; saved dashboard settings take precedence over environment defaults. Use dedicated data and backup folders; startup repairs their ownership to UID/GID 1000:1000. Keep the dashboard on a trusted LAN or use an HTTPS reverse proxy. Wiki guides: Dashboard setup: https://github.com/Crosis47/tmodloader/wiki/Web-Dashboard#access-and-credentials Settings ownership: https://github.com/Crosis47/tmodloader/wiki/Configuration#choose-who-manages-settings Networking and proxy access: https://github.com/Crosis47/tmodloader/wiki/Networking-and-Access Storage and updates: https://github.com/Crosis47/tmodloader/wiki/Updates-and-Storage Worlds and Journey mode: https://github.com/Crosis47/tmodloader/wiki/Worlds-and-Playthroughs Mods and Workshop: https://github.com/Crosis47/tmodloader/wiki/Mods-and-Workshop Backups and recovery: https://github.com/Crosis47/tmodloader/wiki/Backups-and-Recovery Autosave and restart schedules: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduling All settings and defaults: https://github.com/Crosis47/tmodloader/wiki/Configuration#defaults-reference Troubleshooting: https://github.com/Crosis47/tmodloader/wiki/Troubleshooting

Unraid deployment

The template was tested by the maintainer on Unraid 7.3.2 in a TrueNAS SCALE 25.10.7 VM. Community Applications submission is still pending; this is not yet a catalog listing.

Template and first run

The template is templates/tmodloader-crosis47.xml. For a manual test, copy it to /boot/config/plugins/dockerMan/templates-user/my-tmodloader-crosis47.xml on the test Unraid host, then select it in Docker > Add Container. Review the generated container configuration before starting.

  1. Use dedicated empty data and backup folders. The defaults are under /mnt/user/appdata/tmodloader-crosis47/. Do not reuse another container's data.
  2. Choose available host ports. Container ports stay at 7777 and 8080; changing the host mapping does not require changing the internal listener variables.
  3. Leave optional game settings at their defaults when using the dashboard. Set the player password in the dashboard after setup; it is separate from the administrator credential. The template defaults to no player password.
  4. Start the container and read its logs for the one-time setup code.
  5. Open WebUI, enter the code, and create the administrator credential. The game waits for this step; first-run runtime installation needs internet access.
  6. Manage worlds, mods, passwords, and schedules in the dashboard. Saved dashboard values override matching environment defaults after the first save.

Startup repairs dedicated volume ownership to UID/GID 1000:1000, then runs the services without root privileges. Do not add PUID/PGID variables or override the container user; this image does not implement the usual Unraid 99:100 convention. Set Settings > Docker > Docker Stop Timeout to 120 seconds. The template also requests a 120-second container stop timeout. This allows the server to save and exit; increase both if a larger mod pack needs more time.

Use HTTP only on a trusted LAN. For a hostname set TMOD_WEB_ORIGIN to the exact browser origin. For an HTTPS reverse proxy also configure TMOD_WEB_TRUSTED_PROXY and the headers documented in the project wiki. Do not directly publish the HTTP dashboard to the internet.

Controls in the Unraid form

The main form contains only the required ports, storage paths and Enable Dashboard. All optional controls are under Show more settings, with their existing defaults preserved.

Template order places all settings that cannot be adjusted in the dashboard before Enable Dashboard: ports and storage, settings ownership/custom config, dashboard access and secret files, then runtime installation and updates. Dashboard-managed controls follow it, grouped by server access, world generation, Workshop mods, autosave, backups, scheduled restarts, runtime/logging and Journey permissions. Unraid controls how advanced fields are displayed when Show more settings is expanded.

With Enable Dashboard set to 1 and Manage game settings with left at web, there is no need to configure the game settings below the toggle. Leave their defaults and manage them in the dashboard. The template exposes 76 environment controls.

The overview includes labeled wiki URLs for setup, settings ownership, networking, storage/updates, worlds, mods, backups, schedules, defaults and troubleshooting. Each individual setting also includes a Wiki URL pointing to its relevant documentation section. In the tested Unraid form, plain-text URLs in Overview are clickable, but URLs in individual setting descriptions are not; copy those URLs into a browser. Keep URLs as plain text; explicit link markup was stripped during testing.

Literal newlines, XML newline entities, and the twice-escaped HTML break found in published ich777 templates did not produce visible line breaks in the tested Unraid form. Field descriptions separate the inline Wiki URL with two vertical bars (||) and four nonbreaking spaces on each side (  entities in the XML). The spacing and double-bar separator were confirmed by the maintainer in Unraid. This does not force the URL onto a separate line.

Manage game settings with selects web (default) or env:

  • web: Unraid game values seed settings not yet saved in the dashboard. Existing dashboard values continue to win when the container is recreated.
  • env: Unraid fields control game settings; dashboard configuration editing is disabled. Populate the intended world, mods and password before switching.
  • Disabling the dashboard always uses environment-managed game settings.

Dropdowns expose supported numeric values where the game expects them. World size: 1 small, 2 medium, 3 large. Difficulty: 0 Classic, 1 Expert, 2 Master, 3 Journey. Journey permissions: 0 locked, 1 host, 2 everyone.

Host port mappings remain the port controls; internal listeners stay at 7777 and 8080. TMOD_HEALTH_START_PERIOD is a Compose substitution, not a container setting; use Docker Extra Parameters --health-start-period if an override is necessary. The image already supplies a 60-second health-check start period.

Optional *_FILE entries require separately added read-only file mappings; setting an environment path does not mount a host file. Custom server configuration also requires a file mapping to /terraria-server/customconfig.txt and env mode or a disabled dashboard. Leave these options empty/off unless deliberately configured. Masked password/token fields conceal input visually; Docker and saved Unraid configuration still contain their values.

The expanded controls passed local default/structure checks, and the maintainer confirmed the final form layout and separators in Unraid. The runtime checks below used the smaller template; expanded env-mode operation remains untested.

Validation

On 2026-10-08, the maintainer confirmed these checks passed on Unraid 7.3.2, virtualized on TrueNAS SCALE 25.10.7 with 4 vCPUs, 8 GiB RAM, a dedicated 64 GiB virtual disk, and a PNY USB boot device with trial activation:

  • Template import and initial container installation.
  • Dashboard administrator setup and game startup.
  • Restart through Unraid, retained administrator access, world and settings.
  • Connection from a tModLoader client.
  • Manual backup creation, archive verification, restoration and client reconnection.

These are user-reported interactive results. Screenshots confirmed the Unraid version, trial activation, device assignment and template field rendering. The exact pulled image digest, installed game version, shutdown timing and volume ownership output were not captured. Local XML parsing and deployment-field checks passed separately.

Additional coverage remains for non-default host ports, Workshop mod downloads, image update/recreation persistence, and reverse-proxy access. Do not interpret the restart check as proof of container replacement or an image upgrade.

Reproducing the test VM

Use an isolated guest with the resources above and disposable worlds. Create a single-device cache pool on the virtual data disk, format it, and start the pool before enabling Docker. The test used a 20 GB Docker vDisk and the default /mnt/user/system/docker/docker.img and /mnt/user/appdata/ paths.

Pass through a dedicated USB device with a unique hardware identifier for Unraid boot and licensing. Unraid does not support TPM licensing inside a VM. Use a valid trial or separate license. Keep VM autostart off during testing.

TrueNAS 25.10 browser consoles use a password-protected SPICE display; VNC does not support browser access. If UEFI initially enters its shell, connect -r and map -r can rescan devices; launch fs0:\EFI\boot\bootx64.efi only if FS0 is the Unraid USB filesystem. Automatic boot after a full VM restart still needs to be checked separately.

Community Applications submission

The root ca_profile.xml describes this project's repository. The root LICENSE contains the standard MIT license with both copyright notices. Third-party component attribution is documented in THIRD_PARTY_NOTICES.md. The template reuses the same hosted PNG icon as the TrueNAS submission: https://media.sys.truenas.net/apps/tmodloader/icons/icon.png Canonical raw URLs point to master and become available only after merging.

Publish the template, then run Validate and Scan in the submission portal and resolve its findings before review. Portal validation and catalog submission remain pending.

References:

Media gallery

Categories

Download Statistics

3,378
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/crosis47/tmodloader:latest
Last Updated2026-10-02
First Seen2026-10-11

Runtime arguments

Web UI
http://[IP]:[PORT:8080]
Network
bridge
Shell
bash
Privileged
false
Extra Params
--stop-timeout=120

Template configuration

Game portPorttcp

Host TCP port players connect to. Keep the container port at 7777.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Networking-and-Access#game-connections

Target
7777
Default
7777
Value
7777
Dashboard portPorttcp

Host dashboard port. Keep the container port at 8080; the WebUI button follows this mapping.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Networking-and-Access#change-the-dashboard-port

Target
8080
Default
8080
Value
8080
Server dataPathrw

Dedicated folder for worlds, mods, runtime, dashboard credentials, settings, and logs. Startup sets ownership to 1000:1000.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Updates-and-Storage#persistent-folders

Target
/data
Default
/mnt/user/appdata/tmodloader-crosis47/data
Value
/mnt/user/appdata/tmodloader-crosis47/data
Backup archivesPathrw

Dedicated backup folder. Preserve this and server data during updates. Startup sets ownership to 1000:1000.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Updates-and-Storage#persistent-folders

Target
/backups
Default
/mnt/user/appdata/tmodloader-crosis47/backups
Value
/mnt/user/appdata/tmodloader-crosis47/backups
Manage game settings withVariable

web: saved dashboard values override Unraid game settings; Unraid values only seed unsaved settings. env: Unraid controls game settings and dashboard configuration editing is disabled. Dashboard disabled always uses env.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#choose-who-manages-settings

Target
TMOD_CONFIG_SOURCE
Default
web|env
Value
web
Use custom server configurationVariable

Yes requires TMOD_CONFIG_SOURCE=env or dashboard disabled, plus a separately added read-only file mapping to /terraria-server/customconfig.txt. Keep its game port at 7777 for this template.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#custom-server-configuration

Target
TMOD_USECONFIGFILE
Default
No|Yes
Value
No
Dashboard originVariable

Leave empty for server-IP access. For a hostname or proxy, enter the exact browser origin including scheme and non-default port.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#web-dashboard

Target
TMOD_WEB_ORIGIN
Trusted proxyVariable

Optional single proxy IP or DNS name as seen by the container. Proxy must overwrite forwarding headers; see networking documentation.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#web-dashboard

Target
TMOD_WEB_TRUSTED_PROXY
Administrator hash fileVariable

WebUI only. Optional container path to an existing Argon2id credential hash file; add a matching read-only file mount. Empty uses first-run setup.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#web-dashboard

Target
TMOD_WEB_TOKEN_FILE
Workshop API key fileVariable

WebUI only. Optional container path to a Steam API key file; add a matching read-only file mount. A key saved in the dashboard takes precedence.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#web-dashboard

Target
TMOD_WORKSHOP_KEY_FILE
Game password fileVariable

Optional path inside the container; add a matching read-only file mount. Saved dashboard passwords override this in web mode.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#change-the-game-password

Target
TMOD_PASS_FILE
Automatic runtime updatesVariable

1 checks and tests runtime updates at startup. 0 retains the installed runtime. First startup always requires a download.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#startup-runtime-updates

Target
TMOD_AUTO_UPDATE
Default
1|0
Value
1
Runtime update channelVariable

Empty follows the image channel; enter stable or preview to override. Applied at container startup.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#startup-runtime-updates

Target
TMOD_UPDATE_CHANNEL
Runtime version pinVariable

Exact supported tModLoader release. Empty follows the selected channel; downgrades require a matching checkpoint.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#startup-runtime-updates

Target
TMOD_UPDATE_VERSION
Update free-space reserve (MiB)Variable

Additional free space beyond three copies of game data required for startup update staging.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#startup-runtime-updates

Target
TMOD_UPDATE_MIN_FREE_MB
Default
1024
Value
1024
Update readiness timeout (seconds)Variable

Maximum wait for the copied-world compatibility test and live startup readiness.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#startup-runtime-updates

Target
TMOD_UPDATE_TEST_TIMEOUT
Default
600
Value
600
GitHub API tokenVariable

Optional narrowly scoped token for release-discovery API rate limits. Not required for ordinary public downloads. Stored in container configuration; not a dashboard setting.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Updates-and-Storage#startup-runtime-updates

Target
TMOD_GITHUB_TOKEN
Enable DashboardVariable

Enabled (1): no need to set any game settings below; leave their defaults and configure them in the dashboard. Keep Manage game settings with set to web (default). Optional deployment settings above are configured in Unraid. Disabled (0): expand Show more settings and configure the game settings in Unraid; administrator setup is skipped.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#web-dashboard

Target
TMOD_WEB_ENABLED
Default
1|0
Value
1
Initial game passwordVariable

Optional player password, separate from the administrator credential. Empty disables it. Saved dashboard password overrides this after setup.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#change-the-game-password

Target
TMOD_PASS
Welcome messageVariable

Message displayed to players when they join the server. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#game-network-and-access

Target
TMOD_MOTD
Default
A tModLoader server powered by Docker!
Value
A tModLoader server powered by Docker!
Maximum playersVariable

Maximum simultaneous players allowed, from 1 to 255. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#game-network-and-access

Target
TMOD_MAXPLAYERS
Default
8
Value
8
Server languageVariable

Language code for server messages, such as en-US. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#game-network-and-access

Target
TMOD_LANGUAGE
Default
en-US
Value
en-US
Additional cheat protectionVariable

0 disables Terraria’s additional cheat checks; 1 enables them. This is not authentication or a firewall. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_SECURE
Default
0|1
Value
0
NPC streaming rangeVariable

Controls NPC streaming to clients, from 0 to 1000. Leave the default unless tuning network behavior. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_NPCSTREAM
Default
60
Value
60
UPnP port mappingVariable

0 disables automatic router port mapping; 1 requests it. Docker port publishing and firewall rules still need host configuration. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_UPNP
Default
0|1
Value
0
World nameVariable

Selects the world file by name. A different name may create a new world if no matching file exists. Do not include path separators. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#world-selection-and-generation

Target
TMOD_WORLDNAME
Default
Docker
Value
Docker
New world sizeVariable

Used only when creating a world: 1 small, 2 medium, 3 large. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#world-selection-and-generation

Target
TMOD_WORLDSIZE
Default
3|1|2
Value
3
New world evilVariable

Random, Corruption, or Crimson. To change evil in the WebUI, choose an unused world name, stage the settings, and apply changes. Apply saves and stops the game, disconnects players, creates the new world, and restarts. Existing worlds are never converted; a matching name loads that world. Custom evil requires a name of at most 26 characters and seed of at most 39 characters. Special seeds and mods may generate both evils or alter generation. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#world-selection-and-generation

Target
TMOD_WORLDEVIL
Default
random|corruption|crimson
Value
random
New world seedVariable

Seed used when generating a new world. Changing it does not regenerate the current world. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#world-selection-and-generation

Target
TMOD_WORLDSEED
Default
Docker
Value
Docker
New world difficultyVariable

Used when creating a world: 0 Classic, 1 Expert, 2 Master, 3 Journey. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#world-selection-and-generation

Target
TMOD_DIFFICULTY
Default
1|0|2|3
Value
1
Selected Workshop entriesVariable

Comma-separated Workshop mod IDs or collection:ID entries. Removing an entry disables it on managed startup but keeps cached downloads. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#mods-and-workshop

Target
TMOD_MODS
Steam offline policyVariable

use-cache allows startup with available cached mods when Steam cannot be reached. strict fails if required update/download checks fail. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#mods-and-workshop

Target
TMOD_MOD_OFFLINE_POLICY
Default
use-cache|strict
Value
use-cache
Collection expansion limitVariable

Maximum items allowed while expanding Workshop collections, from 1 to 1000. Limits unexpectedly large collections. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#mods-and-workshop

Target
TMOD_COLLECTION_MAX_ITEMS
Default
1000
Value
1000
Download attemptsVariable

Maximum attempts for transient Steam Workshop download failures, from 1 to 20. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#mods-and-workshop

Target
TMOD_DOWNLOAD_RETRIES
Default
3
Value
3
Retry delay (seconds)Variable

Time to wait between failed download attempts, from 0 to 600 seconds. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#mods-and-workshop

Target
TMOD_DOWNLOAD_RETRY_DELAY
Default
10
Value
10
Autosave interval (minutes)Variable

Save the live world every N minutes (default: 10). 0 disables scheduled autosaves. Saves update the world in place without disconnecting players; they do not create backup archives. Save the draft, then Apply & Restart to activate a changed interval. The timer resets when the game starts. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_AUTOSAVE_INTERVAL
Default
10
Value
10
Autosave chat announcementVariable

Chat message sent before each scheduled save. Leave empty to save silently. The autosave interval controls the schedule; 0 disables scheduled saves. Save the draft and apply to activate changes. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_AUTOSAVE_MESSAGE
Default
Scheduled world save starting.
Value
Scheduled world save starting.
Backup scheduleVariable

Choose disabled, minutes, every X days, daily, weekly, or monthly. Interval mode preserves the existing backup interval. Cold backups disconnect players, save, archive, and restart the game. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_MODE
Default
interval|disabled|days|daily|weekly|monthly
Value
interval
Backup interval (minutes)Variable

0 disables scheduled backups. 1440 runs approximately every 24 hours. The interval resets on container start or after a manual backup. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_INTERVAL
Default
0
Value
0
Back up every X daysVariable

Used in days mode. Each day is 24 hours. The timer resets on container startup, configuration apply, and after any backup attempt. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_DAYS
Default
7
Value
7
Backup weekdayVariable

Used for weekly backups at the selected backup time and timezone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_WEEKDAY
Default
sunday
Value
sunday
Backup day of monthVariable

Used for monthly backups. Choose 1 through 31; shorter months use their last day. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_MONTHDAY
Default
1
Value
1
Backup timeVariable

Daily, weekly, and monthly backups use this 24-hour HH:MM time. Busy or unhealthy servers defer the backup. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_TIME
Default
03:00
Value
03:00
Backup timezoneVariable

Use UTC or an IANA timezone such as America/New_York. Missing daylight-saving times shift forward; repeated times use their first occurrence. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_TIMEZONE
Default
UTC
Value
UTC
Backups to retainVariable

Number of verified backup bundles to keep for this data directory. Cleanup runs only after a successful backup and restart; recovery originals are not pruned. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_KEEP
Default
7
Value
7
Minimum free space (MiB)Variable

Refuse a backup before stopping the game when /backups has less free space than this threshold. 1024 means 1 GiB. This is not an archive-size estimate; 0 disables the threshold. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#backups-and-autosave

Target
TMOD_BACKUP_MIN_FREE_MB
Default
1024
Value
1024
Restart scheduleVariable

Choose disabled (default), minutes, every X days, daily, weekly, or monthly. Save the draft and apply to activate changes. Busy or unhealthy servers defer the restart until ready. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_MODE
Default
disabled|interval|days|daily|weekly|monthly
Value
disabled
Restart interval (minutes)Variable

Used in interval mode only. 0 disables interval restarts; 1440 is approximately every 24 hours. The timer resets whenever the game starts, including after backups or applying settings. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_INTERVAL
Default
0
Value
0
Restart every X daysVariable

Used in every-X-days mode. Enter 1 through 3650; each day is exactly 24 hours. The timer resets whenever the game starts, including after backups or applying settings. It does not use the calendar time or timezone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_DAYS
Default
7
Value
7
Restart weekdayVariable

Used in weekly mode. Choose the weekday on which the restart warning begins, at the selected time in the selected timezone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_WEEKDAY
Default
sunday
Value
sunday
Restart day of monthVariable

Used in monthly mode. Choose 1 through 31. If a month has fewer days, use its last day: 31 becomes February 28 or 29, for example. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_MONTHDAY
Default
1
Value
1
Restart timeVariable

Used for daily, weekly, and monthly schedules. Enter HH:MM in 24-hour format, such as 04:00, in the restart timezone below. The warning starts at this time; the game stops after the warning delay. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_TIME
Default
04:00
Value
04:00
Restart timezoneVariable

Used for daily, weekly, and monthly schedules. Use UTC or an IANA timezone such as America/New_York. A skipped daylight-saving time shifts forward by the clock-change gap; a repeated time runs at its first occurrence only. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_TIMEZONE
Default
UTC
Value
UTC
Restart warning delay (seconds)Variable

Wait after the scheduled restart announcement before saving and stopping the game. Default: 60; 0 restarts immediately. This delay is separate from the Docker shutdown warning delay. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_DELAY
Default
60
Value
60
Restart countdown warnings (seconds)Variable

Comma-separated remaining times, such as 300,60,10. Warnings longer than the restart delay are skipped. Leave empty to disable countdown chat messages; the initial announcement is controlled separately. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_COUNTDOWN
Default
300,60,10
Value
300,60,10
Restart chat announcementVariable

Chat message sent when a scheduled restart becomes due, before the warning delay. Leave empty to omit the announcement. Players will still disconnect when the game restarts. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#scheduled-restarts

Target
TMOD_RESTART_MESSAGE
Default
Scheduled server restart soon. Please prepare to disconnect.
Value
Scheduled server restart soon. Please prepare to disconnect.
Shutdown announcementVariable

Chat message sent to players when Docker requests a graceful container shutdown. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_SHUTDOWN_MESSAGE
Default
Server is shutting down NOW!
Value
Server is shutting down NOW!
Shutdown warning delay (seconds)Variable

Wait after the shutdown announcement before requesting save-and-exit when Docker stops the container. Default: 3; 0 skips the delay. Keep Docker stop_grace_period longer than this delay plus the graceful shutdown timeout and shutdown overhead. Dashboard restarts and backups use their own stop flow. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it. Keep Unraid Docker Stop Timeout and Extra Parameters --stop-timeout greater than shutdown delay + timeout + overhead (120 seconds by default).    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_SHUTDOWN_DELAY
Default
3
Value
3
Graceful shutdown timeout (seconds)Variable

How long to wait after requesting a save-and-exit before forced termination. Keep Docker’s stop_grace_period longer than this value plus shutdown overhead. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it. Keep Unraid Docker Stop Timeout and Extra Parameters --stop-timeout greater than shutdown delay + timeout + overhead (120 seconds by default).    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_SHUTDOWN_TIMEOUT
Default
90
Value
90
Console verbosityVariable

quiet reduces routine output; normal shows standard output; debug shows detailed output. Complete raw output remains in the persistent console log. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_LOG_LEVEL
Default
normal|quiet|debug
Value
normal
Crash replay linesVariable

Number of raw console lines replayed when the game fails. 0 disables crash replay; debug already shows raw output. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_CRASH_LOG_LINES
Default
200
Value
200
Console history retention (days)Variable

Remove archived console logs older than this many days. Default: 30; 0 disables age-based cleanup. The current and previous console logs and tModLoader own logs are kept. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_LOG_RETENTION_DAYS
Default
30
Value
30
Console history size limit (MiB)Variable

Remove oldest archived console logs until history fits this budget. Default: 512; 0 disables the size limit. Current and previous console logs are separate from this budget. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_LOG_HISTORY_MAX_MB
Default
512
Value
512
Console log rotation size (MiB)Variable

Rotate the current console log at this size so one long server session cannot grow it indefinitely. Default: 64. Cleanup runs at startup, rotation, and periodically while output is received. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_LOG_ROTATE_MB
Default
64
Value
64
Process priorityVariable

Server scheduling priority, from 0 (realtime) to 5 (idle). Lower values request higher priority; container permissions may limit this. Prefer the default unless diagnosing performance. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#runtime-and-diagnostics

Target
TMOD_PRIORITY
Default
1
Value
1
Freeze timeVariable

Who can control freeze time in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SETFROZEN
Default
0|1|2
Value
0
Set time to dawnVariable

Who can control set time to dawn in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SETDAWN
Default
0|1|2
Value
0
Set time to noonVariable

Who can control set time to noon in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SETNOON
Default
0|1|2
Value
0
Set time to duskVariable

Who can control set time to dusk in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SETDUSK
Default
0|1|2
Value
0
Set time to midnightVariable

Who can control set time to midnight in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SETMIDNIGHT
Default
0|1|2
Value
0
God modeVariable

Who can control god mode in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_GODMODE
Default
0|1|2
Value
0
Wind strengthVariable

Who can control wind strength in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_WIND_STRENGTH
Default
0|1|2
Value
0
Rain strengthVariable

Who can control rain strength in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_RAIN_STRENGTH
Default
0|1|2
Value
0
Time speedVariable

Who can control time speed in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_TIME_SPEED
Default
0|1|2
Value
0
Freeze rainVariable

Who can control freeze rain in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_RAIN_FROZEN
Default
0|1|2
Value
0
Freeze windVariable

Who can control freeze wind in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_WIND_FROZEN
Default
0|1|2
Value
0
Extended placement rangeVariable

Who can control extended placement range in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_PLACEMENT_RANGE
Default
0|1|2
Value
0
Adjust difficultyVariable

Who can control adjust difficulty in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SET_DIFFICULTY
Default
0|1|2
Value
0
Biome spreadVariable

Who can control biome spread in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_BIOME_SPREAD
Default
0|1|2
Value
0
Enemy spawn rateVariable

Who can control enemy spawn rate in a Journey world: 0 locked, 1 host only, 2 everyone. In web mode, saved dashboard settings override this value; in env mode, Unraid controls it.    ||    Wiki: https://github.com/Crosis47/tmodloader/wiki/Configuration#journey-permissions

Target
TMOD_JOURNEY_SPAWN_RATE
Default
0|1|2
Value
0