ASA Clustered Server Travel Architecture via Pterodactyl
ARK Survival Ascended clusters are how serious communities run multi map worlds: The Island, Scorched Earth, and Aberration each get their own dedicated server process, and players carry tames, items, and characters between them through obelisk uploads written to a shared ClusterDirOverride. Done correctly inside Pterodactyl, you get isolated CPU and memory budgets per map with a single shared cluster volume mounted into every container.
Prerequisites
- Ubuntu 24.04 with Pterodactyl Panel and Wings installed.
- At least 32 GB RAM and 12 modern CPU cores. ASA wants 12 to 16 GB per map under load.
- UDP 7777 + 7778 (game) and UDP 27015 (query) per map, open at the firewall on non overlapping ports.
- Approximately 60 GB disk per map plus 5 GB for the shared cluster volume.
Step 1: Provision the Shared Cluster Volume
Wings volume mounts are scoped per server, but multiple servers can share a host path if you mark it as an additional mount in the panel.
sudo mkdir -p /srv/asa-clustersudo chown -R pterodactyl:pterodactyl /srv/asa-clustersudo chmod 770 /srv/asa-clusterIn the panel under Admin, Settings, Mounts, create a mount named asa-cluster with source /srv/asa-cluster and target /home/container/cluster. Attach this mount to every ASA server you create.
Step 2: Create the First Map Server (The Island)
Use the official ASA egg. Allocate 14 GB RAM, 400% CPU, and 60 GB disk. Bind ports 7777 (game), 7778 (raw socket), and 27015 (query). Map specific startup variables:
SERVER_MAP: TheIsland_WPSESSION_NAME: Cluster A: The IslandSERVER_PASSWORD: REPLACE_LONG_PASSWORDADMIN_PASSWORD: REPLACE_ADMIN_PASSWORDMAX_PLAYERS: 70CLUSTER_ID: omega-clusterCLUSTER_DIR: /home/container/clusterNO_TRANSFER_FROM_FILTERING: falseStep 3: Container Launch Command (Per Map)
./ArkAscendedServer.sh \ ${SERVER_MAP}?listen?SessionName="${SESSION_NAME}" \ ?ServerPassword=${SERVER_PASSWORD} \ ?ServerAdminPassword=${ADMIN_PASSWORD} \ ?Port=${SERVER_PORT} \ ?QueryPort=${QUERY_PORT} \ ?MaxPlayers=${MAX_PLAYERS} \ -ClusterId=${CLUSTER_ID} \ -ClusterDirOverride=${CLUSTER_DIR} \ -NoTransferFromFiltering \ -UseDynamicConfig -logStep 4: Clone for Scorched Earth and Aberration
Repeat Step 2 with new servers, identical mount and identical CLUSTER_ID, but unique maps and ports.
Cluster A: The Island -> 7777/7778/27015 Map: TheIsland_WPCluster A: Scorched Earth -> 7779/7780/27016 Map: ScorchedEarth_WPCluster A: Aberration -> 7781/7782/27017 Map: Aberration_WPStep 5: Validate the Shared Cluster Volume
# After a player uploads at an obelisk on The Islandls -la /srv/asa-cluster/# Expect to see profile files like:# 76561198000000000.arkprofile# 76561198000000000.arktribe# From inside another container's consolels /home/container/cluster# Same file list, confirming the mount is sharedStep 6: GameUserSettings for Cross Map Transfer Rules
[ServerSettings]NoTributeDownloads=FalsePreventDownloadSurvivors=FalsePreventDownloadItems=FalsePreventDownloadDinos=FalsePreventUploadSurvivors=FalsePreventUploadItems=FalsePreventUploadDinos=FalseCrossARKAllowForeignDinoDownloads=TrueThese flags must be identical on every map. A single map setting PreventDownloadDinos=True will silently block tame transfers from that direction and confuse your community.
Performance and Tuning
- Allocate at least 12 GB RAM per map. ASA OOMs aggressively on dense bases.
- Keep the cluster volume on local NVMe, never on NFS. Profile reads are latency sensitive during obelisk uploads.
- Stagger nightly restarts by 10 minutes per map so player travel does not land on an offline destination.
- Use the same
CLUSTER_IDon every map. A typo creates a second, invisible cluster that holds the missing tames.
Conclusion
A correctly architected ASA cluster gives players the full official progression loop on community hardware. Pterodactyl's mount system is the right primitive for the shared cluster volume, and once the launch arguments line up across maps the travel UX is identical to first party servers.