ARK Survival Evolved Server on Linux

ARK Survival Evolved is a demanding survival game that requires careful server configuration for optimal rendimiento. Esta guía cubre complete installation, configuration of game rules through INI files, mod management using the Workshop, and clústering multiple ARK servers together. ARK is resource-intensive, requiring significant CPU, RAM, and disk space for production implementacións.

Tabla de contenidos

Requisitos del sistema

ARK is exceptionally demanding. Verifica your infrastructure:

  • Ubuntu 20.04 LTS or later (CentOS 7+ also supported)
  • 16GB RAM minimum (32GB recommended for good rendimiento)
  • 100GB+ disk space (SSD strongly recommended)
  • 4+ CPU cores
  • Dedicated server bandwidth
  • Root or sudo access

A single ARK instance can consume 10-20GB of RAM depending on map and player count.

Instalaing SteamCMD and ARK

Instala system dependencies:

sudo apt-get update
sudo apt-get install -y curl wget file bzip2 gzip unzip python3 util-linux ca-certificates binutils bc jq tmux netcat lib32gcc1 lib32stdc++6

Create steam user:

sudo useradd -m -s /bin/bash steam
sudo -u steam mkdir -p /home/steam/steamcmd

Instala SteamCMD:

cd /home/steam/steamcmd
sudo -u steam curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | sudo -u steam tar zxvf -

Verifica SteamCMD:

sudo -u steam /home/steam/steamcmd/steamcmd.sh +quit

Create ARK installation directory:

sudo -u steam mkdir -p /home/steam/ark

Instala ARK using SteamCMD (app ID 376030). This can take 20+ minutes:

sudo -u steam /home/steam/steamcmd/steamcmd.sh \
    +force_install_dir /home/steam/ark \
    +login anonymous \
    +app_update 376030 validate \
    +quit

Verifica la instalación:

ls -la /home/steam/ark/
file /home/steam/ark/ShooterGame/Binaries/Linux/ShooterGameServer

Create data directories:

sudo -u steam mkdir -p /home/steam/ark-data/{SaveGames,Logs,Mods}
sudo -u steam chmod 755 /home/steam/ark-data

Initial Server Configuration

Create startup script:

sudo tee /home/steam/ark/start_server.sh > /dev/null <<'EOF'
#!/bin/bash

ARK_DIR="/home/steam/ark/ShooterGame"
DATA_DIR="/home/steam/ark-data"
MAP="${MAP:-TheIsland}"
SERVER_PORT="${SERVER_PORT:-7777}"
QUERY_PORT="${QUERY_PORT:-27015}"
RCON_PORT="${RCON_PORT:-32330}"
SESSION_NAME="${SESSION_NAME:-ARK Server}"
SERVER_PASSWORD="${SERVER_PASSWORD:-changeme}"
ADMIN_PASSWORD="${ADMIN_PASSWORD:-adminpass}"
MAX_PLAYERS="${MAX_PLAYERS:-70}"

cd "$ARK_DIR"

exec ./Binaries/Linux/ShooterGameServer \
    "${MAP}?listen?SessionName='${SESSION_NAME}'?ServerPassword='${SERVER_PASSWORD}'?AdminPassword='${ADMIN_PASSWORD}'?ServerAdminPassword='${ADMIN_PASSWORD}'?Port=${SERVER_PORT}?QueryPort=${QUERY_PORT}?RCONPort=${RCON_PORT}?MaxPlayers=${MAX_PLAYERS}" \
    -server \
    -log \
    -NoBattlEye \
    2>&1 | tee "$DATA_DIR/Logs/ark_$(date +%Y%m%d).log"
EOF

sudo chmod +x /home/steam/ark/start_server.sh
sudo chown steam:steam /home/steam/ark/start_server.sh

Create configuration template:

mkdir -p /home/steam/ark-data/Config

Game Configuration (GameUserSettings.ini)

The GameUserSettings.ini file controls gameplay mechanics and player experience:

sudo tee /home/steam/ark-data/Config/GameUserSettings.ini > /dev/null <<'EOF'
[/Script/ShooterGame.ShooterGameUserSettings]
ServerPassword=changeme
AdminPassword=adminpass
RCONEnabled=True
RCONPort=32330

[ServerSettings]
SessionName=ARK Server
Port=7777
QueryPort=27015
RCONPort=32330
MultiHome=0.0.0.0
MaxPlayers=70
MaxStructuresInRange=1350
PerPlatformMaxStructuresMultiplier=1.0
OxygenSwimSpeedMultiplier=1.0
ShowMapPlayerLocation=False
AllowThirdPersonPlayer=True
AllowCaveBuildingPvE=False
DisablePvEGripWeapons=False
AllowUnlimitedRespecs=False
AllowFlyerCarryPvE=True
AllowCryopodFallIntoGeometryBugFix=True

