Files
Inanis_Vault/21-Server Reference/homelab/stacks/ark/ark.md

6.3 KiB

ARK: Survival Evolved Server

Self-hosted ARK: Survival Evolved dedicated server. Map: TheIsland.

Access

  • Game: 192.168.2.114:7777 (LAN / Tailscale)
  • Steam Query: 192.168.2.114:27015
  • RCON: 192.168.2.114:27020 (TCP)

No Tailscale sidecar — ports exposed directly on the host (same pattern as Minecraft).

Containers

Container Image Role
ark_server hermsi/ark-server:latest Game server

Compose File

Path: /ARK_Server/docker-compose.yaml

services:
  ark:
    image: hermsi/ark-server:latest
    container_name: ark_server
    mem_limit: 10g
    ports:
      - "7777:7777/udp"
      - "7778:7778/udp"   # Must be game port +1
      - "27015:27015/udp" # Steam query / server browser
      - "27020:27020/tcp" # RCON
    volumes:
      - /ARK_Server/data:/app
      - /ARK_Server/backups:/home/steam/ARK-Backups
    environment:
      SESSION_NAME: "Inanis ARK"
      SERVER_MAP: TheIsland
      SERVER_PASSWORD: <redacted>
      ADMIN_PASSWORD: <redacted>
      MAX_PLAYERS: 20
      UPDATE_ON_START: "true"
      BACKUP_ON_STOP: "true"
      PRE_UPDATE_BACKUP: "true"
      WARN_ON_STOP: "true"
      ENABLE_CROSSPLAY: "false"
      DISABLE_BATTLEYE: "false"
      GAME_MOD_IDS: "1999447172,1609138312,751991809,1404697612,479929837,1984936918,936959483,1967741708,821530042,924933745,771785590,502202937"
    restart: unless-stopped

Host Directory Setup

Run these once before first boot:

sudo mkdir -p /ARK_Server/data /ARK_Server/backups
sudo chown -R 1000:1000 /ARK_Server

The container runs as the steam user (UID 1000). The chown ensures it can write to the bind-mount volumes.

Data Layout

Path Contents
/ARK_Server/data Server binaries, world saves, config files
/ARK_Server/backups Automatic backups (triggered by BACKUP_ON_STOP)

First boot warning: The server downloads ~30 GB of files from Steam on first startup. This takes a long time. Do not restart the container — just wait.

Server Configuration (Multipliers)

After first boot, edit these two config files directly on the host. They are created by the server on first run.

GameUserSettings.ini

Path: /ARK_Server/data/server/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini

Add/update these values under the [ServerSettings] section:

[ServerSettings]
; Rates — faster and more forgiving, but not trivial
TamingSpeedMultiplier=5.0
HarvestAmountMultiplier=3.0
XPMultiplier=3.0
ResourcesRespawnPeriodMultiplier=0.5

; Survival annoyances — reduced
PlayerCharacterFoodDrainMultiplier=0.5
PlayerCharacterWaterDrainMultiplier=0.5
DinoCharacterFoodDrainMultiplier=0.5

; Inventory QoL
ItemStackSizeMultiplier=2.0

; Loot
SupplyCrateLootQualityMultiplier=1.5

Rationale:

  • 5x taming — vanilla taming is hours-long; 5x is still meaningful but won't eat a whole session
  • 3x harvest/XP — fast enough to feel rewarding, slow enough to preserve the grind loop
  • 0.5x food/water drain — cuts survival micromanagement in half without eliminating it
  • 0.5x resource respawn — resources come back faster so you're not farming across the whole map

Game.ini

Path: /ARK_Server/data/server/ShooterGame/Saved/Config/LinuxServer/Game.ini

Add these values under the [/script/shootergame.shootergamemode] section:

[/script/shootergame.shootergamemode]
; Breeding — fast enough to do in a session
MatingIntervalMultiplier=0.1
EggHatchSpeedMultiplier=10.0
BabyMatureSpeedMultiplier=20.0

; Imprinting — scaled proportionally to maturation speed
; Rule: BabyCuddleIntervalMultiplier ≈ 1 / BabyMatureSpeedMultiplier
; At 20x mature speed, cuddles happen ~every 24 minutes instead of 8 hours
BabyCuddleIntervalMultiplier=0.05
BabyImprintAmountMultiplier=2.0

Rationale:

  • 20x maturation — a large dino that normally takes 5 real-world days now takes ~6 hours
  • 0.05x cuddle interval — keeps the number of cuddles per maturation roughly constant, so full imprinting is still achievable
  • 2x imprint amount — each cuddle gives double imprint credit, reducing the number of cuddles needed for 100%
  • 0.1x mating interval — vanilla mating cooldown is 18 hours; this reduces it to ~2 hours

Restart the server after editing INI files.

RCON Usage

Connect with any RCON client (e.g. RCON Console, mcrcon) to 192.168.2.114:27020 using the admin password.

Useful commands:

SaveWorld                        — Force save
DoExit                           — Clean shutdown
admincheat AllowPlayerToJoinNoCheck <SteamID>  — Whitelist a player
listplayers                      — Show connected players

Manual save before stopping the container:

docker exec ark_server arkmanager rconcmd "SaveWorld"

Mods

See mods.md for the full mod reference and recommended load order.

To enable mods, set GAME_MOD_IDS in the compose file:

GAME_MOD_IDS: "839162288,1999447172,1609138312,..."

Mods are downloaded automatically on container start.

Future Ideas

Event Webhooks (Discord / n8n)

ARK logs all server events to ShooterGame.log. A lightweight log-watcher sidecar container can tail this file and fire webhooks on pattern matches — routing through n8n or directly to Discord.

Detectable events and their log patterns:

Event Log pattern
Server ready Full Startup
Player join joined this ARK
Player leave left this ARK
World save World Saved
Shutdown DoExit

The sidecar would mount /ARK_Server/data/server/ShooterGame/Saved/Logs read-only and POST to an n8n webhook. arkmanager has a native discordWebhookURL config option but it only covers update warnings — the log-watcher approach covers everything.


Notes

  • Uses hermsi/ark-server which wraps arkmanager internally — use docker exec ark_server arkmanager <cmd> for manual operations
  • UPDATE_ON_START: true — pulls the latest server patch on every container start
  • BACKUP_ON_STOP: true + PRE_UPDATE_BACKUP: true — automatic backup before updates and on shutdown
  • Port 7778 is always game port + 1; if you change 7777, update both
  • RAM: 10 GB hard limit. ARK base footprint is ~6-8 GB; mods and a populated server will push toward the cap
  • Storage: allocate 50+ GB for /ARK_Server/data — binaries alone are ~30 GB, save data grows over time