Skip to content

feat: improve password handling, install checks, and fix issues #52 a…#53

Open
azgaviperr wants to merge 2 commits into
acemod:mainfrom
azgaviperr:fix/rcon
Open

feat: improve password handling, install checks, and fix issues #52 a…#53
azgaviperr wants to merge 2 commits into
acemod:mainfrom
azgaviperr:fix/rcon

Conversation

@azgaviperr
Copy link
Copy Markdown

Feat: improve password handling, install checks, and fix issues #52 and #47; upgrade to Debian Trixie

  • launch.py:

    • Refactored password generation for RCON and admin: now uses secure, user-friendly random passphrases with two dictionary words, a separator, a random number, and a special character.
    • Autogenerates and prints RCON and admin passwords if not provided, improving first-time setup and security. (fixes Server Fails to Start if RCON Password is Not Set #52]
    • Added /reforger VOLUME, improving container restart delay and issue with SKIP_INSTALL=true leading to error (fixes Cache/Reload server files instead of redownloading every time #47).
    • Ensured RCON config is only set if all required environment variables are present; otherwise, disables RCON.
    • Added encoding="utf-8" when reading the dictionary file for password generation.
    • Improved parsing and validation of GAME_MODS_IDS_LIST and GAME_MODS_JSON_FILE_PATH.
    • General code cleanup, improved comments, and better environment variable handling.
  • Dockerfile:

    • Upgraded base image to debian:trixie-slim, replacing the old unsupported Debian version.
    • Upgraded all system dependencies to latest available versions.
    • Added installation of libterm-readline-perl-perl to fix "Can't locate Term/ReadLine.pm" warning from SteamCMD
    • Ensured all necessary volumes are declared for persistence (/reforger, /reforger/Configs, /reforger/workshop, /home/profile, /steamcmd).
    • Minor formatting and ordering improvements for clarity.

These changes improve robustness, security, and user experience, and resolve issues #52 and #47, while ensuring compatibility with the latest Debian

…d#52 and acemod#47; upgrade to Debian Trixie

- launch.py:
  * Refactored password generation for RCON and admin: now uses secure, user-friendly random passphrases with two dictionary words, a separator, a random number, and a special character.
  * Autogenerates and prints RCON and admin passwords if not provided, improving first-time setup and security.
  * Added robust check: if SKIP_INSTALL=true, verifies /reforger/ArmaReforgerServer exists, else prints a clear error about missing binary and Docker volume mapping (fixes acemod#52).
  * Ensured RCON config is only set if all required environment variables are present; otherwise, disables RCON.
  * Added encoding="utf-8" when reading the dictionary file for password generation.
  * Improved parsing and validation of GAME_MODS_IDS_LIST and GAME_MODS_JSON_FILE_PATH.
  * General code cleanup, improved comments, and better environment variable handling.

- Dockerfile:
  * Upgraded base image to debian:trixie-slim, replacing the old unsupported Debian version.
  * Upgraded all system dependencies to latest available versions.
  * Added installation of libterm-readline-perl-perl to fix "Can't locate Term/ReadLine.pm" warning from SteamCMD (fixes acemod#47).
  * Ensured all necessary volumes are declared for persistence (/reforger, /reforger/Configs, /reforger/workshop, /home/profile, /steamcmd).
  * Minor formatting and ordering improvements for clarity.

These changes improve robustness, security, and user experience, and resolve issues acemod#52 and acemod#47, while ensuring compatibility with the latest Debian
@azgaviperr
Copy link
Copy Markdown
Author

azgaviperr commented Aug 31, 2025

I've made a proper fix for #47 by adding the VOLUME /reforger instruction to the Dockerfile. This ensures all game data is now stored in a persistent volume.

As /reforger/workshop and /reforger/Configs are separate volumes. Docker sees these as distinct, isolated mount points, so their content won't impact the size of the main /reforger volume or get mixed up. This prevents the game from redownloading on every container restart, as the data now persists.

This fix makes the container much faster to restart and update. While the volumes are now persistent by default, users can still map them to local directories for several reasons:

  • Customization: To directly tweak server files without needing to rebuild the container.
  • Storage Efficiency: To share a single volume among multiple servers and save disk space.

Comment thread launch.py
Comment on lines +33 to +37
separator = secrets.choice(["-", "_", ".", "~"])

# Add a random number and a special character for extra security
random_number = secrets.randbelow(100)
special_char = secrets.choice(string.punctuation)
Copy link
Copy Markdown
Member

@BrettMayson BrettMayson Sep 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really not needed, if there is a concern about the password, it should just be increased to another word

@micaww
Copy link
Copy Markdown

micaww commented Dec 4, 2025

can you split the #47 fix out please? why put a bunch of random changes into one PR just so it can get blocked?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Server Fails to Start if RCON Password is Not Set Cache/Reload server files instead of redownloading every time

3 participants