Skip to content

fugasjunior/arma-server-manager

Repository files navigation

Arma Server Manager

Dedicated server administration made easy.

About

Arma Server Manager is a web administration tool for managing dedicated gaming servers mainly for games by Bohemia Interactive, such as Arma 3, DayZ and Arma Reforger. If you're tired of paying expensive game hosting providers and would prefer to host your own server but find the server configuration tedious, then this project is for you.

The manager allows you to set up, control and monitor multiple game servers with just a couple of clicks using a simple user interface. You can easily install workshop mods, upload scenarios, manage headless clients and more. For more comprehensive list of features, see Features.

List of contents

Features

Main dashboard screenshot

More screenshots

Host multiple game servers

Manage multiple Arma 3, DayZ, DayZ Experimental and Arma Reforger servers. With SteamCMD running in the background, server installation is fully automated and installing and updating the server takes just a single click.

Server configuration

You can create multiple servers for each supported game.

All of the following can be configured with a simple form:

Steam Workshop mods

The manager allows you to download and automatically install mods from Steam workshop. Just copy the ID of the mod into the form field and click "Install", everything will be done for you. Then, you can easily enable the downloaded mods for your existing server instances.

Local mods

Besides Steam Workshop mods, you can also use locally stored mod files. Place mod folders in the manager's storage directory and use the Local Mods tab to sync and enable them on your servers. Local mods can also be marked as server-only to exclude them from client mod lists.

Community DLCs (cDLCs)

Besides workshop mods, you can also select which community DLCs you want to run any of your Arma 3 servers.

Launcher HTML mod presets

Organize workshop mods into presets which you can simply activate on the server. To make things even easier, you can upload HTML preset files generated by the Arma launcher which will automatically install all the mods. This also works the other way - create a preset in the manager, export it and share with your comrades.

System dashboard

See basic info about the system resources, such as the current CPU, memory and disk usage.

Headless clients

When running Arma 3 servers, you can launch or stop preconfigured headless clients with a single click.

Scenarios

You can upload and manage .pbo scenarios which will be available to play on your Arma 3 servers.

User management

Create and manage multiple user accounts with granular role-based permissions. Admins can define roles with specific permissions (e.g. read-only server view, mod management) and assign them to users.

Additional game servers

Besides the main supported games, you can also use the manager for very basic control of any other server you wish. That's very useful in case you want to run other servers like Minecraft besides your primary Arma/DayZ servers. For setup, see Additional servers.

Installation

There are two ways to run the project.

Docker setup (recommended)

Prerequisites

Installation

Download docker-compose.yml and .env from the root of this repository and place them in the same directory. Follow the comments inside .env to configure the required values (database credentials, storage path, Steam API key). The remaining settings are optional and have sensible defaults.

DATABASE_ENCRYPTION_SECRET in .env is optional — if omitted, the app auto-generates a secure value on first startup and persists it to config/secrets.properties inside the container volume so it survives restarts.

After you've set up the values, run docker compose up to start the database and the server manager. The app will be accessible at http://localhost:8080 by default.

First login

If you did not set AUTH_USERNAME / AUTH_PASSWORD in .env, the app creates an admin account with a randomly generated password on first startup. The credentials are printed once to the container log:

INFO c.f.s.s.SecurityBootstrap: Initial admin credentials (shown only once):
INFO c.f.s.s.SecurityBootstrap: Username: admin
INFO c.f.s.s.SecurityBootstrap: Password: <generated-password>

Retrieve them with docker compose logs armaservermanager | grep -A2 "Initial admin credentials". Change the password after first login.

Custom installation without Docker

While the Docker approach is recommended because of the ease of setup, there might be reasons why you'd wish to run the manager natively.

You can find the .jar file in releases section of this repository. Follow the next steps to set it up manually.

Prerequisites

JDK 25 + MySQL database

Installing SteamCMD

Follow this guide to install SteamCMD on your server. After the installation is finished, set the full path to SteamCMD executable in application.properties. On Linux, the default path when installing with package manager is /usr/games/steamcmd.

Configuring the Admin UI app

There is a config directory bundled with the .jar executable file. In it, you will find application.properties.EXAMPLE file which contains sample configuration. Copy this file and name it application.properties.

Open the new file and set all the required properties as described.

database.encryption.secret in application.properties is optional — if omitted, the app auto-generates a secure random value on first startup and persists it to config/secrets.properties so it survives restarts. Do not commit this file.

Setting up MySQL database with Docker

In the project you can find docker-compose.yml file for the MySQL database Docker container. Edit the environment variables to match application.properties, especially the database properties, comment out the armaservermanager service and then start the container with docker-compose up -d.

