ark-server-tools: running ARK: Survival Evolved servers on Linux
Set of server tools used to manage ARK: Survival Evolved servers on Linux
At a glance
- What is it?
- ark-server-tools is a shell script set that manages ARK: Survival Evolved dedicated servers on Linux, wrapping SteamCMD so that installing, updating, starting and stopping instances happens through one command instead of a remembered string of arguments. It handles multi-instance setups, where each server needs its own ports, and it is a plain shell tool with a configuration file rather than a service with a web interface.
- Who is it for?
- Adopt ark-server-tools if you run more than one ARK: Survival Evolved server on Linux and want a single script that handles SteamCMD, updates and per-instance configuration, since the instance config files and the port settings it enforces are the parts you would otherwise hand-maintain.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 104 days ago.
- What is it written in?
- Mainly Shell, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A shell tool that wraps SteamCMD, not a game server panel
The project is described as a set of server tools used to manage ARK: Survival Evolved servers on Linux, and the pitch is that you can manage any ARK Linux server without having to remember long commands. It provides a lot of features, and the readme points to the usage section for the full list.
The primary language is Shell and the repository is small, with a .version file, a netinstall.sh, a tools/ directory, a README.asciidoc and a LICENSE. That shape tells you what kind of tool this is. There is no daemon with a web interface, no database and no agent. There is a script called arkmanager and a set of configuration files, and the underlying work of downloading and updating game files is delegated to SteamCMD.
The audience is a server operator or a game hosting provider running one or many dedicated instances on a Linux box, and the multi-instance story is the reason this exists as a project rather than a wiki page of copy-paste commands. ARK servers are long lived, they need scheduled updates, and each one has its own port set and its own parameters. Doing that by hand across several instances is exactly the sort of repetitive shell work that a script is for.
The licence is MIT, and the last push to the repository was on 2026-07-11, with the most recent tagged release v1.6.69 from 2026-06-06.
Prerequisites: 32 bit libraries, SteamCMD and a steam user
The installation section is unusually explicit about prerequisites, and skipping them produces failures that are hard to trace back.
The ARK server is a 32 bit binary, so the 32 bit runtime libraries are mandatory. On CentOS or RHEL the list is perl-Compress-Zlib, curl, lsof, glibc.i686, libstdc++.i686 and bzip2. On Debian or Ubuntu it is perl-modules, curl, lsof, libc6-i386, lib32gcc-s1 and bzip2, with a note that lib32gcc1 is the equivalent on Debian Buster or Ubuntu 20.04 or older.
The common prerequisites that should normally already be present are bash 4.0 or newer, coreutils 7.6 or newer, findutils, perl, rsync, sed and tar. The version floors on bash and coreutils are there because the script uses features those releases introduced.
Two further requirements are structural. SteamCMD has to be installed following the Valve guide, and the project assumes you have created a steam user to hold both steamcmd and your ARK server. That assumption runs through the rest of the documentation, including the install command that takes the user name as an argument.
There is also a floor below which you must compile your own libraries. If you are on CentOS 6 or earlier, or Debian 7 or earlier, you need a newer glibc compiled by hand, and the project links a wiki page on installing the required versions of glibc and gcc.
Opening the game ports, and why each instance needs its own
To let the server talk to the outside world you have to open ports in the firewall, and the readme gives the rules:
iptables -I INPUT -p udp --dport 27015 -j ACCEPT
iptables -I INPUT -p tcp --dport 27015 -j ACCEPT
iptables -I INPUT -p udp --dport 7777 -j ACCEPT
iptables -I INPUT -p tcp --dport 7777 -j ACCEPT
iptables -I INPUT -p udp --dport 7778 -j ACCEPT
iptables -I INPUT -p tcp --dport 7778 -j ACCEPT
iptables -I INPUT -p tcp --dport 32330 -j ACCEPTThe note that follows matters more than the rules themselves: change the ports according to the ones set in your arkmanager.cfg file. The examples are placeholders for the default configuration.
The per-instance port requirement is stated as a hard constraint, with the failure modes spelled out. Each server instance must have its own set of ports, specified using the ark_Port, ark_QueryPort and ark_RCONPort settings in the instance configuration. If the QueryPort or Port settings are shared between multiple instances, the server will often either crash or hang without being able to be queried. If the RCONPort setting is shared between multiple instances, the server will hang at zero players.
Those two symptoms, a crash or a hang, are the diagnostic signature of a port collision, and the fix is in the configuration rather than in the firewall.
Installing from netinstall.sh, system-wide or as an unprivileged user
The install itself is a single command that pipes the netinstall script into bash:
curl -sL https://raw.githubusercontent.com/arkmanager/ark-server-tools/master/netinstall.sh | sudo bash -s steamThe trailing argument is the steam user the server will run as, and the readme notes that you may want to change the bash -s parameter to fit your steam user if it differs from steam. That argument is how the script knows where to put things.
If you want the arkmanager service installed as well, append the --install-service option. That copies the arkmanager script and its daemon into the proper directories and creates an empty log directory in /var/log for ARK Server Tools.
There is an unprivileged route too, which is the one to reach for if you do not want root on the machine:
curl -sL https://raw.githubusercontent.com/arkmanager/ark-server-tools/master/netinstall.sh | bash -s -- --meThe --me flag performs a user install, meaning no sudo and no system directories. Note the double dash before --me, which is what tells bash that the following arguments belong to the script rather than to bash itself.
Once the tools are installed, installing the game server is a separate step, run as the normal user rather than with sudo:
arkmanager installKeeping the tool installation and the game installation separate is deliberate. The tool is a script you run occasionally, and the game server is a large download managed through SteamCMD, and conflating them means the privileged step covers both.
Where the configuration lives and the four ways to set a server option
Configuration is split across two locations, /etc/arkmanager/arkmanager.cfg and /etc/arkmanager/instances/<instancename>.cfg, and together they hold the variables needed to start the server, such as port numbers and system environment variables. You modify these files with the options you want and with any paths that are non-standard in your environment, one of the common ones being the path to the appinfo cache.
The interesting part is how you pass arbitrary parameters to the ARK startup command. The documentation gives four forms, distinguished by their prefix.
A plain option with a value is prefixed with ark_:
ark_SessionName="My ARK server"
ark_MaxPlayers=50
ark_ServerPVE=False
ark_DifficultyOffset=1An option that takes no argument, such as bRawSockets, is specified with an empty argument, for example ark_bRawSockets="". A dash-option with no argument, such as -log, is added with the arkflag_ prefix and an empty value, for example arkflag_log="". A dash-option with an argument, such as -StructureDestructionTag=DestroySwampSnowStructures, uses the arkopt_ prefix, for example arkopt_StructureDestructionTag=DestroySwampSnowStructures.
Two gotchas are worth remembering. Your session name may not contain special characters, since that could break the startup command, and the workaround is to comment out ark_SessionName and define the value inside GameUserSettings.ini instead. And you can override or add variables for a specific system user by creating a file called .arkmanager.cfg in the home directory of that user.
The command surface, from list-instances to the global options
The usage line sets out the shape of the tool: arkmanager [Global Options] <command> [Command Options] [Command Args] [Instances].
The global options are minimal. --help prints help on using the command and --version prints the arkmanager version. The common options affect output rather than behaviour: --verbose exposes the output of SteamCMD, --dots prints dots for progress and --spinner uses a spinner for progress.
The commands split into two groups. The instanceless ones are upgrade-tools, which upgrades the ARK server tools to the latest version, uninstall-tools, list-instances with a --brief flag that prints a single line with just the instance names, useconfig, described as a legacy command for specifying an instance for the following commands, and remove-mods, which removes the specified mods from the steamcmd workshop directory. Everything else in the readme acts on instances.
There is also a per-run option form, --arkopt,{option}, which adds the specified option to the server command line and is used with run, start and restart. The documentation expands it into four equivalent forms: -<option> behaves like adding arkflag_<option>=true for this run, -<option>=<value> like arkopt_<option>=<value>, <option> like ark_<option>="", and <option>=<value> like ark_<option>=<value>.
That last mapping is the interesting design choice. The prefixed variables in the config file and the dash-options on the command line are two spellings of the same mechanism, so a per-run override behaves exactly like a permanent setting for that run.
The upgrade path that broke at 1.6.53, and the repository rename
The readme opens with a known issue about updating, and it is worth knowing about because it produces a confusing error message.
If you are updating from 1.6.53 or earlier, you will likely get the message Unable to get latest release. And if arkstUnstable is set, it is likely to say that a hotfix is available and then fail to install it.
The cause is a repository move. The project now lives under the arkmanager organisation, so the fix is either to edit arkmanager wherever it is installed and replace arkstGithubRepo="FezVrasta/ark-server-tools" with arkstGithubRepo="arkmanager/ark-server-tools", or to re-install using the netinstall script.
The second option is cleaner for a fresh machine, and the first is what you need on an existing one, because the install script writes that variable into the installed copy of the script. A copy installed before the move will keep looking for releases in the old location indefinitely, which is exactly what the error message is telling you, though not in those words.
The release history shows the project is still being worked on, with v1.6.69 from 2026-06-06, v1.6.68 from 2025-12-13 and v1.6.67 from 2025-07-17, and the repository is not archived.
Editorial conclusion
Adopt ark-server-tools if you run more than one ARK: Survival Evolved server on Linux and want a single script that handles SteamCMD, updates and per-instance configuration, since the instance config files and the port settings it enforces are the parts you would otherwise hand-maintain. Do not adopt it if you want a graphical or panel-based control surface, since this is a shell tool with a configuration file and a service option, and do not expect it to work on CentOS 6 or Debian 7 without compiling a newer glibc first. Before you install, confirm that the steam user exists with SteamCMD in place, and after installation check the arkstGithubRepo setting, because a copy installed before the project moved to the arkmanager organisation still points at the old repository and will report that it cannot get the latest release.
Frequently asked questions
How do I install ark-server-tools on Linux?
Run curl -sL https://raw.githubusercontent.com/arkmanager/ark-server-tools/master/netinstall.sh | sudo bash -s steam, passing the steam user the server will run as, and append --install-service to also install the daemon. For an unprivileged user install, run the same command with bash -s -- --me instead of sudo.
Why does my ARK server crash or hang with 0 players when I run multiple instances?
Because the ports are shared. Each instance needs its own ark_Port, ark_QueryPort and ark_RCONPort settings, and the documentation states that sharing the QueryPort or Port causes the server to crash or hang without being queryable, while sharing the RCONPort makes it hang at 0/0 players.
What is the Unable to get latest release error when updating ark-server-tools?
It happens when updating from 1.6.53 or earlier, because the installed script still points at the old repository. Edit arkmanager and replace arkstGithubRepo="FezVrasta/ark-server-tools" with arkstGithubRepo="arkmanager/ark-server-tools", or re-install using the netinstall script.
How do I pass extra options to the ARK server startup command?
With four prefixes. Use ark_ for a value, for example ark_MaxPlayers=50, an empty argument for a flag without a value such as ark_bRawSockets="", arkflag_ for a dash-option without an argument such as arkflag_log="", and arkopt_ for a dash-option with an argument such as arkopt_StructureDestructionTag=DestroySwampSnowStructures.
What packages does ark-server-tools need before it will run?
The ARK server is a 32 bit binary, so 32 bit libraries are required: on CentOS or RHEL, perl-Compress-Zlib, curl, lsof, glibc.i686, libstdc++.i686 and bzip2, and on Debian or Ubuntu, perl-modules, curl, lsof, libc6-i386, lib32gcc-s1 and bzip2. SteamCMD must also be installed, and on CentOS 6 or Debian 7 or earlier you need to compile a newer glibc.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/arkmanager-ark-server-tools)Was this useful?