Hosting Guides

Soulmask Dedicated Server Hardware Provisioning via AMP

9 min readDebian 12AMPUnreal
Once your server is online, jump to the Soulmask command and config reference.

Soulmask is one of the heaviest Unreal Engine survival titles to host. A 50 player tribal world easily passes 12 GB resident, the saved game folder grows past 4 GB inside a week of active play, and the Steam update cadence is aggressive. AMP by CubeCoders handles the lifecycle cleanly: it provisions a Soulmask instance over SteamCMD, exposes a scheduled task system for rolling backups, and pipes lifecycle events into Discord through outbound webhooks. This guide builds the full operator surface on Debian 12.

Prerequisites

  • Debian 12 with at least 16 GB RAM and 8 modern CPU cores.
  • A licensed AMP installation (ADS controller already running).
  • UDP 8777 and UDP 27015 open at the firewall.
  • A Discord webhook URL for the operations channel.

Step 1: Create a Soulmask Instance

In ADS, click Create Instance and select the Soulmask module. Name it soulmask-main, allocate 14 GB of memory, and let AMP run SteamCMD on first boot. The initial install pulls roughly 18 GB.

ADS, Performance
Maximum Memory Usage: 14336 MB
CPU Limit (soft): 0 (unlimited)
Process Priority: AboveNormal

Step 2: Server Configuration

ADS, Server Settings
Server Name: Vardoran Tribes
Max Players: 50
World Save Name: world_main
Game Port: 8777
Query Port: 27015
Admin Password: REPLACE_LONG_PASSWORD
PvE/PvP Mode: PvE
EAC Enabled: true

Step 3: Scheduled Rolling Backups

Soulmask's save directory contains both the live world database and an autosave staging folder. Naively zipping the whole tree mid save creates corruption. Use AMP's scheduled task chain to first Send Console Command "saveworld", wait 30 seconds, then archive.

AMP, Scheduled Task (every 4h)
Step 1: Send Console Command
Command: saveworld
Step 2: Wait
Duration: 30s
Step 3: Run Shell Command
Command: tar -C /home/amp/.ampdata/instances/soulmask-main/Soulmask/Saved \
-czf /opt/soulmask/backups/world-$(date +%Y%m%d-%H%M).tar.gz SaveGames
Step 4: Run Shell Command
Command: find /opt/soulmask/backups -type f -mtime +7 -delete

Step 4: Discord Webhook for Lifecycle Events

AMP exposes a trigger system that can fire HTTP requests on instance events (started, stopped, crashed, player joined). Wire each interesting event to a Discord webhook so the operations channel always reflects live server state.

AMP, Triggers
Event: Instance Started
Action: HTTP POST
URL: https://discord.com/api/webhooks/XXXXXXXXXXXXX/YYYYYY
Body: {"content":"Soulmask: instance soulmask-main is ONLINE."}
Event: Instance Crashed
Action: HTTP POST
URL: https://discord.com/api/webhooks/XXXXXXXXXXXXX/YYYYYY
Body: {"content":"@here Soulmask: instance soulmask-main CRASHED, auto restart triggered."}

Step 5: Scheduled Steam Update Window

AMP, Scheduled Task (daily 04:00)
Step 1: Send Console Command "saveworld"
Step 2: Wait 30s
Step 3: Stop Instance
Step 4: Update Application (SteamCMD)
Step 5: Start Instance
Step 6: HTTP POST -> Discord webhook
Body: {"content":"Soulmask: nightly update window complete."}

Performance and Tuning

  • Always run saveworld before any backup or update, the autosave window is not deterministic.
  • Keep at least 30 GB free on the volume that holds backups. The world archives are large and they accumulate fast.
  • Pin the AMP CPU priority to AboveNormal, not RealTime. RealTime starves the AMP web UI itself.

Conclusion

With AMP doing the heavy lifting (instance lifecycle, scheduled save, archive, and update chain, plus Discord visibility), a Soulmask server stops being a fragile single binary and becomes a managed service the operator can actually sleep through.