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

171 lines
5.5 KiB
Markdown

# 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`
```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: "" # See mods.md — add IDs here when ready
restart: unless-stopped
```
## Host Directory Setup
Run these once before first boot:
```bash
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:
```ini
[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:
```ini
[/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:
```bash
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:
```yaml
GAME_MOD_IDS: "839162288,1999447172,1609138312,..."
```
Mods are downloaded automatically on container start.
## 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