[SessionSettings]
SessionName=ARK Server
ServerPassword=changeme
AdminPassword=adminpass
RCONEnabled=True
RCONPort=32330

[GameMode]
DifficultyOffset=1.0
OverrideMaxExperiencePoints=800000
GlobalVoiceChat=true
ProximityChat=false
NoTribeLog=false
AllowCaveBuildingPvE=false

[Rules]
PvEStructureDecay=true
PvPDinoDecay=true
RandomSupplyCrateIntervals=true
PreventStructurePaintingPvE=false
PreventTribeAlliances=false
MaxTamingSpeed=1.0
MaxBreedingSpeed=1.0
MaxVelocityDinosaur=1.0
WildDinoCharacterFoodDrainMultiplier=1.0
TamedDinoCharacterFoodDrainMultiplier=0.1
PlayerCharacterWaterDrainMultiplier=1.0
PlayerCharacterFoodDrainMultiplier=1.0

[Multipliers]
StructurePickupTimeAfterPlacementMultiplier=1.0
TamedDinoDamageMultiplier=1.0
PlayerDamageMultiplier=1.0
WildDinoDamageMultiplier=1.0
XPMultiplier=1.0
TamingSpeedMultiplier=1.0
HarvestAmountMultiplier=1.0
ResourcesRespawnPeriodMultiplier=1.0
EggHatchSpeedMultiplier=1.0
BabyMatureSpeedMultiplier=1.0
SupplyCrateLootMultiplier=1.0
KillXPMultiplier=1.0
HarvestXPMultiplier=1.0
CraftXPMultiplier=1.0
GenericXPMultiplier=1.0
SpecialXPMultiplier=1.0

[NonPlayerCharacter]
MatingIntervalMultiplier=1.0
EggIncubationSpeedMultiplier=1.0
BabyFoodConsumptionSpeedMultiplier=1.0
BabyMatureSpeedMultiplier=1.0
BabyImprintAmountMultiplier=1.0
BabyImprintingStatScaleMultiplier=1.0
BabyCuddleIntervalMultiplier=1.0
BabyCuddleLossImprintQualitySpeedMultiplier=1.0
BabyCuddleGracePeriodMultiplier=1.0
BabyCuddleThreshold=0.15
BabyPhaseOneMovementSpeedMultiplier=1.0
BabyPhaseTwoMovementSpeedMultiplier=1.0

[Map]
AllowNetworkTravel=true
AllowCryo=true
AllowHLNA=true
AllowGenesis1=true
AllowGenesis2=true
AllowCrystalIsles=true
AllowFjordur=true
EOF

sudo chown steam:steam /home/steam/ark-data/Config/GameUserSettings.ini

Configuración avanzada (Game.ini)

The Game.ini file contains advanced gameplay adjustments and hidden settings:

sudo tee /home/steam/ark-data/Config/Game.ini > /dev/null <<'EOF'
[/Script/ShooterGame.ShooterGameMode]
bPvEAllowStructuresAtSupplyDrops=False
bPvEDisableFriendlyFire=True
bEnableStructurePreservation=True
bAllowFlyerCarryPvE=True
bAllowCaveBuildingPvE=False
bDisablePvEGripWeapons=False
bAllowUnlimitedRespecs=False
DestroyTamesOverLevelClamp=True

[/Script/ShooterGame.ShooterCharacter]
MaxCharacterLevel=150
CharacterLevelUpDinoTamingMultiplier=0.5
bUseMultiplayerCharacterConfig=True
PlayerCharacterHealthRecoveryMultiplier=1.0
TamedDinoClassDamageMultiplier=1.0

[/Script/ShooterGame.ShooterGameState]
GlobalNonPvPSupplyDropLootQualityMultiplier=1.0
GlobalPvPSupplyDropLootQualityMultiplier=1.0
GlobalCorpseLootQualityMultiplier=1.0

[/Script/ShooterGame.Dino_Character_BP_C]
MatingSpeedMultiplier=1.0
LayEggIntervalMultiplier=1.0
EggHatchSpeedMultiplier=1.0
BabyMatureSpeedMultiplier=1.0
BabyImprintingStatScaleMultiplier=1.0

[/Script/Engine.World]
TimeDilation=1.0

[/Script/ShooterGame.ShooterPlayerController]
bUseMultiplayerCharacterConfig=True
bEnableScreenshotMode=True
bDisableStructurePlacementCollision=False

[/Script/ShooterGame.ShooterWeapon]
WeaponClipAmmoMultiplier=1.0
bInfiniteAmmo=False

[/Script/ShooterGame.ShooterPawn_Character]
CharacterStaminaDrainMultiplier=1.0
CharacterStaminaRecoveryMultiplier=1.0
CharacterHealthRecoveryMultiplier=1.0
CharacterFoodDrainMultiplier=1.0
CharacterWaterDrainMultiplier=1.0
CharacterOxygenDrainMultiplier=1.0
PlayerCharacterDamageMultiplier=1.0

