Soulmask Dedicated Server Hardware Provisioning via AMP
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.
Maximum Memory Usage: 14336 MBCPU Limit (soft): 0 (unlimited)Process Priority: AboveNormalStep 2: Server Configuration
Server Name: Vardoran TribesMax Players: 50World Save Name: world_mainGame Port: 8777Query Port: 27015Admin Password: REPLACE_LONG_PASSWORDPvE/PvP Mode: PvEEAC Enabled: trueStep 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.
Step 1: Send Console Command Command: saveworldStep 2: Wait Duration: 30sStep 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 SaveGamesStep 4: Run Shell Command Command: find /opt/soulmask/backups -type f -mtime +7 -deleteStep 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.
Event: Instance StartedAction: HTTP POSTURL: https://discord.com/api/webhooks/XXXXXXXXXXXXX/YYYYYYBody: {"content":"Soulmask: instance soulmask-main is ONLINE."}Event: Instance CrashedAction: HTTP POSTURL: https://discord.com/api/webhooks/XXXXXXXXXXXXX/YYYYYYBody: {"content":"@here Soulmask: instance soulmask-main CRASHED, auto restart triggered."}Step 5: Scheduled Steam Update Window
Step 1: Send Console Command "saveworld"Step 2: Wait 30sStep 3: Stop InstanceStep 4: Update Application (SteamCMD)Step 5: Start InstanceStep 6: HTTP POST -> Discord webhook Body: {"content":"Soulmask: nightly update window complete."}Performance and Tuning
- Always run
saveworldbefore 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.