Skip to content

fix: run Satisfactory server as steam user - #2045

Merged
MickLesk merged 3 commits into
community-scripts:mainfrom
n8flx:fix/satisfactory-steam-user
Jul 24, 2026
Merged

MickLesk merged 3 commits into
community-scripts:mainfrom
n8flx:fix/satisfactory-steam-user

Conversation

@n8flx

@n8flx n8flx commented Jul 22, 2026 •

Copy link
Copy Markdown
Contributor

✍️ Description

Fixes the Satisfactory dedicated server failing to start automatically because FactoryServer.sh must not be launched as root.

  • creates a dedicated system steam user during installation;
  • installs and updates the server through SteamCMD as steam;
  • runs satisfactory.service as steam with the correct home directory;
  • migrates existing save data from /root during the next update;
  • installs a systemd drop-in so existing containers are migrated without reinstalling;
  • preserves systemctl enable --now satisfactory for automatic startup.

The dedicated user is required for this application because users reported that FactoryServer.sh fails under root and starts successfully under a non-root Steam account.

🔗 Related PR / Issue

Link: #

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected.
  • No breaking changes – Existing functionality remains intact.
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.

Static validation completed with bash -n, ShellCheck 0.11.0 at error severity, and git diff --check. A live Proxmox test environment was not available.


🏗️ arm64 Support (X in brackets)

  • arm64 supported - Tested and supported on arm64.
  • arm64 not tested - Assumed to work on arm64, but testing has not been done.
  • arm64 not supported - Confirmed upstream dependencies or binaries do not support arm64.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • ✨ New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing functionality in a way that may require updates.
  • 🆕 New script – A fully functional and tested script or script set.
  • 🌍 Website update – Changes to website-related JSON files or metadata.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, AppName.md, CONTRIBUTING.md, or other docs.

🔍 Code & Security Review (X in brackets)

  • Follows CODE-AUDIT.md & CONTRIBUTING.md guidelines
  • Uses correct script structure (AppName.sh, AppName-install.sh, AppName.json)
  • No hardcoded credentials
  • No Docker / Docker Compose – The application is installed bare-metal; Docker is not used.
  • No git pull – Updates use fetch_and_deploy_gh_release, fetch_and_deploy_codeberg_release, fetch_and_deploy_gl_release, or fetch_and_deploy_from_url instead of git pull.

🤖 AI Assistance (X in brackets)

  • No AI used – Scripts were written without AI assistance.
  • AI was used – I confirm the scripts were built using AGENTS.md and .github/agents/pve-script-creator.agent.md as guidance, and the output has been reviewed and corrected to match those guidelines.

📋 Additional Information (optional)

The general guideline discourages unnecessary application users. This user is necessary because the game server does not run correctly as root. Running it unprivileged also avoids granting the proprietary game binary root access.


📦 Application Requirements (for new scripts)

  • The application is at least 6 months old
  • The application is actively maintained
  • The application has 600+ GitHub stars
  • Official release tarballs are published
  • I understand that not all scripts will be accepted due to various reasons and criteria by the community-scripts ORG

🌐 Source

@n8flx
n8flx requested a review from a team as a code owner July 22, 2026 21:23
@MickLesk

Copy link
Copy Markdown
Member

I think Install should be enough, its an Dev Script atm, so no need to migrate Dev instances

@CrazyWolf13

Copy link
Copy Markdown
Member

@n8flx I see the checkbox "Tested thoroughly" was not clicked, can you test this properly?

@asylumexp asylumexp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

since its a script that's in dev and that no installs are working shouldn't need handling existing installs

Comment thread ct/satisfactory.sh Outdated
Comment thread ct/satisfactory.sh Outdated
MickLesk and others added 2 commits July 23, 2026 14:24
Co-authored-by: Sam Heinz <sam@samheinz.com>
@MickLesk
MickLesk merged commit cf3694c into community-scripts:main Jul 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants