This Python CLI tool helps you manage ARK servers.
- Pull configurations from remote servers
- Create YAML configurations from INI files
- Create INI configurations from YAML files
- Push configurations to remote servers
-
Clone the repository:
git clone https://github.com/paqx/arkman.git cd arkman -
Create a Python virtual environment:
- Linux/MacOS:
python -m venv .venv source .venv/bin/activate - Windows:
python -m venv .venv .venv\Scripts\activate
- Linux/MacOS:
-
Install dependencies:
pip install -r requirements.txt
-
Make the
arkman.pyfile executable (Linux/MacOS only):chmod +x arkman.py
Note: Windows users can skip this step and run the script directly with Python.
-
Create a
.envfile to store connection details:ABERRATION_HOST=<your_aberration_host> ABERRATION_USER=<your_aberration_user> ABERRATION_PASS=<your_aberration_password> CRYSTAL_ISLES_HOST=<your_crystal_isles_host> CRYSTAL_ISLES_USER=<your_crystal_isles_user> CRYSTAL_ISLES_PASS=<your_crystal_isles_password> # Add entries for Extinction, Fjordur, Gen_1, Gen_2, Island, and Ragnarok
- Linux/MacOS (executable method):
./arkman.py <command> [options]
- All platforms (Python interpreter method):
python arkman.py <command> [options]
-
Pull Configurations
Download configuration files from remote servers to the local
configs/inidirectory.# Pull from all servers python arkman.py pull # Pull from specific servers (space-separated list) python arkman.py pull -s Aberration Crystal_Isles # or python arkman.py pull --servers Aberration Crystal_Isles
-
Create YAML Configurations
Generate YAML configuration files from INI configuration files.
python arkman.py load
-
Create INI Configurations
Generate INI configuration files from YAML configuration files.
python arkman.py dump
-
Push Configurations
Upload configuration files from the local
configs/inidirectory to the remote servers.# Push to all servers python arkman.py push # Push to specific servers (space-separated list) python arkman.py push -s Fjordur Gen_1 # or python arkman.py push --servers Fjordur Gen_1
- The
-s/--serversparameter accepts one or more server names (case-sensitive). - By default, an action is performed on all servers.
The goal is to use a GitOps approach for managing ARK server configurations. The configurations should be version-controlled and easily deployed.
-
Import Existing Configurations
Import your current server configuration files:python arkman.py pull python arkman.py load
This will create:
- INI files in
configs/ini/ - YAML files in
configs/yml/
- INI files in
-
Sanitize and Modularize
After the YAML files are generated:- Move sensitive or server-specific information (like passwords, admin keys, RCON ports) to the
.envfile. - Move repetitive sections into includes. Use the
!includeYAML tag to reference files inconfigs/yml/includes/.
- Move sensitive or server-specific information (like passwords, admin keys, RCON ports) to the
-
Edit & Version Changes
Make any configuration changes by editing the YAML files. Use environment variables and YAML includes:Message: ${MOTD} OverridePlayerLevelEngramPoints: !include OverridePlayerLevelEngramPoints.yml
-
Apply Configurations
After making the changes, commit them to your version control repository. Then generate and deploy the updated configs:git add . git commit -m "fix: correct MaxPlayers setting" git push # Push changes to your repo python arkman.py dump # Convert YAML to INI, expanding env vars/includes python arkman.py push # Upload configs to your servers