You can also use your own MySQL database server instead if you prefer do to so.

Running the Admin UI app

Launch the application by running: java -jar arma-server-manager.jar. You should be able to access the GUI through http://localhost:8080 by default.

First time setup

Getting SteamAuth token

If you have Steam Guard 2FA enabled on your Steam account, you're going to need to get a SteamAuth token. To do this, either manually launch SteamCMD with a command line and log in, or use the semi-automated approach through UI.

NOTE: Currently, there is no support for 2FA authentication with Steam mobile application.

Option 1: Obtain Steam Guard token through UI

Upon first startup, head to "App config" tab and fill out your Steam username and password. Then, head to "Dashboard" and try to download any available server.

After a short while, the installation will fail because of invalid credentials. However, at this time, you should have received an email with Steam Guard token, which you can now add in the "App Config" tab. Proceed to the next step to store this token in the app.

Option 2: Manually logging into SteamCMD

If you have access to the SteamCMD (when running the manager natively or by execing into the manager container with docker exec -it <container_name> /bin/bash), you can also get the token directly.

Launch steamcmd command. Next, in the shell, type login <your_steam_name> and input password when prompted. Then you'll be prompted to input Steam token which will be sent into your email. Enter it to successfully login and then type quit to exit the SteamCMD interface.

Setting up SteamAuth

In the GUI, navigate to "App config" tab. There, you need to enter your Steam account username, password and the token which you previously received through e-mail. This is needed to interact with SteamCMD to install/update the server and any workshop mods.

Note: The token has a limited lifetime. Sooner or later, some actions will start to fail because of invalid token. At the same time, you should get a fresh token to your email. After that, you just need to update the token in the manager.

Installing server files

After setting up the SteamAuth, navigate to "Dashboard" tab and just click the "Install/Update" button on the servers you want to install. The server will download its necessary files. This might take a few minutes or even a couple of hours depending on your network bandwidth, but eventually, the installation should finish.

Configuring your first server

Head to "Servers" tab and click the "Create new server" button. From the dropdown, select which server you want to create. After that, finish the configuration and press "Submit" to create the server.

Now, you should already see the server appear in the servers list. Now you're pretty much done - try running the server!

Using local mods

Supported for Arma 3 and DayZ only.

Local mods are mod folders you manage yourself — they are not downloaded from Steam Workshop.

  1. Place the mod folder in the correct subdirectory of your mods storage path:

    • Arma 3: <mods dir>/local/ARMA3/<ModName>
    • DayZ: <mods dir>/local/DAYZ/<ModName>

    With Docker the mods dir lives inside your STORAGE_PATH volume (e.g. $STORAGE_PATH/mods/local/ARMA3/<ModName>). Without Docker it is the value of directory.mods in application.properties (default /home/armaservermanager/mods).

  2. Sync — in the UI, open the Mods page and switch to the Local Mods tab, then click Sync local mods. Sync scans the directories, registers new mod folders, refreshes existing ones, removes entries for deleted folders, lowercases all file names (required by the game), copies .bikey files into each installed server's keys directory, and creates the necessary symlinks.

  3. Enable on a server — edit your server and add the local mod to the active mod list, just like a workshop mod.

Additional servers

If you need to manage other servers than the ones natively supported, you can use the Additional servers feature. This allows you to start and stop any gaming servers you have previously installed on the machine.

Setup of an additional server requires you to access the database directly and import the settings manually.

  1. Install and configure the server you wish to control with the app.
  2. Create a shell script used to start the server executable with necessary parameters.
  3. Execute the following statement in the database (e.g. using Adminer which comes with the basic docker-compose file)
INSERT INTO `additional_server` (`id`, `name`, `command`, `server_dir`, `image_url`)
VALUES (0, 'Minecraft', '/path/to/minecraft.sh', '/path/to/minecraft/server/directory', 'https://optionalIconUrl.com/minecraft.png');

The script might look like: minecraft.sh

#!/bin/bash
cd /path/to/minecraft/server/directory
java --add-opens java.desktop/java.awt=ALL-UNNAMED -Xms2G -Xmx8G -XX:+UseG1GC -jar server.jar nogui

After the setup, you should be able to see the server listed in Additional servers tab, and start it with a click of a button.

Discord

Have some feedback, need help or just want to chat? Join the Discord server.

Support

Enjoy my work?

Donate with PayPal

"Buy Me A Coffee"

Credits

This app was inspired by Dahlgren's Arma Server Admin project. Feel free to check out his project too!

About

A web administration tool for managing Arma 3, Arma Reforger and DayZ dedicated servers

Topics

Resources

License

Stars

Watchers

Forks

Contributors