# ARK: Survival Ascended — panel module

A panel-compatible module for running ARK: Survival Ascended (SA) dedicated
servers on any agent with Docker available.

## What this is

A thin manifest wrapper around `mschnitzer/ark-survival-ascended-server` —
the most actively-maintained community image for ASA on Linux. That image
handles the Proton runtime (ASA has no native Linux server) + SteamCMD +
the Windows binary wrapper.

## First-run flow

1. **Create** the server in the panel (pick `ARK: Survival Ascended` from
   the module picker).
2. Click **Update** on its card → our generic SteamCMD sidecar downloads
   ~18 GB into the instance's `install` volume.
3. Open **Config** → under *Identity*, set the server name and admin
   password. Save.
4. Click **Start**. First map load takes 3–5 minutes — watch the **Console**
   tab; when you see `Server started on port 7777`, it's ready.

## RAM

ASA is a hog. Plan for:

- **12 GB** minimum for `TheIsland_WP` with up to ~30 players
- **16 GB** comfortable
- **24 GB** if you're running a popular community

## Changing maps

Set `SERVER_MAP` in the container env (the mschnitzer image reads it at
boot). Valid values include:

- `TheIsland_WP`
- `TheCenter_WP`
- `ScorchedEarth_WP`
- `Aberration_WP`
- `Extinction_WP`
- `Astraeos_WP`
- `ClubArk_WP`

After changing the map, click **Stop → Start**.

## Using your own image

Replace the `image:` field in `module.yaml` with your Docker image. Keep
the volume mounts (`/home/steam/ASA/AppFiles` and
`/home/steam/ASA/AppFiles/ShooterGame/Saved`) so SteamCMD's output lands
where ASA expects and saves persist across updates.

## Known quirks

- **First start is slow** (3–5 min). This is Proton loading + ARK doing
  its world init. Subsequent starts are ~90 seconds.
- **Windows file locks** — don't run Update while the server is running;
  SteamCMD will conflict with ARK's open file handles.
- **EAC is enabled by default.** If you want to run mods that EAC blocks,
  disable via `-NoBattlEye` in the server args (community image exposes
  an env for this).