[/Script/ShooterGame.FortressZoneVolume]
bDisableFly=False
bDisableWalk=False
bDisableSwim=False
bDisableDive=False
bDisableClimb=False
bDisableGlide=False
bEnableLogicalOR=False
EOF

sudo chown steam:steam /home/steam/ark-data/Config/Game.ini

Mod Management

ARK supports mods through Steam Workshop. Create mod installation script:

sudo tee /home/steam/install_ark_mods.sh > /dev/null <<'EOF'
#!/bin/bash

MOD_IDS="${@:-571698317 731604991}"
STEAM_DIR="/home/steam/steamcmd"
MOD_DIR="/home/steam/ark/ShooterGame/Content/Mods"

mkdir -p "$MOD_DIR"

# Install each mod
for MOD_ID in $MOD_IDS; do
    echo "Installing mod: $MOD_ID"
    
    /home/steam/steamcmd/steamcmd.sh \
        +force_install_dir /home/steam/ark \
        +login anonymous \
        +workshop_download_item 346110 "$MOD_ID" \
        +quit
    
    # Copy to mods directory
    if [ -d "/home/steam/ark/steamapps/workshop/content/346110/$MOD_ID" ]; then
        cp -r "/home/steam/ark/steamapps/workshop/content/346110/$MOD_ID" "$MOD_DIR/"
        echo "✓ Mod $MOD_ID installed"
    else
        echo "✗ Failed to install mod $MOD_ID"
    fi
done

# List installed mods
echo ""
echo "Installed mods:"
ls -lah "$MOD_DIR"
EOF

sudo chmod +x /home/steam/install_ark_mods.sh
sudo chown steam:steam /home/steam/install_ark_mods.sh

Popular ARK mod IDs:

# 571698317 - Structures Plus (S+)
# 731604991 - Awesome Spyglass!
# 793605978 - HG Stacking Mod 50
# 761519966 - Pugnacia Dinos
# 1249532040 - Classic Flyers

# Install multiple mods:
sudo -u steam /home/steam/install_ark_mods.sh 571698317 731604991 793605978

Enable mods in startup script by adding ModIds parameter to server launch.

Clustering Multiple ARK Servers

Run multiple ARK maps on the same server with a clúster setup:

sudo tee /home/steam/ark/start_cluster.sh > /dev/null <<'EOF'
#!/bin/bash

# Cluster configuration
CLUSTER_DIR="/home/steam/ark-cluster"
MAP_CONFIGS=(
    "TheIsland:7777:27015:32330"
    "ScorchedEarth:7778:27016:32331"
    "Aberration:7779:27017:32332"
)

mkdir -p "$CLUSTER_DIR"

for CONFIG in "${MAP_CONFIGS[@]}"; do
    IFS=':' read -r MAP_NAME PORT QUERY RCON <<< "$CONFIG"
    
    echo "Starting $MAP_NAME on port $PORT..."
    
    export SERVER_PORT=$PORT
    export QUERY_PORT=$QUERY
    export RCON_PORT=$RCON
    export MAP=$MAP_NAME
    
    /home/steam/ark/start_server.sh &
    sleep 10
done

# Wait for all processes
wait
EOF

sudo chmod +x /home/steam/ark/start_cluster.sh

Configuración de puertos

ARK uses multiple ports per server instance:

# Server port (game traffic)
GAME_PORT=7777 (UDP)

# Query port (server queries)
QUERY_PORT=27015 (UDP)

# RCON port (remote console)
RCON_PORT=32330 (TCP)

# Configure UFW
sudo ufw allow 7777/udp
sudo ufw allow 7778/udp
sudo ufw allow 7779/udp
sudo ufw allow 27015/udp
sudo ufw allow 27016/udp
sudo ufw allow 27017/udp
sudo ufw allow 32330/tcp
sudo ufw allow 32331/tcp
sudo ufw allow 32332/tcp

# Verify
sudo ufw status numbered

Ejecución con Systemd

Create servicio systemd:

sudo tee /etc/systemd/system/ark.service > /dev/null <<'EOF'
[Unit]
Description=ARK Survival Evolved Server
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/ark
EnvironmentFile=/home/steam/ark/server.env

ExecStart=/home/steam/ark/start_server.sh

Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=journal

# Resource limits (critical for ARK)
LimitNOFILE=65536
LimitNPROC=32768
MemoryMax=28G

# Security
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/home/steam/ark-data

[Install]
WantedBy=multi-user.target
EOF

Create environment file:

