-
Notifications
You must be signed in to change notification settings - Fork 49
Configuration
- Root
- Discord
- Web App
- User roles settings
- Access control settings
- SSL settings
- ARK multiplier settings
- Server instance settings
- Cluster instance settings
Multiple servers and clusters are configured as separate elements in the configuration.
Keys are unique identifiers used to identify each server and cluster. They must be unique, not contain spaces or any special characters and ideally be short, descriptive and easy to remember and type.
Keys are in some cases used to indicate a relationship between two or more configuration elements: i.e. each server link to a cluster by referencing a particular cluster key.
Many features make use of these unique keys. Occasionally it is part of the user interaction as is the case with the !food <server key>
or !admin <server key>
... commands.
When utilizing server management features, including start-, stop-, restart- and update-server commands, the server key is used to identify a particular running process. The server key configured for a particular instance must be appended to the ShooterGameServer.exe parameter list as -serverkey=yourserverinstancekey
. An example of this is found in the defaultconfig.json
file. Do not forget to append this parameter even when manually starting a server.
If there are any settings missing from this page you may check the xml descriptions that can be found in: https://github.com/tsebring/ArkBot/blob/master/ArkBot/Config.cs.
Key | Description |
---|---|
botId |
Simple non-whitespace or special character ID to identify the bot (A-Za-z0-9). |
botName |
Short name to identify the bot. |
botNamespace |
Unique namespace URL given to the bot. |
botUrl |
Website URL associated with the bot or ARK server. |
appUrl |
External URL pointing to the Web App. |
enabledChannels |
A list of channels where the bot will listen to and answer commands. |
infoTopicChannel |
Channel where the topic is set to display information about last update, next update and how to use bot commands. |
announcementChannel |
Channel where announcements are made (votes etc.). |
tempFileOutputDirPath |
An existing directory path where temporary binary files can be stored (map-images etc.) |
botToken |
Discord bot authentication token from https://discordapp.com/developers. |
steamOpenIdRelyingServiceListenPrefix |
Http listen prefix for Steam OpenID Relying Party web service (requires a port that is open to external connections). |
steamOpenIdRedirectUri |
Publicly accessible URL for incoming Steam OpenID Relying Party web service connections (requires a port that is open to external connections). |
googleApiKey |
Google API key used for URL-shortening services. From https://console.developers.google.com/. |
steamApiKey |
Steam API key used for fetching user information. From http://steamcommunity.com/dev/. |
memberRoleName |
The name of the member role in Discord. |
discord |
Discord bot settings. |
userRoles |
Explicit steam user role assignment. |
accessControl |
Per-feature role-based access control configuration. |
disableDeveloperFetchSaveData |
Diable users in "developer"-role fetching JSON or save file data. |
backupsEnabled |
Option to enable savegame backups. |
backupsDirectoryPath |
Directory path where savegame backups are stored. |
discordBotEnabled |
Option to enable/disable the discord bot component. |
webApiListenPrefix |
Http listen prefix for WebAPI service (requires a port that is open to external connections). |
webAppListenPrefix |
Http listen prefix for Web App (requires a port that is open to external connections). |
webAppRedirectListenPrefix |
Http listen prefix(es) that are redirected to BotUrl . |
powershellFilePath |
Absolute file path of the powershell executable (only used with Server .UsePowershellOutputRedirect ). |
useCompatibilityChangeWatcher |
Use timer based .ark save file watcher rather than the default (based on FileSystemWatcher). |
ssl |
Configure Web App and WebAPI to use SSL with a free certificate from Lets Encrypt. |
arkMultipliers |
Server specific multipliers. |
savegameExtractionMaxDegreeOfParallelism |
Max degree of parallelism to use for savegame extraction. Change only if experiencing out of memory exceptions. |
servers |
Server instance configurations. |
clusters |
Cluster instance configurations. |
Discord is configured under discord
.
Key | Description |
---|---|
discordBotEnabled |
This sets if the discord bot is enabled or disabled |
accessControl |
This object contains channels and commands arrays which define access control to the bot from discord.The channels object contains two members: public and private, each one contains an array with a list of the Discord Role Names that have access to that channel (public channel or private channel). The Commands Object contains eleven members: admin, cloud, rcon, debug, commands, version, servers, linksteam, unlinksteam, whoami, disabled. Each member is an Array with a list of the Names of the Discord Roles that are allowed to use that command. You need to have the role name added on the Channels object before using it on the Commands object. The special rolename @everyone can be used to allow access to all users. |
botToken |
This is the access token you got from Discord's bot developer page |
enabledChannels |
This is an Array with a list of the enabled channels for the bot, the name of the channel not the ID |
infoTopicChannel |
|
announcementChannel |
|
memberRoleName |
This is the name (Not ID) of the role which members have on Discord |
disableDeveloperFetchSaveData |
|
steamOpenIdRelyingServiceListenPrefix |
|
steamOpenIdRedirectUri |
This is the return URL to which steam openid will return the authenticated user back |
Web App is configured under webApp
.
Key | Description |
---|---|
tribeLogLimit |
Limit for how many tribe logs are displayed in the Web App. |
tribeLogColors |
Enable colored tribe log entries in the Web App. |
User roles are configured under userRoles
. Multiple roles can be configured and each contains a list of steam ids who belong to that role. Roles are used in accessControl
to grant access to specific pages/features.
Example
"userRoles": {
"role1": [ "steamid1", "steamid2", "..." ],
"role2": [ "steamid1", "steamid2", "..." ]
},
Access control is configured under accessControl
. There is a predefined set of pages/features to grant access to. Each page/feature contains a list of roles that have access to that particular resource.
SSL is configured under ssl
. Enabling SSL (HTTPS) is important to protect users against session hijacking. With SSL enabled the bot will attempt to issue a free SSL-certificate using Lets Encrypt. Once the SSL-certificate has been issued, it is valid for 90 days, after which it must be renewed.
Key | Description |
---|---|
enabled |
Toggle ssl. |
challengeListenPrefix |
Http listen prefix for ssl challenge request (external port must be 80). |
name |
Friendly name of the certificate. |
password |
Private password. |
email |
Registration contact email. |
domains |
Domain name(s) to issue the certificate for. |
ports |
Ports to bind the ssl certificate to. |
useCompatibilityNonSNIBindings |
Use non SNI SSL bindings for previous Windows OS (before Windows 8/2012). |
ARK multipliers are configured under arkMultipliers
.
Key | Description |
---|---|
eggHatchSpeedMultiplier |
Pregnancy/incubation time multiplier. |
babyMatureSpeedMultiplier |
Baby mature time multiplier. |
cuddleIntervalMultiplier |
Multiplier for duration between cuddles. |
Each server instance is configured in a separate element under servers
.
Key | Description |
---|---|
key |
Unique key/name for this server instance. |
cluster |
Optional key for the cluster instance this server is part of. |
saveFilePath |
Absolute file path of the .ark save file to monitor/extract data from. |
displayAddress |
Public server address visible to players. |
ip |
The IP address used to connect to this server instance. |
port |
The port used to connect to this server instance. |
rconPort |
The port used to connect to this server instance over rcon. |
rconPassword |
The password used to connect to this server instance via rcon. |
serverExecutablePath |
Absolute file path of the server instance executable. |
serverExecutableArguments |
Command line arguments used when starting the server instance. |
steamCmdExecutablePath |
Absolute file path of the steamcmd executable. |
serverInstallDirPath |
The directory path to force steamcmd updates to. |
usePowershellOutputRedirect |
Use alternative powershell/file based output redirect for update progress notifications. |
disableChatNotificationOnGlobalCountdown |
Disable chat notifications for this server instance when trigged by admin multiple server countdown (feature is used for compatibility with cross server chat). |
Each cluster instance is configured in a separate element under clusters
.
Key | Description |
---|---|
key |
Unique key/name for this cluster instance. |
savePath |
Absolute path of the directory where cluster-files are stored. Cluster-files are extracted as part of the server update process triggered by savegame-file (.ark) watchers. |
{
"botId": "arkbot",
"botName": "ARK Bot",
"botNamespace": "http://www.arkbot.com/",
"botUrl": "",
"appUrl": "",
"enabledChannels": [ "bot-commands" ],
"infoTopicChannel": "bot-commands",
"announcementChannel": "bot-notifications",
"tempFileOutputDirPath": "C:\\ArkBot\\temp",
"botToken": "<token from discord>",
"steamOpenIdRelyingServiceListenPrefix": "http://+:60002/openid/",
"steamOpenIdRedirectUri": "http://<your public ip or domain>:60002/openid/",
"googleApiKey": "<google api key>",
"steamApiKey": "<steam webapi key>",
"memberRoleName": "ark",
"discord": {
"accessControl": {
"channels": {
"public": [ "@everyone", "admin", "developer" ],
"private": [ "@everyone", "admin", "developer" ]
},
"commands": {
"admin": [ "admin", "developer" ],
"cloud": [ "admin", "developer" ],
"rcon": [ "admin", "developer" ],
"debug": [ "developer" ],
"commands": [ "@everyone" ],
"version": [ "@everyone" ],
"servers": [ "@everyone" ],
"linksteam": [ "@everyone" ],
"unlinksteam": [ "@everyone" ],
"whoami": [ "@everyone" ],
"disabled": [ "@everyone" ]
}
}
},
"userRoles": {
"admin": [ ]
},
"accessControl": {
"pages": {
"home": [ "guest" ],
"server": [ "guest" ],
"player": [ "self", "admin" ],
"admin-server": [ "admin" ]
},
"home": {
"myprofile": [ "user" ],
"serverlist": [ "guest" ],
"serverdetails": [ "guest" ],
"online": [ "guest" ],
"externalresources": [ "guest" ]
},
"server": {
"players": [ "guest" ],
"tribes": [ "guest" ],
"wildcreatures": [ "admin" ],
"wildcreatures-basestats": [ "admin" ],
"wildcreatures-ids": [ "admin" ],
"wildcreatures-statistics": [ "admin" ]
},
"player": {
"profile": [ "guest" ],
"profile-detailed": [ "self", "admin" ],
"creatures": [ "guest" ],
"creatures-basestats": [ "self", "admin" ],
"creatures-ids": [ "admin" ],
"creatures-cloud": [ "guest" ],
"breeding": [ "self", "admin" ],
"crops": [ "self", "admin" ],
"generators": [ "self", "admin" ],
"kibbles-eggs": [ "self", "admin" ],
"tribelog": [ "self", "admin" ]
},
"admin-server": {
"players": [ "admin" ],
"tribes": [ "admin" ],
"structures": [ "admin" ],
"structures-rcon": [ "disabled" ]
}
},
"disableDeveloperFetchSaveData" : false,
"backupsEnabled": false,
"backupsDirectoryPath": "C:\\ARK Servers\\Backups",
"discordBotEnabled": true,
"webApiListenPrefix": "http://+:60001/",
"webAppListenPrefix": "http://+:80/",
"webAppRedirectListenPrefix": [
],
"powershellFilePath": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"useCompatibilityChangeWatcher": true,
"ssl": {
"enabled": false,
"challengeListenPrefix": "http://+:80/",
"name": "ark-bot-ssl",
"password": "secret123",
"email": "[email protected]",
"domains": [
"app.yourdomain.com"
],
"ports": [ 443, 60001 ],
"useCompatibilityNonSNIBindings": true
},
"arkMultipliers": {
"eggHatchSpeedMultiplier": 1.0,
"babyMatureSpeedMultiplier": 1.0,
"cuddleIntervalMultiplier": 1.0
},
"savegameExtractionMaxDegreeOfParallelism": null,
"servers": [
{
"key": "server1",
"cluster": "cluster1",
"saveFilePath": "C:\\ARK Servers\\server1\\ShooterGame\\Saved\\SavedArks\\TheIsland.ark",
"displayAddress": "myarkserver.domain.com:27015",
"ip": "127.0.0.1",
"port": 27015,
"rconPort": 27020,
"rconPassword": "password",
"serverExecutablePath": "C:\\ARK Servers\\server1\\ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe",
"serverExecutableArguments": "TheIsland?listen?Port=7777?QueryPort=27015?RCONPort=27020?RCONEnabled=True?SessionName=Server1?ServerPassword=?ServerAdminPassword=password?SpectatorPassword=password?MaxPlayers=5 -culture=en -nosteamclient -clusterid=cluster1 -ClusterDirOverride=\"C:\\ARK Servers\\cluster1\" -serverkey=server1",
"steamCmdExecutablePath": "C:\\SteamCmd\\steamcmd.exe",
"serverInstallDirPath": "C:\\ARK Servers\\server1",
"usePowershellOutputRedirect": false,
"disableChatNotificationOnGlobalCountdown": false
},
{
"key": "server2",
"cluster" : "cluster1",
"saveFilePath": "C:\\ARK Servers\\server2\\ShooterGame\\Saved\\SavedArks\\TheIsland.ark",
"displayAddress": "myarkserver.domain.com:27016",
"ip": "127.0.0.1",
"port": 27016,
"rconPort": 27021,
"rconPassword": "password",
"serverExecutablePath": "C:\\ARK Servers\\server2\\ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe",
"serverExecutableArguments": "TheIsland?listen?Port=7779?QueryPort=27016?RCONPort=27021?RCONEnabled=True?SessionName=Server2?ServerPassword=?ServerAdminPassword=password?SpectatorPassword=password?MaxPlayers=5 -culture=en -nosteamclient -clusterid=cluster1 -ClusterDirOverride=\"C:\\ARK Servers\\cluster1\" -serverkey=server2",
"steamCmdExecutablePath": "C:\\SteamCmd\\steamcmd.exe",
"serverInstallDirPath": "C:\\ARK Servers\\server2",
"usePowershellOutputRedirect": false,
"disableChatNotificationOnGlobalCountdown": false
}
],
"clusters": [
{
"key": "cluster1",
"savePath": "C:\\ARK Servers\\cluster1"
}
]
}