A Linux dedicated game server launcher for Palworld, ARK: Survival Evolved, and Satisfactory — manages steamcmd, systemd, and polkit on Debian/Ubuntu.
Project description
road-poneglyph
A multi-game dedicated server launcher for Linux. road-poneglyph installs, configures, and manages Palworld, ARK: Survival Evolved, and Satisfactory servers on Debian and Ubuntu using systemd and Polkit. Day-to-day start/stop/restart needs no sudo at all thanks to the merged Polkit rule and per-game sudoers fragments.
Features
- Three games, one CLI:
road-poneglyph palworld <verb>installs a native systemd service for PalServer;road-poneglyph ark <verb>wraps ark-server-tools (arkmanager);road-poneglyph satisfactory <verb>installs Satisfactory via SteamCMD with SIGINT-based graceful shutdown and HTTPS API save integration. - Automated installation: downloads SteamCMD, pulls the right app (Palworld 2394010, ARK 376030, Satisfactory 1690800), and writes a systemd unit.
- Package manager repair: attempts to fix common
apt/dpkgbreakage before running steamcmd. - Merged Polkit rule: a single
/etc/polkit-1/rules.d/40-road-poneglyph.rulesauthorises the invoking user to start/stop/restart every known game service unit withoutsudo. - ARK sudoers fragment:
/etc/sudoers.d/road-poneglyph-arklets the invoking user runsudo -u steam /usr/local/bin/arkmanager *with no password prompt. - Opt-in autostart for ARK:
arkserver.serviceis NOT installed by default. Pass--enable-autostarttoroad-poneglyph ark installto write and enable the systemd unit; without the flag, manage the server exclusively throughroad-poneglyph ark start/stop/...(which callarkmanagerdirectly — no systemd unit needed). - Interactive settings editor:
edit-settingsparses the per-game config file (PalWorldSettings.inifor Palworld,/etc/arkmanager/instances/main.cfgfor ARK,GameUserSettings.inifor Satisfactory) and lets you change values interactively. - Satisfactory HTTPS API integration:
road-poneglyph satisfactory savetriggers a save via the game's REST API;stopautomatically saves before sending SIGINT.
Prerequisites
- A Debian 12+/13 or Ubuntu 22.04+/24.04 server (Linux only).
sudoprivileges for the user runningroad-poneglyph.- Python 3.8 or newer.
- For ARK only: apt components
contrib non-free(Debian) ormultiverse(Ubuntu).road-poneglyph ark installenablescontrib non-freeon Debian automatically; Ubuntu server images shipmultiverseby default.
Installation
pip install road-poneglyph
The PyPI distribution is named road-poneglyph; the installed CLI binary is road-poneglyph. A pipx install also works if you prefer an isolated user-level environment:
pipx install road-poneglyph
Migration from palworld-server-launcher v0.1.19
road-poneglyph v0.2.0 replaces the older palworld-server-launcher v0.1.19 package. Read this section before upgrading — the distribution rename means a pip install --upgrade on the old name will NOT pull v0.2.0.
-
PyPI distribution renamed. v0.1.19 shipped as
palworld-server-launcher; v0.2.0 ships asroad-poneglyph.pip install --upgrade palworld-server-launcherwill not find v0.2.0 — the name changed. -
Recommended path: fresh install. Install the new distribution rather than trying to upgrade in place:
pip install road-poneglyph pip uninstall palworld-server-launcher # safe — separate distribution
-
CLI entry point changed. The old binary was
palworld-server-launcher; the new binary isroad-poneglyph. Update shell aliases, cron entries, or shell scripts that invoke the legacy name. -
Your existing Palworld server keeps working. v0.1.19 installed
/etc/systemd/system/palserver.serviceand game files under~/Steam/steamapps/common/PalServer. v0.2.0 operates on the same systemd unit and the same directory —road-poneglyph palworld start,stop,restart,statusall target the service your v0.1.19 install created. No reinstall is required just to adopt the new CLI name. -
Manual Polkit cleanup (POL-04). v0.1.19 wrote
/etc/polkit-1/rules.d/40-palserver.rules. v0.2.0 writes/etc/polkit-1/rules.d/40-road-poneglyph.rulesinstead — the merged rule covers every known game service unit. Polkit merges rule files additively, so the two files coexist harmlessly. Once you have confirmed thatroad-poneglyph palworld start/stop/restartwork without a password under v0.2.0, remove the old rule:sudo rm /etc/polkit-1/rules.d/40-palserver.rules
Quick Start
Palworld
# Install at port 8211 with a 16-player cap and start immediately
road-poneglyph palworld install --port 8211 --players 16 --start
ARK: Survival Evolved
# Install with the admin password you want to use (or omit --admin-password for a
# hidden prompt) and start the server
road-poneglyph ark install --map TheIsland --admin-password 'your-strong-password' --start
If you prefer not to pick a password yourself, use --generate-password and road-poneglyph will generate a 128-bit url-safe admin password and print it once.
Satisfactory
# Install at the default ports and start immediately
road-poneglyph satisfactory install --port 7777 --reliable-port 8888 --players 4 --start
First-run note: After installation, the first player to connect via the in-game Server Manager must "claim" the server (sets admin password). Config files (Engine.ini, GameUserSettings.ini) are only generated after the first graceful shutdown — run road-poneglyph satisfactory stop, then road-poneglyph satisfactory edit-settings.
Palworld Usage (road-poneglyph palworld <verb>)
Every Palworld verb targets the native palserver.service systemd unit. Start/stop/restart run without sudo thanks to /etc/polkit-1/rules.d/40-road-poneglyph.rules.
# Install (downloads SteamCMD, pulls PalServer, writes palserver.service)
road-poneglyph palworld install --port 8211 --players 32 --start
Creates the systemd unit at port 8211 with a 32-player cap and starts the server right away.
road-poneglyph palworld start
Starts palserver.service via systemctl start (no sudo required).
road-poneglyph palworld stop
Stops the server gracefully.
road-poneglyph palworld restart
Restarts the service — useful after editing PalWorldSettings.ini.
road-poneglyph palworld status
Shows current service status (systemctl status palserver).
road-poneglyph palworld enable
Enables palserver.service at boot.
road-poneglyph palworld disable
Disables palserver.service at boot.
road-poneglyph palworld update
Re-runs SteamCMD against the Palworld app id and leaves the service untouched. Restart the service afterwards to pick up changes.
road-poneglyph palworld edit-settings
Opens an interactive editor against PalWorldSettings.ini, preserving unknown keys.
ARK Usage (road-poneglyph ark <verb>)
The ARK integration is an arkmanager (ark-server-tools) wrapper. road-poneglyph ark install creates a dedicated steam system user, drops /etc/sudoers.d/road-poneglyph-ark to allow the invoking user to call sudo -u steam /usr/local/bin/arkmanager * without a password, and writes /etc/arkmanager/instances/main.cfg. An arkserver.service unit is written only when --enable-autostart is passed at install time; otherwise no systemd unit exists for ARK and day-to-day management goes through arkmanager directly via road-poneglyph ark <verb>.
Valid maps (12 supported): TheIsland, TheCenter, ScorchedEarth_P, Aberration_P, Extinction, Ragnarok, Valguero_P, CrystalIsles, LostIsland, Fjordur, Genesis, Genesis2.
# Minimal install
road-poneglyph ark install --admin-password 'strong-password'
# Full-featured install: autostart on boot, custom session name, start now
road-poneglyph ark install \
--map Ragnarok \
--port 7778 --query-port 27015 --rcon-port 27020 \
--players 20 \
--session-name 'MyArkServer' \
--admin-password 'strong-password' \
--beta preaquatica \
--enable-autostart --start
Runs a full arkmanager install: enables the required apt components on Debian, creates the steam user, fetches ark-server-tools, writes main.cfg, and optionally enables boot autostart.
road-poneglyph ark start
Runs sudo -u steam /usr/local/bin/arkmanager start — boots the ARK server via arkmanager.
road-poneglyph ark stop
Graceful shutdown via arkmanager stop (saves world).
road-poneglyph ark restart
Runs arkmanager restart.
road-poneglyph ark status
arkmanager status — shows running state and connected players.
road-poneglyph ark saveworld
Forces a world save via arkmanager saveworld (uses RCON under the hood).
road-poneglyph ark backup
Creates a save backup via arkmanager backup.
road-poneglyph ark update
Updates the ARK server. Runs arkmanager update --validate --beta=preaquatica twice on purpose — steamcmd has a known first-run self-update quirk where the first invocation only updates steamcmd itself; the second invocation does the actual game update.
road-poneglyph ark enable
Enables arkserver.service at boot. Only effective if arkserver.service exists — pass --enable-autostart to road-poneglyph ark install if you did not already.
road-poneglyph ark disable
Disables arkserver.service from starting at boot.
road-poneglyph ark edit-settings
Opens an interactive editor against /etc/arkmanager/instances/main.cfg (arkmanager's instance config). It does NOT edit GameUserSettings.ini — arkmanager owns that file; editing it by hand is unsupported.
Satisfactory Usage (road-poneglyph satisfactory <verb>)
Satisfactory uses a native SteamCMD install (app 1690800) with a satisfactory.service systemd unit. The server shuts down via SIGINT (not SIGTERM) and does NOT auto-save on shutdown — road-poneglyph satisfactory stop calls the HTTPS API SaveGame endpoint before sending SIGINT.
System requirements: 12-16 GB RAM recommended (single-threaded simulation; autosaves spike memory).
# Install with default ports, 4-player cap, and start
road-poneglyph satisfactory install --port 7777 --reliable-port 8888 --players 4 --start
# With auto-update on every service start
road-poneglyph satisfactory install --port 7777 --reliable-port 8888 --players 4 --auto-update --start
road-poneglyph satisfactory start
Starts satisfactory.service via systemctl start (no sudo required).
road-poneglyph satisfactory stop
Calls the HTTPS API SaveGame first (pre-shutdown save), then sends SIGINT for graceful shutdown. The server does NOT auto-save on any signal.
road-poneglyph satisfactory restart
Restarts the service (triggers ExecStop save → SIGINT → ExecStart).
road-poneglyph satisfactory status
Shows systemd status + HTTPS API health check (if server is running and claimed).
road-poneglyph satisfactory save [name]
Triggers a save via the HTTPS REST API. Requires the server to be claimed (admin password set in-game). On first use, prompts for admin password and caches the Bearer token at ~/.config/road-poneglyph/satisfactory-api-token.
road-poneglyph satisfactory enable
Enables satisfactory.service at boot.
road-poneglyph satisfactory disable
Disables satisfactory.service from starting at boot.
road-poneglyph satisfactory update
Re-runs SteamCMD to validate/update the server files.
road-poneglyph satisfactory edit-settings
Opens an interactive editor for GameUserSettings.ini (Unreal Engine INI format). Note: Config files only exist after the first graceful stop — start the server, let it initialize, then stop before editing.
Satisfactory First-Run Guide
- Install:
road-poneglyph satisfactory install --start - Wait: Server takes 2-5 minutes to fully initialize on first boot.
- Claim: Connect via the in-game Server Manager and "Claim" the server (sets admin password).
- Stop once:
road-poneglyph satisfactory stop— this generates config files. - Edit settings:
road-poneglyph satisfactory edit-settings— now configs exist. - Start:
road-poneglyph satisfactory start— ready for players.
Firewall / Port Reference
road-poneglyph does NOT manage your firewall. Open the ports below yourself (example ufw rules included).
| Game | Protocol | Port | Purpose |
|---|---|---|---|
| Palworld | UDP | 8211 | Game + query (single port) |
| ARK | UDP | 7777 | Game port (implicit in arkmanager) |
| ARK | UDP | 7778 | ark_Port raw socket |
| ARK | UDP | 27015 | ark_QueryPort Steam query |
| ARK | TCP | 27020 | ark_RCONPort RCON admin |
| Satisfactory | UDP | 7777 | Game traffic |
| Satisfactory | TCP | 7777 | HTTPS REST API (management, saves) |
| Satisfactory | TCP | 8888 | Reliable messaging |
Example ufw rules:
# Palworld
sudo ufw allow 8211/udp
# ARK
sudo ufw allow 7777/udp
sudo ufw allow 7778/udp
sudo ufw allow 27015/udp
sudo ufw allow 27020/tcp
# Satisfactory
sudo ufw allow 7777/udp
sudo ufw allow 7777/tcp
sudo ufw allow 8888/tcp
Permissions & Security Model
Palworld. The merged Polkit rule at /etc/polkit-1/rules.d/40-road-poneglyph.rules grants the installing user permission to invoke org.freedesktop.systemd1.manage-units on palserver.service (and every other registered game service unit) without sudo. You can verify the grant with:
pkcheck --action-id=org.freedesktop.systemd1.manage-units \
--process $$ --allow-user-interaction
No part of the Palworld flow edits /etc/sudoers or asks for a password after installation.
ARK. The arkmanager tool runs as a dedicated steam system user, so every ARK verb is really sudo -u steam /usr/local/bin/arkmanager .... road-poneglyph ark install writes /etc/sudoers.d/road-poneglyph-ark, which grants the installing user exactly NOPASSWD: /usr/local/bin/arkmanager * — no broader sudo rights, no wildcard path, no ALL=(ALL) clause. This is the minimum permission surface that still lets you run road-poneglyph ark start, stop, saveworld, backup, etc. without being prompted for a password.
Version
road-poneglyph --version
Supported OS
- Debian 12 (bookworm) and Debian 13 (trixie).
- Ubuntu 22.04 LTS and Ubuntu 24.04 LTS.
- Linux only. macOS and Windows are not supported.
- ARK prerequisite:
contrib non-freeapt components on Debian (enabled automatically byroad-poneglyph ark install), ormultiverseon Ubuntu (already present on stock Ubuntu server images).
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file road_poneglyph-0.3.0.tar.gz.
File metadata
- Download URL: road_poneglyph-0.3.0.tar.gz
- Upload date:
- Size: 32.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70b2f53d8a7f7bd89225d486d8d486dfb399e4b0900dc2b0e1ae4fa30c897ff4
|
|
| MD5 |
62275113e9c8b5c2cffdfb3da9fac3c6
|
|
| BLAKE2b-256 |
e1793e0b0d658923f0c6734abe9f7b03b908cb5cf5a084ceef1b1561fb4b8fa0
|
Provenance
The following attestation bundles were made for road_poneglyph-0.3.0.tar.gz:
Publisher:
workflow.yml on axatbhardwaj/road-poneglyph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
road_poneglyph-0.3.0.tar.gz -
Subject digest:
70b2f53d8a7f7bd89225d486d8d486dfb399e4b0900dc2b0e1ae4fa30c897ff4 - Sigstore transparency entry: 1343426391
- Sigstore integration time:
-
Permalink:
axatbhardwaj/road-poneglyph@578b4d58dc8303e6bae7db8380df5258c599290a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/axatbhardwaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@578b4d58dc8303e6bae7db8380df5258c599290a -
Trigger Event:
push
-
Statement type:
File details
Details for the file road_poneglyph-0.3.0-py3-none-any.whl.
File metadata
- Download URL: road_poneglyph-0.3.0-py3-none-any.whl
- Upload date:
- Size: 26.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e388abe7513750ae0c2428b32e8c5154134ff92adb26b595b8411899f47c651
|
|
| MD5 |
ca11dcf4f1666e4819e0c8c1c0652897
|
|
| BLAKE2b-256 |
18562c47b9bfbd346e4e515c6efb53ba4458d9511fa652ddc09e71fe91ac6c49
|
Provenance
The following attestation bundles were made for road_poneglyph-0.3.0-py3-none-any.whl:
Publisher:
workflow.yml on axatbhardwaj/road-poneglyph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
road_poneglyph-0.3.0-py3-none-any.whl -
Subject digest:
1e388abe7513750ae0c2428b32e8c5154134ff92adb26b595b8411899f47c651 - Sigstore transparency entry: 1343426405
- Sigstore integration time:
-
Permalink:
axatbhardwaj/road-poneglyph@578b4d58dc8303e6bae7db8380df5258c599290a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/axatbhardwaj
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@578b4d58dc8303e6bae7db8380df5258c599290a -
Trigger Event:
push
-
Statement type: