Soulmask: Complete Dedicated Server Setup
Comprehensive guide to setting up, configuring, and managing a Soulmask dedicated server for tribal multiplayer gameplay and community building.
System Requirements
Minimum Requirements
- CPU: Intel Core i5-8400 or AMD Ryzen 5 2600
- RAM: 12GB DDR4
- Storage: 25GB available space (SSD recommended)
- Network: 15 Mbps upload for 20 players
- OS: Windows 10/11 (64-bit) or Ubuntu 20.04+
Recommended Requirements
- CPU: Intel Core i7-9700K or AMD Ryzen 7 3700X
- RAM: 16GB DDR4
- Storage: 50GB NVMe SSD storage
- Network: 50 Mbps upload for 50+ players
- OS: Windows 11 or Ubuntu 22.04 LTS
Installation Process
Step 1: SteamCMD Installation
# Ubuntu/Debian Installation
sudo apt update && sudo apt install steamcmd
# CentOS/RHEL Installation
sudo yum install steamcmd
# Create dedicated server user
sudo useradd -m -s /bin/bash soulmask
sudo usermod -aG sudo soulmask
# Switch to server user
sudo -u soulmask -i
# Create installation directory
mkdir /home/soulmask/server
cd /home/soulmask/server
Step 2: Download Server Files
# Download Soulmask server using SteamCMD
steamcmd +login anonymous +app_update 2978680 validate +quit
# Create essential directories
mkdir saves logs mods configs
# Set proper permissions
chmod +x SoulmaskServer.sh
chmod +x SoulmaskServer.x86_64
# Verify installation
ls -la
# Should show SoulmaskServer executable and server files
Step 3: Initial Configuration
Create main configuration file ServerConfig.ini:
[ServerSettings]
# Basic Server Information
ServerName = "Tribal Adventures Server"
ServerPassword = ""
ServerDescription = "Join our tribal community for epic adventures!"
MaxPlayers = 40
Port = 8777
QueryPort = 27015
# Network Configuration
BindIP = "0.0.0.0"
AutoSaveInterval = 600
NetworkUpdateRate = 30
MaxBandwidthPerClient = 50000
[Gameplay]
# World Generation
WorldSize = Large
WorldSeed = 12345678
BiomeDistribution = Balanced
TerrainComplexity = Medium
# Game Balance
Difficulty = Normal
XPMultiplier = 1.0
GatherMultiplier = 1.0
TamingMultiplier = 1.0
CraftingSpeed = 1.0
# PvP Settings
PvP = true
FriendlyFire = false
SiegeDamage = true
StructureDecay = true
[Performance]
# Server Performance
MaxFPS = 60
MaxStructures = 5000
MaxDroppedItems = 1000
CorpseDecayTime = 300
ViewDistance = 3000
[Security]
# Access Control
WhitelistEnabled = false
AdminPassword = "your_secure_admin_password"
RconEnabled = true
RconPort = 27016
RconPassword = "your_rcon_password"
[Moderation]
# Server Rules
ProfanityFilter = true
AutoKickIdleTime = 1800
BanThreshold = 5
BanDuration = 86400
Advanced Configuration
Tribal System Settings
[TribalSystem]
# Tribe Configuration
MaxTribeSize = 20
MaxAlliances = 5
TribeCreationCost = 1000
AllianceFormationCost = 500
# Territory Control
TerritoryMarkerCost = 100
MaxTerritoriesPerTribe = 10
TerritoryUpkeepCost = 50
TerritoryCaptureTime = 300
# Diplomacy
TreatyNegotiationTime = 600
AllianceBenefitsEnabled = true
TribalWarfareEnabled = true
NeutralTerritories = false
Economy Settings
[Economy]
# Resource System
ResourceRespawnTime = 300
RareResourceChance = 0.1
MaxResourceNodes = 100
GatherRangeBonus = 1.5
# Trading System
GlobalMarketEnabled = true
TradeTaxRate = 0.05
PlayerShopsEnabled = true
CaravanSystemEnabled = true
# Currency System
StartingCurrency = 100
CurrencyDropRate = 1.0
BankSystemEnabled = true
LoanSystemEnabled = false
Server Launch Scripts
Linux Startup Script
#!/bin/bash
# start_soulmask.sh
# Configuration
SERVER_DIR="/home/soulmask/server"
STEAM_DIR="$HOME/Steam"
APP_ID="2978680"
CONFIG_FILE="ServerConfig.ini"
# Function to check if server is running
is_server_running() {
pgrep -f "SoulmaskServer" > /dev/null
return $?
}
# Function to start server
start_server() {
echo "Starting Soulmask server..."
cd "$SERVER_DIR"
# Update server if needed
echo "Checking for updates..."
"$STEAM_DIR/steamcmd.sh" +login anonymous +app_update $APP_ID +quit
# Start server with configuration
./SoulmaskServer.sh -config "$CONFIG_FILE" -log
echo "Server started successfully"
}
# Function to stop server
stop_server() {
echo "Stopping Soulmask server..."
if is_server_running; then
# Graceful shutdown
echo "shutdown 60" | nc localhost 27016 2>/dev/null
sleep 60
# Force kill if still running
if is_server_running; then
pkill -f "SoulmaskServer"
sleep 10
fi
echo "Server stopped"
else
echo "Server is not running"
fi
}
# Function to restart server
restart_server() {
echo "Restarting Soulmask server..."
stop_server
sleep 5
start_server
}
# Function to show status
show_status() {
if is_server_running; then
echo "Server is running (PID: $(pgrep -f "SoulmaskServer"))"
echo "Memory usage: $(ps -p $(pgrep -f "SoulmaskServer") -o pid,vsz,rss,pcpu,pmem --no-headers)"
else
echo "Server is not running"
fi
}
# Main script logic
case "$1" in
start)
start_server
;;
stop)
stop_server
;;
restart)
restart_server
;;
status)
show_status
;;
update)
echo "Updating Soulmask server..."
stop_server
"$STEAM_DIR/steamcmd.sh" +login anonymous +app_update $APP_ID validate +quit
start_server
;;
*)
echo "Usage: $0 {start|stop|restart|status|update}"
exit 1
;;
esac
Windows Batch File
@echo off
REM start_soulmask.bat
SET SERVER_DIR="C:\Soulmask\Server"
SET STEAM_DIR="C:\Program Files (x86)\Steam"
SET APP_ID=2978680
SET CONFIG_FILE=ServerConfig.ini
:menu
echo Soulmask Server Manager
echo 1. Start Server
echo 2. Stop Server
echo 3. Restart Server
echo 4. Update Server
echo 5. Check Status
echo 6. Exit
set /p choice="Enter your choice (1-6): "
if "%choice%"=="1" goto start
if "%choice%"=="2" goto stop
if "%choice%"=="3" goto restart
if "%choice%"=="4" goto update
if "%choice%"=="5" goto status
if "%choice%"=="6" goto end
:start
echo Starting Soulmask server...
cd /d "%SERVER_DIR%"
"%STEAM_DIR%\steamcmd.exe" +login anonymous +app_update %APP_ID% +quit
start "" /B SoulmaskServer.exe -config %CONFIG_FILE% -log
echo Server started!
timeout /t 5 >nul
goto menu
:stop
echo Stopping Soulmask server...
taskkill /f /im "SoulmaskServer.exe" >nul 2>&1
echo Server stopped!
timeout /t 3 >nul
goto menu
:restart
echo Restarting Soulmask server...
call :stop
timeout /t 5 >nul
call :start
goto menu
:update
echo Updating Soulmask server...
taskkill /f /im "SoulmaskServer.exe" >nul 2>&1
"%STEAM_DIR%\steamcmd.exe" +login anonymous +app_update %APP_ID% validate +quit
echo Update completed!
goto menu
:status
tasklist /fi "imagename eq SoulmaskServer.exe" 2>nul | find /i "SoulmaskServer.exe" >nul
if %errorlevel% equ 0 (
echo Server is running
) else (
echo Server is not running
)
timeout /t 3 >nul
goto menu
:end
exit
Systemd Service (Linux)
Service Configuration
# Create systemd service file
sudo nano /etc/systemd/system/soulmask.service
[Unit]
Description=Soulmask Dedicated Server
After=network.target
[Service]
Type=simple
User=soulmask
Group=soulmask
WorkingDirectory=/home/soulmask/server
ExecStart=/home/soulmask/server/SoulmaskServer.x86_64 -config ServerConfig.ini -log
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutStopSec=30
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=soulmask
# Security settings
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/home/soulmask/server
[Install]
WantedBy=multi-user.target
Service Management
# Reload systemd to recognize new service
sudo systemctl daemon-reload
# Enable automatic startup on boot
sudo systemctl enable soulmask
# Start the service
sudo systemctl start soulmask
# Check service status
sudo systemctl status soulmask
# View live logs
sudo journalctl -u soulmask -f
# Stop the service
sudo systemctl stop soulmask
# Restart the service
sudo systemctl restart soulmask
# Check boot configuration
sudo systemctl list-unit-files | grep soulmask
Network and Firewall
Port Configuration
Required Ports
- Game Port (TCP+UDP): 8777 (default) - Player connections
- Query Port (UDP): 27015 - Server browser queries
- RCON Port (TCP): 27016 - Remote administration
Optional Ports
- Web Interface (TCP): 8080 - Web admin panel
- Mod Server (TCP): 27017 - Mod distribution
Firewall Configuration
# Ubuntu/Debian (UFW)
sudo ufw allow 8777/tcp comment "Soulmask Game Port TCP"
sudo ufw allow 8777/udp comment "Soulmask Game Port UDP"
sudo ufw allow 27015/udp comment "Soulmask Query Port"
sudo ufw allow 27016/tcp comment "Soulmask RCON Port"
sudo ufw reload
# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=8777/tcp --add-port=8777/udp --add-port=27015/udp --add-port=27016/tcp
sudo firewall-cmd --reload
# iptables (direct)
sudo iptables -A INPUT -p tcp --dport 8777 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 8777 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27016 -j ACCEPT
sudo iptables-save
# Windows Firewall (PowerShell as Administrator)
New-NetFirewallRule -DisplayName "Soulmask Game TCP" -Direction Inbound -Protocol TCP -LocalPort 8777 -Action Allow
New-NetFirewallRule -DisplayName "Soulmask Game UDP" -Direction Inbound -Protocol UDP -LocalPort 8777 -Action Allow
New-NetFirewallRule -DisplayName "Soulmask Query" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "Soulmask RCON" -Direction Inbound -Protocol TCP -LocalPort 27016 -Action Allow
Administration and Monitoring
RCON Setup
# Enable RCON in ServerConfig.ini
[RCON]
Enabled = true
Port = 27016
Password = "your_secure_rcon_password"
AllowedIPs = "127.0.0.1,your_admin_ip"
# Using rcon-cli for administration
npm install -g rcon-cli
# Connect to server
rcon-cli -H localhost -p 27016 -P your_rcon_password
# Common RCON commands
save # Force save world
shutdown 300 # Shutdown in 5 minutes
kick player_name # Kick player
ban player_name 3600 # Ban player for 1 hour
list # List connected players
status # Server status
info # Server information
Web Admin Panel
# Install web admin (optional)
# Download web interface files
cd /home/soulmask/server
wget https://github.com/soulmask/web-admin/archive/refs/heads/main.zip
unzip main.zip -d web-admin/
# Configure web admin in ServerConfig.ini
[WebAdmin]
Enabled = true
Port = 8080
Username = "admin"
Password = "your_web_password"
AllowedIPs = "127.0.0.1,your_admin_ip"
# Access web admin
# URL: http://your_server_ip:8080
# Login with configured credentials
Mod Support
Installing Mods
# Create mods directory
mkdir -p /home/soulmask/server/mods
# Download mods from Steam Workshop or direct URLs
# Example: Tribal Wars mod
cd /home/soulmask/server/mods
wget https://example-mods.com/tribal-wars.zip
unzip tribal-wars.zip
# Configure mods in ServerConfig.ini
[Mods]
Enabled = true
ModDirectory = "mods"
RequiredMods = "tribal-wars,enhanced-ui"
OptionalMods = "custom-sounds,extra-items"
WorkshopMods = "workshopid1,workshopid2"
ModValidation = true
# Restart server to load mods
systemctl restart soulmask
Popular Mod Categories
- Gameplay Enhancements: New mechanics and features
- Tribal Systems: Enhanced tribe management
- Building Materials: New construction options
- Creatures & Wildlife: New animals and enemies
- UI Improvements: Better interface and menus
- Administrative Tools: Enhanced server management
Performance Optimization
Linux Performance Tuning
# Create performance configuration file
sudo nano /etc/sysctl.d/99-soulmask.conf
# Add network optimizations
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.udp_mem = 8388608
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192
# Apply changes
sudo sysctl -p
# Set CPU governor to performance mode
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Optimize server process priority
# Add to startup script
renice -n -5 $(pgrep SoulmaskServer)
Configuration Optimization
[Performance]
# Network optimizations
NetworkUpdateRate = 60
MaxBandwidthPerClient = 100000
CompressionLevel = 6
TimeoutDuration = 30
# Server performance
MaxFPS = 60
ViewDistance = 2000
LODDistance = 1500
MaxNPCs = 500
MaxConcurrentConnections = 100
# Memory management
MaxMemoryUsage = 8192
GarbageCollectionInterval = 300
AssetPreloading = true
TextureStreaming = false
[Advanced]
# Optimizations for large servers
Multithreading = true
WorkerThreads = 8
AsyncSaving = true
DatabaseCaching = true
PrefabPoolSize = 1000
Troubleshooting
Common Issues
❌ Server Not Starting
Check configuration file syntax, verify permissions, and ensure required ports are available.
- Validate ServerConfig.ini with JSON validator
- Check file permissions: chown -R soulmask:soulmask
- Verify no other service using ports 8777/27015
❌ Players Cannot Connect
Check firewall settings, network connectivity, and server visibility.
- Open ports 8777/TCP+UDP and 27015/UDP
- Verify server is bound to 0.0.0.0
- Check router port forwarding if behind NAT
❌ High Memory Usage
Reduce player count, optimize configuration, or increase server RAM.
- Lower MaxPlayers and ViewDistance settings
- Enable database caching and compression
- Monitor with top or htop for memory leaks
❌ Server Crashes
Check logs for errors, update server software, and verify mod compatibility.
- Review logs in /home/soulmask/server/logs/
- Update to latest server version
- Disable mods one by one to identify conflicts
Backup and Recovery
Automated Backup Script
#!/bin/bash
# soulmask_backup.sh
SERVER_DIR="/home/soulmask/server"
BACKUP_DIR="/home/backups/soulmask"
DATE=$(date +%Y%m%d_%H%M%S)
MAX_BACKUPS=7
mkdir -p "$BACKUP_DIR"
# Create backup
echo "save" | rcon-cli -H localhost -p 27016 -P your_rcon_password
sleep 5
tar -czf "$BACKUP_DIR/soulmask_backup_$DATE.tar.gz" \
-C "$SERVER_DIR" saves/ configs/ mods/
# Clean old backups
ls -t "$BACKUP_DIR"/soulmask_backup_*.tar.gz | tail -n +$((MAX_BACKUPS + 1)) | xargs -r rm
echo "Backup completed: soulmask_backup_$DATE.tar.gz"
Pro Tip: Always test your server with a few players before opening to the public to ensure configuration and performance are optimal.