sudo tee /home/steam/ark/server.env > /dev/null <<'EOF'
MAP=TheIsland
SERVER_PORT=7777
QUERY_PORT=27015
RCON_PORT=32330
SESSION_NAME=ARK Server
SERVER_PASSWORD=changeme
ADMIN_PASSWORD=adminpass
MAX_PLAYERS=70
EOF

sudo chown steam:steam /home/steam/ark/server.env
sudo chmod 600 /home/steam/ark/server.env

Enable and start:

sudo systemctl daemon-reload
sudo systemctl enable ark.service
sudo systemctl start ark.service
sudo systemctl status ark.service

Monitor logs:

sudo journalctl -u ark.service -f

Optimización del rendimiento

ARK is CPU-intensive. Apply these optimizations:

# Increase file descriptors
sudo sysctl -w fs.file-max=2097152
echo "fs.file-max=2097152" | sudo tee -a /etc/sysctl.conf

# Network tuning
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.wmem_max=134217728
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 134217728"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 134217728"

# UDP buffer optimization
sudo sysctl -w net.core.rmem_default=131072
sudo sysctl -w net.core.wmem_default=131072

Enable CPU affinity in start script:

# Get PID and pin to cores 0-7
PID=$(pgrep -f ShooterGameServer)
taskset -p -c 0-7 $PID

Monitor resource usage:

# Monitor in real-time
watch -n 1 'ps aux | grep ShooterGameServer | grep -v grep'
htop -p $(pgrep -f ShooterGameServer)

# Memory and CPU
ps -o pid,vsz,rss,pcpu,pmem,comm $(pgrep -f ShooterGameServer)

# Network I/O
iftop -i eth0 -n

Copia de seguridad y recuperación

Implement daily copia de seguridads:

sudo tee /home/steam/backup_ark.sh > /dev/null <<'EOF'
#!/bin/bash

DATA_DIR="/home/steam/ark-data"
BACKUP_DIR="$DATA_DIR/backups"
RETENTION_DAYS=30
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

# Backup save data
tar -czf "$BACKUP_DIR/ark_backup_${TIMESTAMP}.tar.gz" \
    -C "$DATA_DIR" SaveGames/ \
    2>/dev/null

if [ $? -eq 0 ]; then
    echo "[$(date)] Backup completed: ark_backup_${TIMESTAMP}.tar.gz"
else
    echo "[$(date)] Backup failed!" >&2
    exit 1
fi

# Cleanup old backups
find "$BACKUP_DIR" -name "ark_backup_*.tar.gz" -mtime +${RETENTION_DAYS} -delete
EOF

sudo chmod +x /home/steam/backup_ark.sh
sudo -u steam crontab -e

Add to crontab:

0 3 * * * /home/steam/backup_ark.sh >> /home/steam/ark-data/Logs/backup.log 2>&1

Supervisión

Create monitoreo script:

sudo tee /home/steam/monitor_ark.sh > /dev/null <<'EOF'
#!/bin/bash

echo "=== ARK Server Status ==="
echo ""

# Process check
if pgrep -f ShooterGameServer > /dev/null; then
    echo "✓ ARK server is running"
    
    # Get memory usage
    MEM=$(ps aux | grep ShooterGameServer | grep -v grep | awk '{print $6}')
    echo "Memory usage: ${MEM}KB"
    
    # Get CPU percentage
    CPU=$(ps aux | grep ShooterGameServer | grep -v grep | awk '{print $3}')
    echo "CPU usage: ${CPU}%"
else
    echo "✗ ARK server is NOT running"
fi

# Port check
echo ""
echo "Port status:"
netstat -tulnp 2>/dev/null | grep -E "7777|27015|32330" || echo "Ports not listening"

# Disk space
echo ""
echo "Disk space:"
df -h /home/steam/ark-data | awk 'NR==2 {printf "Used: %s / %s (%s)\n", $3, $2, $5}'

# Recent errors
echo ""
echo "Recent errors (last 10):"
tail -20 /home/steam/ark-data/Logs/ark_*.log 2>/dev/null | grep -i "error\|fatal" | tail -10 || echo "No errors found"
EOF

sudo chmod +x /home/steam/monitor_ark.sh

Run monitoreo:

/home/steam/monitor_ark.sh
watch -n 5 '/home/steam/monitor_ark.sh'

Conclusión

You now have a fully configured ARK Survival Evolved server with advanced configuration, mod support, and clústering capabilities. ARK demands significant resources, but proper configuration ensures stable, enjoyable multiplayer gameplay.

Key points:

  • ARK requires substantial RAM and CPU - monitor resource usage closely
  • Configura GameUserSettings.ini for gameplay balance
  • Use Game.ini for advanced tweaks
  • Implement automated copia de seguridads immediately
  • Monitor logs regularly for rendimiento issues
  • Update the server and mods regularly
  • Test configuration changes on a test server first

A well-maintained ARK server can serve hundreds of hours of gameplay for your player community.