Skip to content

Terraform module for Ark Survival Ascended (ASA) Server Infrastructure on AWS

License

Notifications You must be signed in to change notification settings

TheSudoYT/terraform-aws-ark-survival-ascended

Repository files navigation

ark-aws-ascended-infra

Ark Survival Ascended (ASA) Server Infrastructure Terraform module.

Donate

I do this in my free time. Consider donating to keep the project going and motivate me to maintain the repo, add new features, etc :)

Support on Patreon

Support on Patreon

Support on By Me A Coffee

Support on BuyMeACoffee

Subscribe

Subscribe on YouTube

About

This module allows you to quickly deploy an Ark Survival Ascended server on AWS. Ark will run using GloriousEggroll Proton. A desired version of GE Proton can be chosen using the ge_proton_version input.

Key Features

  • Ark SA running on Ubuntu with GE Proton
  • The ability to use an existing GameUserSettings.ini and Game.ini
  • Most GameUserSettings.ini settings are configurable inputs for creating a brand new configuration
  • Ability to store backups in S3 at a defined interval
  • Ability to add mods
  • Ability to start from existing save data

Supported Maps

Map Name Systemd Service Name
The Island ark-island

Planned Features Roadmap

Feature Target Date
Replace stand alone EC2 instance with Autoscaling group Feb 2024
Parametrize Game.ini options Feb 2024
Configurable Restart interval Feb 2024
Allow users to define which map to use Feb 2024
Allow users to launch a cluster of multiple maps March 2024
Make compute stateless. Store data external from compute via RDS and EFS Sometime 2024 ( I don't even know if this is possible )
AWS SSM Support for SSH March 2024

How to Use

Prerequisites

You must have the following to use this Terraform module:

Usage

  1. Create a file named main.tf
  2. Add the following as a minimum. See all available inputs in the "Inputs" section of this README. Inputs not defined will use their default values.
module "ark-survival-ascended" {
  source  = "TheSudoYT/ark-survival-ascended/aws"

  ge_proton_version = "8-27"
  instance_type     = "t3.xlarge"
  create_ssh_key    = true
  ssh_public_key    = "../../ark_public_key.pub"
  ark_session_name      = "ark-aws-ascended"
  max_players           = "32"
  is_password_protected = true
  join_password         = "RockWellSucks"
  enable_s3_backups               = false
}
  1. Choose your inputs - GameUserSettings.ini inputs use default values unless you provide a value OTHER than the default value. Ark will use the settings from a custom GameUserSettings.ini file if you choose to use one. Modifying an input that is a GameUserSettings.ini setting while also using a custom GameUserSettings.ini file will result in that specific setting being overwritten in your custom file.
  2. Initialize Terraform - Run terraform init to download the module and providers.
  3. Create the Ark server and Infrastructure - Run terraform apply to start deploying the infrastructure.

Accessing the Server

Note

In testing it takes approximately 15 to 20 minutes on a t3.xlarge for steam to download and configure ark.

The terraform apply will complete, but the server will not appear in the server list until this completes. You can SSH into your server ssh -i my_ark_key.pem [email protected] and use journalctl -xu cloud-final to monitor the install. See the troubleshooting section of the README if you continue to have problems.

Note

In testing it takes approximately 3 to 5 minutes for your server to appear on the server list after installation is complete.

Ensure you tick the show player servers box to view your server: Show Player Servers

Backups

This module includes the option to enable backups. Enabling this will backup the ShooterGame/Saved directory to an S3 bucket at the interval specified using cron. Backups will be retained in S3 based on the number of days specified by the input s3_bucket_backup_retention. This is to save money. Versioning, kms, and replication are disabled to save money.

Note

Enabling this creates an additional S3 bucket. In testing, this adds an additional 0.10 USD ( 10 cents ) a month on average depending on the duration of backup retention, how often you backup, and how often you restore from backup. https://calculator.aws/#/addService

2 Files will be created on the ark server; ark_backup_script.sh on install and ark_backup_log.log when the first backup job runs. The backup log should show similiar to the one below if backup is a success:

ubuntu@ip-10-0-1-250:/ark-asa$ ls
Engine  Manifest_DebugFiles_Win64.txt  Manifest_NonUFSFiles_Win64.txt  Manifest_UFSFiles_Win64.txt  ShooterGame  ark_backup_log.log  ark_backup_script.sh  compatibilitytools.d  linux64  steamapps  steamclient.so
ubuntu@ip-10-0-1-250:/ark-asa$ cat ark_backup_log.log 
[INFO] Creating Ark Backup
tar: Removing leading `/' from member names
/ark-asa/ShooterGame/Saved/
/ark-asa/ShooterGame/Saved/SavedArks/
/ark-asa/ShooterGame/Saved/SavedArks/TheIsland_WP/
/ark-asa/ShooterGame/Saved/SavedArks/TheIsland_WP/TheIsland_WP.ark
/ark-asa/ShooterGame/Saved/Logs/
/ark-asa/ShooterGame/Saved/Logs/ShooterGame.log
/ark-asa/ShooterGame/Saved/Logs/FailedWaterDinoSpawns.log
/ark-asa/ShooterGame/Saved/Config/
/ark-asa/ShooterGame/Saved/Config/CrashReportClient/
/ark-asa/ShooterGame/Saved/Config/CrashReportClient/UECC-Windows-9D515DBA45100CBD707E679881FCDE73/
/ark-asa/ShooterGame/Saved/Config/CrashReportClient/UECC-Windows-9D515DBA45100CBD707E679881FCDE73/CrashReportClient.ini
/ark-asa/ShooterGame/Saved/Config/WindowsServer/
/ark-asa/ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini
/ark-asa/ShooterGame/Saved/Config/WindowsServer/Game.ini
[INFO] Uploading Ark Backup to s3
upload: ./ark-aws-ascended_backup_2024-01-01-18-47-04.tar.gz to s3://ark-backups-12345678912345/ark-aws-ascended_backup_2024-01-01-18-47-04.tar.gz
[INFO] Removing Local Ark Backup File

The backup should be visible in the AWS S3 bucket after the first specified backup interval time frame passes.

Mods

Mods can be added using the mod_list input. This is a list of strings. Example: mod_list = ["935813", "900062"]

Future support for map mods planned.

Enabling Crossplay and Choosing Platforms

Use the supported_server_platforms input to define which platforms can connect to your server.

Warning

Always be mindful of using mods with multiple platforms. Some mods are not supported by all platforms. Check your mod details for more information.

Warning

I have only tested this with PC and ALL. I have only tested PS5 connections when configured as ALL.

  supported_server_platforms = ["All"]

Using Existing Save Backups and Migrating From Existing Servers

You can use existing save data from an existing server when starting the server. This is useful if you are migrating from another hosting platform or recreating the server. The following inputs are required to do this:

Warning

When backup_files_storage_type = "s3" using The objects in the S3 bucket must not be compressed and must be in the root of the S3 bucket. The bucket's root directroy will be synced to the SaveGame directory.

Warning

When backup_files_storage_type = "local" using The objects/files in the directory you specify with backup_files_local_path must not be compressed. Terraform will iterate through each file in that directory and upload it to the root of an S3 bucket it creates.

Input Description
start_from_backup = "true" Must be set to inform Terraform that you wish to start the server with existing save data.
backup_files_storage_type = "local" or "s3" Valid inputs are "local" or "s3". Must be set if start_from_backup = true.
backup_files_local_path = "/directory/on/my/pc" If backup_files_storage_type = "local" then you must provide a path on your local host relative to the terraform working directory.
existing_backup_files_bootstrap_bucket_arn If backup_files_storage_type = "s3" then you must provide the ARN of an existing S3 bucket that contains the save game files in the root of the S3 bucket, uncompressed.
existing_backup_files_bootstrap_bucket_name If backup_files_storage_type = "s3" then you must provide the Name of an existing S3 bucket that contains the save game files in the root of the S3 bucket, uncompressed
  • backup_files_storage_type = "local" will instruct terraform to create an S3 bucket named ark-bootstrap-local-saves-region-accID and upload the save files from your local PC backup_files_local_path directory specified to that bucket. The user_data script on the EC2 instance will download the files from that S3 bucket when the server starts and place them in the /ark-asa/ShooterGame/Saved/SaveGames directory.

  • backup_files_storage_type = "s3" Is informing terraform that you have an existing S3 bucket somewhere that contains the save game data. The EC2 user_data script will attempt to sync the root of that S3 bucket with the SaveGames directory of ark. That is why it is important that the objects be uncompressed and in the root of the directory.

Using an Existing GameUserSettings.ini

You can use an existing GameUserSettings.ini so that the server starts with your custom settings. The following inputs are required to do this:

Note

Terraform Module inputs that are also key=value pairs in the .ini files overwrite the .ini file options. For example, the ark_session_name input will overwrite the value for SessionName in your GameUserSettings.ini file if you provided a custom one.

Input Description
use_custom_gameusersettings = true Must be set to pass a custom GameUserSettings.ini to the server on startup
custom_gameusersettings_s3 = true Cannot be set when custom_gameusersettings_github = true. Set to true if you would like to upload an existing GameUserSettings.ini to an S3 bucket during terraform apply. Setting this to true will create an S3 bucket and upload the file from your PC to the S3 bucket. It will then download the file from the S3 bucket on server startup. You MUST also set game_user_settings_ini_path as a path on your local system relative to the terraform working directory. It is easiest to just place GameUserSettings.ini in the root of your terraform working directory and just provide game_user_settings_ini_path = GameUserSettings.ini.
game_user_settings_ini_path = "path/on/my/pc" A path on your local system relative to the terraform working directory. It is easiest to just place GameUserSettings.ini in the root of your terraform working directory and just provide game_user_settings_ini_path = GameUserSettings.ini. Only used when custom_gameusersettings_s3 = true.
custom_gameusersettings_github = true Cannot be set when custom_gameusersettings_s3 = true. Set to true if you would like to download an existing GameUserSettings.ini to the server from a GitHub URL. Must also provide custom_gameusersettings_github_url = "https://my.url.com with a valid URL to a public GitHub repo.
custom_gameusersettings_github_url = "https://my.url.com A valid URL to a public GitHub repo to download an existing GameUserSettings.ini from onto the server during startup. Must have custom_gameusersettings_github = true and use_custom_gameusersettings = true to use.
  • Using the S3 option will instruct terraform to create an S3 bucket along with an EC2 instance profile that will have permissions to assume an IAM role that is also created. This role contains a policy to allow only the EC2 instance to access the S3 bucket to download GameUserSettings.ini. This also instructs the user_data script that runs when the server starts to download GameUserSettings.ini from that S3 bucket and place it in /ark-asa/ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini

  • Using the GitHub option will simply instruct the user_data script that runs when the server starts to download GameUserSettings.ini to the server and place it in /ark-asa/ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini

Using an Existing Game.ini

You can use an existing Game.ini so that the server starts with your custom settings. The following inputs are required to do this:

Note

Terraform Module inputs that are also key=value pairs in the .ini files overwrite the .ini file options. For example, the ark_session_name input will overwrite the value for SessionName in your GameUserSettings.ini file if you provided a custom one.

Input Description
use_custom_game_ini = true Must be set to pass a custom Game.ini to the server on startup
custom_gameini_s3 = true Cannot be set when custom_gameini_github = true. Set to true if you would like to upload an existing Gameini.ini to an S3 bucket during terraform apply. Setting this to true will create an S3 bucket and upload the file from your PC to the S3 bucket. It will then download the file from the S3 bucket on server startup. You MUST also set game_ini_path as a path on your local system relative to the terraform working directory. It is easiest to just place Game.ini in the root of your terraform working directory and just provide game_ini_path = Game.ini.
game_ini_path = "path/on/my/pc" A path on your local system relative to the terraform working directory. It is easiest to just place Game.ini in the root of your terraform working directory and just provide game_ini_path = Game.ini. Only used when custom_gameini_s3 = true.
custom_gameini_github = true Cannot be set when custom_gameini_s3 = true. Set to true if you would like to download an existing Game.ini to the server from a GitHub URL. Must also provide custom_gameini_github_url = "https://my.url.com with a valid URL to a public GitHub repo.
custom_gameini_github_url = "https://my.url.com A valid URL to a public GitHub repo to download an existing Game.ini from onto the server during startup. Must have custom_gameini_github = true and use_custom_game_ini = true to use.
  • Using the S3 option will instruct terraform to create an S3 bucket along with an EC2 instance profile that will have permissions to assume an IAM role that is also created. This role contains a policy to allow only the EC2 instance to access the S3 bucket to download Game.ini. This also instructs the user_data script that runs when the server starts to download Game.ini from that S3 bucket and place it in /ark-asa/ShooterGame/Saved/Config/WindowsServer/Game.ini

  • Using the GitHub option will simply instruct the user_data script that runs when the server starts to download Game.ini to the server and place it in /ark-asa/ShooterGame/Saved/Config/WindowsServer/Game.ini

Troubleshooting

  • Monitoring the installation - You can view the user_data script that ran by connecting to your server via SSH using the public key you provided, ubuntu user, and the IP address of the server. Example: ssh -i .\ark_public_key [email protected]. Once on the server you can view the progress of the user_data script that installs and configures ark using the command journalctl -xu cloud-final. Use the space bar to scroll through the output line by line or shift+g to scroll the end of the output. If there is an obvios reason that ark failed to install or start in the way you expect, you can most likely find it here.

  • Checking the ark service is running - You can run systemctl status ark-island to view the status of the ark server. The service should say Active: active (running). If it does not, then the ark server failed to start or has stopped for some reason.

Examples

Abandoned Features

Feature Reason for Abandoning Comparable Feature Implemented
Allow users to pass in GameUserSettings.ini from their local machine by providing the path to the file relative to the terraform working directory. Impossible without exceeding the allowable length of user_data. Using the AWS CLI and an EC2 instance profile to download GameUserSettings.ini from S3 or another remote location such as GitHub.
KMS Encryption It can get expensive and this is Ark not a bank or government system. None
S3 Replication Again, it can get expensive and this is Ark not a bank or government system. None

Requirements

Name Version
terraform >= 1.5.0
aws >= 5.0.0

Providers

No providers.

Modules

Name Source Version
ark_backup ./modules/backup n/a
ark_compute ./modules/compute n/a
ark_vpc ./modules/networking n/a

Resources

No resources.

Inputs

Name Description Type Default Required
admin_logging If True, logs all admin commands to in-game chat. bool false no
allow_anyone_baby_imprint_cuddle If True, allows anyone to take care of a baby creatures (cuddle etc.), not just whomever imprinted on it. bool false no
allow_flyer_carry_pve If True, allows flying creatures to pick up wild creatures in PvE. bool false no
allow_raid_dino_feeding If True, allows Titanosaurs to be permanently tamed (namely allow them to be fed). Note: in The Island only spawns a maximum of 3 Titanosaurs, so 3 tamed ones should ultimately block any more ones from spawning. bool false no
allow_third_person_player If False, disables third person camera allowed by default on all dedicated servers. bool true no
always_allow_structure_pickup If True disables the timer on the quick pick-up system. bool false no
ami_id The AMI ID to use. Not providing one will result in the latest version of Ubuntu Focal 20.04 being used string null no
ark_session_name The name of the Ark server as it appears in the list of servers when users look for a server to join string "ark-aws-ascended" no
auto_save_interval Set interval for automatic saves. Must be a float. pattern allows float numbers like 15.0, 3.14, etc. Setting this to 0 will cause constant saving. number 15 no
backup_files_local_path Path to existing save game files relative to your Terraform working directory. Will be uploaded to the server. Required if backup_files_storage_path = local string "" no
backup_files_storage_type The location of your save game files that you wish to start the server with. Supported options are local or s3'. localmeans the save game files exist somewhere on the host you are running terraform apply from.s3 means the files exist in an s3 bucket. string "local" no
backup_interval_cron_expression How often to backup the ShooterGame/Saved directory to S3 in cron expression format (https://crontab.cronhub.io/) string "0 23 * * *" no
backup_s3_bucket_arn The ARN of the s3 bucket that you would like to use for ShooterGame/Saved directory backups string "" no
backup_s3_bucket_name The name of the S3 bucket to backup the ShooterGame/Saved directory to string "" no
clamp_resource_harvest_damage If True, limit the damage caused by a tame to a resource on harvesting based on resource remaining health. Note: enabling this setting may result in sensible resource harvesting reduction using high damage tools or creatures. bool false no
create_backup_s3_bucket True or False. Do you want to create an S3 bucket to FTP backups into bool false no
create_ssh_key True or False. Determines if an SSH key is created in AWS bool true no
custom_gameini_github True or False. Set true if use_custom_gameini is true and you want to download them from github. Must be a public repo. bool false no
custom_gameini_github_url The URL to the Game.ini file on a public GitHub repo. Used when custom_gameini_github and use_custom_game_ini both == true. string "" no
custom_gameini_s3 True or False. Set true if use_custom_gameini is true and you want to upload and download them from an S3 bucket during installation bool false no
custom_gameusersettings_github True or False. Set true if use_custom_gameusersettings is true and you want to download them from github. Must be a public repo. bool false no
custom_gameusersettings_github_url The URL to the GameUserSettings.ini file on a public GitHub repo. Used when custom_gameusersettings_github and custom_game_usersettings both == true. string "" no
custom_gameusersettings_s3 True or False. Set true if use_custom_gameusersettings is true and you want to upload and download them from an S3 bucket during installation bool false no
day_cycle_speed_scale Specifies the scaling factor for the passage of time in the ARK during the day. This value determines the length of each day, relative to the length of each night (as specified by NightTimeSpeedScale). Lowering this value increases the length of each day. number 1 no
day_time_speed_scale Specifies the scaling factor for the passage of time in the ARK during the day. This value determines the length of each day, relative to the length of each night (as specified by NightTimeSpeedScale). Lowering this value increases the length of each day. number 1 no
difficulty_offset Specifies the difficulty level. number 1 no
dino_character_food_drain_multiplier Specifies the scaling factor for creatures' food consumption. Higher values increase food consumption (creatures get hungry faster). It also affects the taming-times. number 1 no
dino_character_health_recovery_multiplier Specifies the scaling factor for creatures' health recovery. Higher values increase the recovery rate (creatures heal faster). number 1 no
dino_character_stamina_drain_multiplier Specifies the scaling factor for creatures' stamina consumption. Higher values increase stamina consumption (creatures get tired faster). number 1 no
dino_damage_multiplier Specifies the scaling factor for the damage wild creatures deal with their attacks. The default value 1 provides normal damage. Higher values increase damage. Lower values decrease it. number 1 no
dino_resistance_multiplier Specifies the scaling factor for the resistance to damage wild creatures receive when attacked. The default value 1 provides normal damage. Higher values decrease resistance, increasing damage per attack. Lower values increase it, reducing damage per attack. A value of 0.5 results in a creature taking half damage while a value of 2.0 would result in a creature taking double normal damage. number 1 no
disable_dino_decay_pve If True, disables the creature decay in PvE mode. Note: after patch 273.691, in PvE mode the creature auto-unclaim after decay period has been disabled. bool false no
disable_imprint_dino_buff If True, disables the creature imprinting player Stat Bonus. Where whomever specifically imprinted on the creature, and raised it to have an Imprinting Quality, gets extra Damage/Resistance buff. bool false no
disable_pve_gamma If True, prevents use of console command gamma in PvE mode. bool false no
disable_structure_decay_pve If True, disables the gradual auto-decay of player structures. bool false no
disable_weather_fog If True, disables fog. bool false no
dont_notify_player_joined If True, globally disables player joins notifications. bool false no
ebs_volume_size The size of the EBS volume attached to the EC2 instance number 50 no
enable_extra_structure_prevention_volumes If True, disables building in specific resource-rich areas, in particular setup on The Island around the major mountains. bool false no
enable_pvp_gamma If True, allows use of console command gamma in PvP mode. bool false no
enable_rcon True or False. Enable RCON or not bool false no
enable_s3_backups True or False. Set to true to enable backing up of the ShooterGame/Saved directory to S3 bool false no
enable_session_manager True or False. Determines if SSM Session Manager is enabled or not bool false no
enable_ssh True or False. Determines if SSH and port 22 are enabled or not bool true no
existing_backup_files_bootstrap_bucket_arn The ARN of an existing S3 bucket with ARK save game data. Files will be downloaded to the server. Objects must be in the root of the S3 bucket and not compressed. string "" no
existing_backup_files_bootstrap_bucket_name The Name of an existing S3 bucket with ARK save game data. Files will be downloaded to the server. Objects must be in the root of the S3 bucket and not compressed. string "" no
existing_ssh_key_name The name of an EXISTING SSH key for use with the EC2 instance string null no
force_destroy True or False. Set to true if you want Terraform destroy commands to have the ability to destroy the backup bucket while it still containts backup files bool false no
game_client_port The port that the game client listens on number 7777 no
game_ini_path Path to Game.ini relative to your Terraform working directory. Will be uploaded to the server. Required if use_custom_game_ini = true and custom_game_ini_s3 = true. string "" no
game_user_settings_ini_path Path to GameUserSettings.ini relative to your Terraform working directory. Will be uploaded to the server. Required if use_custom_gameusersettings = true and custom_game_usersettings_s3 = true. string "" no
ge_proton_version The version of GE Proton to use when installing Ark. Example: 8-21 (https://github.com/GloriousEggroll/proton-ge-custom/releases) string "8-21" no
harvest_ammount_multiplier Specifies the scaling factor for yields from all harvesting activities (chopping down trees, picking berries, carving carcasses, mining rocks, etc.). Higher values increase the amount of materials harvested with each strike. number 1 no
harvest_health_multiplier Specifies the scaling factor for the health of items that can be harvested (trees, rocks, carcasses, etc.). Higher values increase the amount of damage (i.e., number of strikes) such objects can withstand before being destroyed, which results in higher overall harvest yields. number 1 no
instance_type The instance type to use string "t3.xlarge" no
is_password_protected True or False. Is a password required for players to join the server bool true no
item_stack_size_multiplier Allow increasing or decreasing global item stack size, this means all default stack sizes will be multiplied by the value given (excluding items that have a stack size of 1 by default). number 1 no
join_password The password required for players to join the server. Only required if is_password_protected = true string "TinyTrexArms123!" no
kick_idle_player_period Time in seconds after which characters that have not moved or interacted will be kicked (if -EnableIdlePlayerKick as command line parameter is set). Note: although at code level it is defined as a floating-point number, it is suggested to use an integer instead. number 3600 no
max_personal_tamed_dinos Sets a per-tribe creature tame limit (500 on official PvE servers, 300 in official PvP servers). The default value of 0 disables such limit. number 0 no
max_platform_saddle_structure_limit Changes the maximum number of platformed-creatures/rafts allowed on the ARK (a potential performance cost). Example: MaxPlatformSaddleStructureLimit=10 would only allow 10 platform saddles/rafts across the entire ARK. number 75 no
max_players The number of max players the server allows string "32" no
max_tamed_dinos Changes the maximum number of platformed-creatures/rafts allowed on the ARK (a potential performance cost). Example: MaxPlatformSaddleStructureLimit=10 would only allow 10 platform saddles/rafts across the entire ARK. number 5000 no
mod_list A list of mod IDs to add to the server. List of strings. Example: mod_list = ['935813', '900062'] list(string)
[
""
]
no
night_time_speed_scale Specifies the scaling factor for the passage of time in the ARK during night time. This value determines the length of each night, relative to the length of each day (as specified by DayTimeSpeedScale) Lowering this value increases the length of each night. number 1 no
non_permanent_diseases If True, makes permanent diseases not permanent. Players will lose them if on re-spawn. bool false no
override_official_difficulty Allows you to override the default server difficulty level of 4 with 5 to match the new official server difficulty level. Default value of 0.0 disables the override. A value of 5.0 will allow common creatures to spawn up to level 150. Originally (247.95) available only as command line option. number 0 no
override_structure_platform_prevention If True, turrets becomes be buildable and functional on platform saddles. Since 247.999 applies on spike structure too. Note: despite patch notes, in ShooterGameServer it's coded OverrideStructurePlatformPrevention with two r. bool false no
oxygen_swim_speed_multiplier Use this to set how swim speed is multiplied by level spent in oxygen. The value was reduced by 80% in 256.0. number 1 no
per_platform_max_structure_multiplier Higher value increases (from a percentage scale) max number of items place-able on saddles and rafts. number 1 no
platform_saddle_build_area_bounds_multiplier Increasing the number allows structures being placed further away from the platform. number 1 no
player_character_food_drain_multiplier Specifies the scaling factor for player characters' food consumption. Higher values increase food consumption (player characters get hungry faster). number 1 no
player_character_health_recovery_multiplier Specifies the scaling factor for player characters' health recovery. Higher values increase the recovery rate (player characters heal faster). number 1 no
player_character_stamina_drain_multiplier Specifies the scaling factor for player characters' stamina consumption. Higher values increase stamina consumption (player characters get tired faster). number 1 no
player_character_water_drain_multiplier Specifies the scaling factor for player characters' water consumption. Higher values increase water consumption (player characters get thirsty faster). number 1 no
player_damage_multiplier Specifies the scaling factor for the damage players deal with their attacks. The default value 1 provides normal damage. Higher values increase damage. Lower values decrease it. number 1 no
player_resistance_multiplier Specifies the scaling factor for the resistance to damage players receive when attacked. The default value 1 provides normal damage. Higher values decrease resistance, increasing damage per attack. Lower values increase it, reducing damage per attack. A value of 0.5 results in a player taking half damage while a value of 2.0 would result in taking double normal damage. number 1 no
prevent_diseases If True, completely diseases on the server. Thus far just Swamp Fever. bool false no
prevent_mate_boost If True, disables creature mate boosting. bool false no
prevent_offline_pvp If True, enables the Offline Raiding Prevention (ORP). When all tribe members are logged off, tribe characters, creature and structures become invulnerable. Creature starvation still applies, moreover, characters and creature can still die if drowned. Despite the name, it works on both PvE and PvP game modes. Due to performance reason, it is recommended to set a minimum interval with PreventOfflinePvPInterval option before ORP becomes active. ORP also helps lowering memory and CPU usage on a server. Enabled by default on Official PvE since 258.3 bool false no
prevent_offline_pvp_interval Seconds to wait before a ORP becomes active for tribe/players and relative creatures/structures (10 seconds in official PvE servers). Note: although at code level it is defined as a floating-point number, it is suggested to use an integer instead. number 0 no
prevent_spawn_animations If True, player characters (re)spawn without the wake-up animation. bool false no
prevent_tribe_alliances If True, prevents tribes from creating Alliances. bool false no
pve_allow_structures_at_supply_drops If True, allows building near supply drop points in PvE mode. bool false no
raid_dino_character_food_drain_multiplier Affects how quickly the food drains on such raid dinos (e.g.: Titanosaurus) number 1 no
random_supply_crate_points If True, supply drops are in random locations. Note: This setting is known to cause artifacts becoming inaccessible on Ragnarok if active. bool false no
rcon_port The port number that RCON listens on if enabled number null no
rcon_server_game_log_buffer Determines how many lines of game logs are send over the RCON. Note: despite being coded as a float it's suggested to treat it as integer. number 600 no
resource_respawn_period_multiplier Specifies the scaling factor for the re-spawn rate for resource nodes (trees, rocks, bushes, etc.). Lower values cause nodes to re-spawn more frequently. number 1 no
s3_bucket_backup_retention Lifecycle rule. The number of days to keep backups in S3 before they are deleted number 7 no
server_admin_password The admin password for the Ark server to perform admin commands string "adminandypassword" no
server_hardcore If True, enables Hardcore mode (player characters revert to level 1 upon death) bool false no
server_pve If True, disables PvP and enables PvE. bool false no
ssh_ingress_allowed_cidr The CIDR range to allow SSH incoming connections from list(string)
[
"0.0.0.0/0"
]
no
ssh_key_name The name of the SSH key to be created for use with the EC2 instance string "ark-ssh-key" no
ssh_public_key The path to the ssh public key to be used with the EC2 instance string "~/.ssh/ark_public_key.pub" no
start_from_backup True of False. Set true to start the server from an existing Ark save. Requires existing save game files. bool false no
steam_query_port The query port for steam server browser number 27015 no
structure_pickup_hold_duration Specifies the quick pick-up hold duration, a value of 0 results in instant pick-up. number 0.5 no
structure_pickup_time_after_placement Amount of time in seconds after placement that quick pick-up is available. number 30 no
structure_prevent_resource_radius_multiplier Same as ResourceNoReplenishRadiusStructures in Game.ini. If both settings are set both multiplier will be applied. Can be useful when cannot change the Game.ini file as it works as a command line option too. number 1 no
structure_resistance_multiplier Specifies the scaling factor for the resistance to damage structures receive when attacked. The default value 1 provides normal damage. Higher values decrease resistance, increasing damage per attack. Lower values increase it, reducing damage per attack. A value of 0.5 results in a structure taking half damage while a value of 2.0 would result in a structure taking double normal damage. number 1 no
subnet_availability_zone The AZ of the subnet to be created within the VPC string "us-east-1a" no
subnet_cidr_block The CIDR block of the subnet to be created within the VPC string "10.0.1.0/24" no
supported_server_platforms Allows the server to accept specified platforms. Options are PC for Steam, PS5 for PlayStation 5, XSX for XBOX, WINGDK for Microsoft Store, ALL for crossplay between PC and all consoles. Note: Steam dedicated server supports only PC and ALL options. Example: supported_server_platforms = ['PC', 'PS5'] list(string)
[
"PC"
]
no
taming_speed_multiplier Specifies the scaling factor for creature taming speed. Higher values make taming faster. number 1 no
the_max_structure_in_range Specifies the maximum number of structures that can be constructed within a certain (currently hard-coded) range. Replaces the old value NewMaxStructuresInRange number 10500 no
use_battleye True or False. True will set the -noBattlEye flag. bool false no
use_custom_game_ini True or False. Set true if you want to provide your own Game.ini file when the server is started. Required if game_user_settings_ini_path is defined bool false no
use_custom_gameusersettings True or False. Set true if you want to provide your own GameUserSettings.ini file when the server is started. Required if game_user_settings_ini_path is defined bool false no
vpc_cidr_block The CIDR block of the VPC to be created string "10.0.0.0/16" no
xp_multiplier Specifies the scaling factor for the experience received by players, tribes and tames for various actions. The default value 1 provides the same amounts of experience as in the single player experience (and official public servers). Higher values increase XP amounts awarded for various actions; lower values decrease it. number 1 no

Outputs

Name Description
admin_commands_password The configured admin command password.
ark_server_public_ip The public IP address of the Ark server to connect on.
backup_s3_bucket_arn The ARN of the S3 bucket created for backups if enabled.
backup_s3_bucket_name The ID of the S3 bucket created for backups if enabled.
custom_gameusersettings_file_name The custom gameusersettings file name that was uploaded to s3 if use custom GUS ini with s3 was configured.
custom_ini_s3_bucket_name The ID of the S3 bucket that was created if use custom ini with s3 was configured.
game_client_port The configured game client port.
join_password The server join password required to join.
max_players The configured max players.
security_group_id The security group ID of the security group created by Terraform.
server_is_password_protected Is the server password protected.
server_using_custom_gameini Is the server using custom Game.ini.
server_using_custom_gameusersettingsini Is the server using custom GameUserSettings.ini.
session_manager_enabled Is AWS SSM Session Manager enabled or not.
session_name The configured session name.
ssh_key_name The name of the SSH key generated by Terraform.
steam_query_port The configured steam query port.
subnet_id The subnet ID of the subnet created by Terraform.
vpc_id The ID of the VPC created by Terraform.