Skip to main contentSkip to navigation
[email protected]
Client AreaSupport
Hosting Mammoth
HostingMammothYour Data, Our Responsibility
Home
Solutions
Hosting Services
Store
Pricing
About
Blog
API
Contact

Stay Ahead of the Curve

Get the latest insights on cybersecurity, AI innovations, and enterprise data solutions delivered to your inbox.

Hosting Mammoth
HostingMammothEnterprise Solutions

Enterprise-grade data solutions. Hosting, recovery, cybersecurity, and AI-powered services for businesses worldwide.

[email protected]
Sun - Fri, 9:00am - 5:00pm

Services

  • Cloud Hosting
  • Data Recovery
  • Cybersecurity
  • Legal Support
  • MSP Services
  • Web Development
  • AI Services
  • Free Server Migration

Hosting

  • VPS Hosting (NVMe SSD)
  • VDS Hosting (NVMe)
  • Storage VPS (High SSD)
  • GPU Servers
  • Managed Services
  • Cloud Firewall
  • Load Balancer
  • One-Click Apps
  • n8n Hosting
  • Object Storage
  • FAQ

Company

  • Store
  • Pricing
  • About Us
  • Locations
  • Blog
  • Testimonials
  • Contact
  • Affiliate Program
  • White-Label
  • Terms of Service
  • Privacy Policy
  • Browser Cookies
  • SLA

Support

  • Client Area
  • Submit Ticket
  • Knowledge Base
  • Server Status
  • API Documentation

© 2026 Hosting Mammoth. All rights reserved.

Knowledge Base
Getting StartedAccount ManagementVPS HostingGPU ServersStorage VPSCloud FirewallLoad BalancerServer ManagementBilling & PaymentsSupport & TicketsAffiliate ProgramReseller ProgramMarketplace & Appsn8n HostingManaged ServicesServer MigrationAPI & DevelopersSecurityTroubleshootingGlossaryInstall Guides
  1. Home
  2. /
  3. Support
  4. /
  5. Install Guides
  6. /
  7. How To Install Satisfactory Server Ubuntu
GUIDEInstall Guides

How to Install Satisfactory Dedicated Server on Ubuntu 24.04

21 min read

How to Install Satisfactory Dedicated Server on Ubuntu 24.04

Satisfactory is one of the most demanding factory-building games on the market, and a dedicated server is the only sensible way to keep your multiplayer factory humming 24/7. Hosting it on your own VPS gives you uninterrupted uptime, full control over save files, room to install mods, and long-term savings over paid game-hosting providers. This tutorial walks you through a complete production-grade install on Ubuntu 24.04, from the first apt update through systemd autostart, firewall hardening, and automated hourly backups.

Prefer a managed alternative? If you want a VPS with the resources to run Satisfactory plus room for a mod manager, voice server, and web dashboard, deploy a CloudCore Business VPS with 16 GB RAM in under 60 seconds.

Table of Contents

  • Why Self-Host Satisfactory on a VPS?
  • Prerequisites
  • Step 1: Update Ubuntu 24.04
  • Step 2: Create a Dedicated steam User
  • Step 3: Install SteamCMD
  • Step 4: Download the Satisfactory Server (App 1690800)
  • Step 5: Open UDP Port 7777
  • Step 6: First Launch with FactoryServer.sh
  • Step 7: Create a systemd Service
  • Step 8: Set the Admin Password via Server Manager
  • Step 9: Locate and Back Up Save Files
  • Step 10: Automated Hourly Backups with rsync
  • Alternative: LinuxGSM Installation
  • Troubleshooting
  • FAQ
  • Next Steps
  • Why Self-Host Satisfactory on a VPS?

    Paid game hosts such as Nitrado and GPORTAL make spinning up a Satisfactory server easy, but you pay a significant premium for convenience. A 16 GB Satisfactory slot typically runs EUR 25-35 per month and locks you into a single game, a single save region, and a limited control panel. Upgrades cost more, mod management is restricted, and your save files live on hardware you do not control.

    Running Satisfactory on your own Ubuntu VPS flips every one of those trade-offs:

    • Around 70-80 percent long-term cost savings. A CloudCore Business VPS at EUR 29.99 per month hosts Satisfactory plus a Terraria server, a Factorio headless save, a Discord bot, and a Minecraft instance on the same hardware. A comparable stack on paid game hosts would exceed EUR 100 per month.
    • Full root access and mod freedom. Install the Satisfactory Mod Manager, tune Linux kernel parameters, swap storage for NVMe, or run a reverse proxy for a Grafana dashboard showing factory stats.
    • Save files you truly own. Your .sav files live on your VPS, get backed up to your own off-site location, and travel with you if you ever migrate providers.
    • No slot caps or player-count surcharges. Satisfactory dedicated servers support the full 4-player co-op experience (and larger unofficial groups) without extra fees.
    • Uptime measured in months, not hours. Paid hosts frequently restart shared hypervisors. A dedicated VPS only restarts when you choose to, which matters for mid-game trains that take 40 real-time minutes to deliver a batch of turbo motors.
    If you are already self-hosting other games, the marginal cost of adding Satisfactory to the same box is effectively zero.

    Prerequisites

    Before starting, make sure you have:

    • An Ubuntu 24.04 LTS VPS with at least 16 GB RAM, 4 vCPU, and 40 GB of free disk space.
    • SSH access with a user that has sudo privileges.
    • A Satisfactory client installation (Steam or Epic) on your desktop so you can claim the server.
    • Basic familiarity with the Linux command line.
    Recommended Plan: CloudCore Business
    >
    Satisfactory is memory-bound once your factory scales past a few hundred buildings. For a smooth co-op experience on a mature save, we recommend the CloudCore Business plan:
    >
    - 8 vCPU cores
    - 16 GB RAM (24 GB available on upgrade)
    - 200 GB NVMe SSD
    - Unmetered 1 Gbps bandwidth
    - Starting at EUR 29.99/month
    >
    Smaller plans can host a fresh save, but late-game factories will stutter under 16 GB. Scale up rather than fight memory pressure.

    Connect to your server:

    bash
    ssh youruser@your-server-ip

    Official documentation for the Satisfactory dedicated server lives at satisfactory.wiki.gg/wiki/Dedicated_Servers. Keep that page open for reference; it tracks every patch-level change to the server binary.

    Step 1: Update Ubuntu 24.04

    Always start with a clean, patched system. Kernel and glibc updates in particular affect how the game binary schedules threads.

    bash
    sudo apt update && sudo apt upgrade -y

    Install the handful of libraries SteamCMD and the Satisfactory binary require:

    bash
    sudo apt install -y software-properties-common lib32gcc-s1 libsdl2-2.0-0 \
        ca-certificates curl wget tar rsync

    If a kernel update was applied, reboot before continuing:

    bash
    sudo reboot

    Step 2: Create a Dedicated steam User

    Running game servers as root is a classic security mistake. Create an unprivileged steam account that owns SteamCMD, the Satisfactory files, and the save directory.

    bash
    sudo useradd -m -s /bin/bash steam
    sudo passwd steam

    Optionally grant the user sudo access only if you intend to administer from within its shell (most operators leave it unprivileged):

    bash
    # Skip this unless you have a reason
    

    sudo usermod -aG sudo steam

    Switch to the new user for all subsequent SteamCMD operations:

    bash
    sudo su - steam

    You will see the prompt change to steam@your-server:~$. Every command from here through Step 6 runs as this user.

    Step 3: Install SteamCMD

    SteamCMD is Valve's headless tool for downloading and updating dedicated server apps. Ubuntu ships it in the multiverse repository.

    Exit back to your sudo user, enable multiverse, and install:

    bash
    exit   # return to your sudo user

    sudo add-apt-repository multiverse -y sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y steamcmd

    You will be prompted to accept the Steam Subscriber Agreement. Use Tab to highlight OK, press Enter, then accept with I AGREE.

    Create a convenient symlink so the steam user can invoke SteamCMD without a full path:

    bash
    sudo ln -sf /usr/games/steamcmd /usr/local/bin/steamcmd

    Switch back to the steam user:

    bash
    sudo su - steam

    Verify:

    bash
    steamcmd +quit

    Expected output (abbreviated):

    text
    Redirecting stderr to '/home/steam/Steam/logs/stderr.txt'
    [  0%] Checking for available updates...
    [----] Verifying installation...
    Steam Console Client (c) Valve Corporation - version ...
    -- type 'quit' to exit --
    Loading Steam API...OK

    Step 4: Download the Satisfactory Server (App 1690800)

    Satisfactory's dedicated server has Steam App ID 1690800 and is available through anonymous login -- you do not need to own the game on the server account.

    Create a target directory and run SteamCMD:

    bash
    mkdir -p ~/SatisfactoryDedicatedServer
    steamcmd \
        +force_install_dir /home/steam/SatisfactoryDedicatedServer \
        +login anonymous \
        +app_update 1690800 validate \
        +quit

    The download is roughly 6-8 GB and takes a few minutes on a 1 Gbps connection. Expected output tail:

    text
    Update state (0x61) downloading, progress: 99.87 (7834...)
    Success! App '1690800' fully installed.

    If you want the experimental branch (Update X early access), append -beta experimental to the app_update line:

    bash
    steamcmd +force_install_dir /home/steam/SatisfactoryDedicatedServer \
        +login anonymous \
        +app_update 1690800 -beta experimental validate \
        +quit

    Step 5: Open UDP Port 7777

    Since Update 8, Satisfactory uses a single UDP port for game traffic, server queries, and messaging. Open it on the host firewall.

    Exit back to your sudo user:

    bash
    exit

    Allow UDP 7777 in UFW (and SSH if you have not already):

    bash
    sudo ufw allow OpenSSH
    sudo ufw allow 7777/udp comment 'Satisfactory game port'
    sudo ufw enable
    sudo ufw status verbose

    Expected output:

    text
    Status: active
    ...
    7777/udp                   ALLOW IN    Anywhere
    7777/udp (v6)              ALLOW IN    Anywhere (v6)

    If your VPS provider also runs an external firewall (CloudCore's control panel, for example, or a Hetzner Cloud firewall), mirror the same rule there. Connection timeouts are almost always caused by forgetting the provider-side firewall.

    Step 6: First Launch with FactoryServer.sh

    Return to the steam user and run the bundled launcher once to generate the default config files and verify the binary starts cleanly:

    bash
    sudo su - steam
    cd ~/SatisfactoryDedicatedServer
    ./FactoryServer.sh

    You will see the Unreal Engine startup log, followed by lines ending in:

    text
    LogNet: GameNetDriver IpNetDriver_2 IpNetDriver listening on port 7777
    LogGame: Server online - Ready for connections

    Press Ctrl+C to stop. The first run created the config directory structure at ~/.config/Epic/FactoryGame/Saved/. We will not launch it manually again -- systemd takes over next.

    Step 7: Create a systemd Service

    Running Satisfactory under systemd gives you automatic startup on boot, automatic restart after a crash, and unified logging via journalctl.

    Exit back to your sudo user:

    bash
    exit

    Create the unit file:

    bash
    sudo tee /etc/systemd/system/satisfactory.service > /dev/null <<'EOF'
    [Unit]
    Description=Satisfactory Dedicated Server
    Wants=network-online.target
    After=syslog.target network.target nss-lookup.target network-online.target

    [Service] Type=simple User=steam Group=steam WorkingDirectory=/home/steam/SatisfactoryDedicatedServer ExecStartPre=/usr/games/steamcmd +force_install_dir /home/steam/SatisfactoryDedicatedServer +login anonymous +app_update 1690800 validate +quit ExecStart=/home/steam/SatisfactoryDedicatedServer/FactoryServer.sh Restart=on-failure RestartSec=10 KillSignal=SIGINT TimeoutStopSec=60 LimitNOFILE=100000

    [Install] WantedBy=multi-user.target EOF

    Explanation of key directives:

    • ExecStartPre — re-runs SteamCMD on every start, so your server auto-updates when Coffee Stain Studios ships a patch.
    • Restart=on-failure — if the game crashes, systemd restarts it after 10 seconds. Clean shutdowns (such as systemctl stop) do not trigger a restart.
    • KillSignal=SIGINT — Satisfactory gracefully flushes the autosave on SIGINT. Using the default SIGTERM can corrupt the latest save.
    • LimitNOFILE=100000 — raises the file descriptor cap; the Unreal Engine networking stack opens a large number of sockets at scale.
    Enable and start the service:

    bash
    sudo systemctl daemon-reload
    sudo systemctl enable --now satisfactory
    sudo systemctl status satisfactory

    Expected output:

    text
    ● satisfactory.service - Satisfactory Dedicated Server
         Loaded: loaded (/etc/systemd/system/satisfactory.service; enabled; preset: enabled)
         Active: active (running) since Thu 2026-04-16 10:30:00 UTC; 1min ago
       Main PID: 12345 (FactoryServer.s)
          Tasks: 42 (limit: 38123)
         Memory: 3.2G
         CGroup: /system.slice/satisfactory.service
                 ├─12345 /bin/sh ./FactoryServer.sh
                 └─12350 ./FactoryGame/Binaries/Linux/FactoryServer-Linux-Shipping FactoryGame

    Tail the logs any time with:

    bash
    sudo journalctl -u satisfactory -f

    Step 8: Set the Admin Password via Server Manager

    Unlike most dedicated servers, Satisfactory does not use an admin_password= line in an ini file. Instead, you claim the server from the Satisfactory game client and set the password through the in-game Server Manager. This happens once, and the credential is stored encrypted on the server.

  • Launch Satisfactory on your desktop (Steam or Epic).
  • From the main menu choose Server Manager.
  • Click Add Server and enter your-server-ip:7777. Leave the name as anything meaningful like "My CloudCore Server."
  • The server will appear with a yellow Unclaimed status. Click Claim Server.
  • Enter a server name and a strong Admin Password. This is the password other players will need to administer the server; regular players still join without it.
  • Once claimed, open the Manage Saves tab and either upload an existing save or create a new world. Load the save from the World Settings tab to start the game loop.
  • From this point onward, the server is live. Anyone with the IP can join; only holders of the admin password can start/stop sessions, load saves, or kick players.

    If you ever lose the password, delete ~/.config/Epic/FactoryGame/Saved/SaveGames/server/ServerData.db (with the service stopped) to reset the claim and start fresh.

    Step 9: Locate and Back Up Save Files

    Satisfactory stores saves and configs in predictable paths under the steam user's home directory:

    • Save files: /home/steam/.config/Epic/FactoryGame/Saved/SaveGames/server/
    • Config files: /home/steam/.config/Epic/FactoryGame/Saved/Config/LinuxServer/
    • Log files: /home/steam/.config/Epic/FactoryGame/Saved/Logs/
    Saves are named <SessionName>_autosave_N.sav (rolling autosaves) and <SessionName>_YYYY-MM-DD-HH-MM-SS.sav (manual saves). The server autosaves every 5 minutes by default — configurable in Game.ini.

    Do a quick manual snapshot to validate file permissions:

    bash
    sudo cp -r /home/steam/.config/Epic/FactoryGame/Saved/SaveGames/server \
        /home/steam/satisfactory-manual-backup-$(date +%F)
    sudo chown -R steam:steam /home/steam/satisfactory-manual-backup-*

    Always stop the service before copying for a consistent point-in-time backup:

    bash
    sudo systemctl stop satisfactory
    

    copy files

    sudo systemctl start satisfactory

    For hot snapshots while the service is running, rsync is safe because autosaves are written atomically (temp file + rename).

    Step 10: Automated Hourly Backups with rsync

    A backup script that runs hourly via cron, keeps 7 days of history, and logs its output:

    bash
    sudo tee /usr/local/bin/satisfactory-backup.sh > /dev/null <<'EOF'
    #!/bin/bash
    set -euo pipefail

    SRC="/home/steam/.config/Epic/FactoryGame/Saved/SaveGames/server/" DEST_ROOT="/home/steam/satisfactory-backups" TIMESTAMP=$(date +%Y-%m-%d_%H-%M) DEST="${DEST_ROOT}/${TIMESTAMP}" LOG="/var/log/satisfactory-backup.log"

    mkdir -p "${DEST}"

    Hot rsync; autosaves are written atomically so this is safe.

    rsync -a --delete "${SRC}" "${DEST}/" 2>>"${LOG}"

    Retain 7 days (168 hourly snapshots) and prune the rest.

    find "${DEST_ROOT}" -maxdepth 1 -mindepth 1 -type d -mtime +7 -exec rm -rf {} \;

    echo "[$(date -Iseconds)] Backup complete -> ${DEST}" >> "${LOG}" EOF

    sudo chmod +x /usr/local/bin/satisfactory-backup.sh sudo touch /var/log/satisfactory-backup.log sudo chown steam:steam /var/log/satisfactory-backup.log

    Install the cron entry as the steam user:

    bash
    sudo crontab -u steam -e

    Add:

    text
    0     /usr/local/bin/satisfactory-backup.sh

    For off-site safety, chain a second cron line that pushes backups to a remote host over SSH:

    text
    30 /6    rsync -az --delete /home/steam/satisfactory-backups/ [email protected]:/backups/satisfactory/

    Restoring is straightforward: stop the service, copy a chosen timestamped directory back to SaveGames/server/, fix ownership, and start the service.

    Alternative: LinuxGSM Installation

    If you prefer a scripted wrapper with built-in commands for updates, backups, monitoring, and Discord alerts, LinuxGSM is an excellent alternative to the manual approach above. It wraps SteamCMD and systemd behind friendly subcommands.

    Install as the steam user:

    bash
    sudo su - steam
    wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh
    bash linuxgsm.sh sfserver
    ./sfserver auto-install

    Typical LinuxGSM commands:

    bash
    ./sfserver start
    ./sfserver stop
    ./sfserver restart
    ./sfserver update          # Pulls latest Satisfactory build via SteamCMD
    ./sfserver backup          # Tarballs saves into ~/backups
    ./sfserver monitor         # Auto-restarts on crash (run via cron)
    ./sfserver details         # Shows IP, ports, and connect info

    LinuxGSM creates its own systemd-adjacent scripts and cron entries. If you go this route, skip Step 7 (systemd service) and Step 10 (backup script) from the manual guide — LinuxGSM covers both. You still need Steps 1, 2, 3, 5, and 8 (firewall and in-game admin claim remain identical).

    Troubleshooting

    ProblemCauseSolution
    ./FactoryServer.sh: No such file or directorySteamCMD install did not completeRe-run the +app_update 1690800 validate step; check /home/steam/Steam/logs/stderr.txt
    Clients see "Connection Timed Out"Port 7777 UDP blocked by provider firewallConfirm UFW allows 7777/udp and the provider-side firewall (CloudCore dashboard, Hetzner Cloud, etc.) does too
    Server shows in client list but refuses joinVersion mismatch between client and serverRun sudo systemctl restart satisfactory — the ExecStartPre SteamCMD call pulls the latest build
    High RAM usage, server killed by OOMLate-game save exceeds 16 GB headroomUpgrade to a CloudCore Business Plus or Enterprise plan, or add an 8 GB swap file as a stopgap
    Save file from single-player will not loadSingle-player save in Experimental branch, server on Early AccessSwitch branches with -beta experimental in the app_update line
    Admin password forgottenNo file-based override existsStop the service, delete ServerData.db, restart, re-claim from the client
    systemctl status reports active (running) but port is closedFactoryServer.sh crashed silently before bindingCheck journalctl -u satisfactory -n 200 --no-pager for LogInit: Error lines

    Useful Log Commands

    Live stream:

    bash
    sudo journalctl -u satisfactory -f

    Last 200 lines without the pager:

    bash
    sudo journalctl -u satisfactory -n 200 --no-pager

    Unreal Engine's own logs for deeper debugging:

    bash
    ls -lh /home/steam/.config/Epic/FactoryGame/Saved/Logs/
    tail -f /home/steam/.config/Epic/FactoryGame/Saved/Logs/FactoryGame.log

    FAQ

    How much RAM does a Satisfactory dedicated server need?

    A fresh save runs comfortably on 8 GB, but a mid-to-late-game factory with thousands of conveyor belts, trains, and drones consumes 12-16 GB of RAM. For multiplayer sessions of 4+ players on a mature save, plan for 16 GB or more. This is why we recommend the CloudCore Business plan (16 GB RAM) as a baseline.

    Why is UDP port 7777 the only port I need to open?

    As of the Update 8 networking rework, Satisfactory consolidated game traffic, query traffic, and messaging onto a single UDP port. Older guides mention ports 15000 and 15777, but those are no longer required. Open UDP 7777 inbound on the VPS firewall and you are done.

    How do I set the admin password without editing a config file?

    Satisfactory dedicated servers use an in-game claiming flow rather than an ini-based admin password. Launch the game client, add the server by IP in the Server Manager, claim it with your Epic or Steam account, then set the admin password in the Administration tab. The password is stored encrypted on the server.

    Where are Satisfactory save files stored on Linux?

    Saves live at /home/steam/.config/Epic/FactoryGame/Saved/SaveGames/server/. Configuration files sit in /home/steam/.config/Epic/FactoryGame/Saved/Config/LinuxServer/. Always stop the systemd service before copying saves to avoid capturing a partial write — or use the rsync script in Step 10, which is safe for hot backups because autosaves are written atomically.

    Is it cheaper to self-host than to use Nitrado or GPORTAL?

    Yes, significantly. A 16 GB slot on Nitrado or GPORTAL costs roughly EUR 25-35 per month for Satisfactory alone. A CloudCore Business VPS at EUR 29.99 gives you full root access, can host multiple game servers simultaneously (Satisfactory, Terraria, Factorio), and you own the save files. Over 12 months you typically save 70-80 percent versus paid game hosts once you account for additional games on the same box.

    Should I use LinuxGSM instead of the manual SteamCMD approach?

    LinuxGSM is a fantastic wrapper if you prefer guided commands like sfserver update and built-in backup/monitor helpers. The manual method in this guide gives you deeper control, a cleaner systemd integration, and fewer moving parts. Both are valid — we covered LinuxGSM as an alternative path above.

    Does Satisfactory support mods on a Linux dedicated server?

    Yes. The Satisfactory Mod Manager (SMM) fully supports Linux dedicated servers. After installing the server, point SMM at your server IP, authenticate with your admin password, and install mods remotely. Mods live in the FactoryGame/Mods directory and survive game updates as long as the mod author ships a compatible build.

    Next Steps

    With Satisfactory humming along, the same VPS can easily host more of your gaming stack:

    • How to Install a Rust Game Server on Ubuntu — another SteamCMD-based workflow with monthly map wipes.
    • How to Install a Terraria Dedicated Server — lightweight, perfect to co-host alongside Satisfactory on the same VPS.
    • How to Install a Factorio Headless Server — the spiritual cousin of Satisfactory; runs on 2 GB of RAM and pairs well with it.
    • Bookmark the official docs — the Satisfactory Dedicated Servers wiki tracks every patch-level change to config options and command-line flags.
    • Add monitoring — deploy Uptime Kuma or a lightweight Prometheus node exporter to alert you when the server misses a heartbeat.
    • Set up off-site backups — extend the rsync script in Step 10 to push to Backblaze B2, Wasabi, or a second VPS for disaster recovery.

    Need more horsepower for a late-game factory?
    >
    The CloudCore Business plan is the sweet spot for Satisfactory at EUR 29.99 per month, but heavy modpacks and 8-player co-op benefit from the Business Plus tier with 24 GB RAM. Every plan includes full root access, unmetered 1 Gbps bandwidth, and one-click Ubuntu 24.04 deployment — you will be connecting to your new factory in under 60 seconds.
    >
    Deploy a Satisfactory-Ready VPS Now

    Was this article helpful?

    ← Back to Install GuidesBrowse all categories →

    Still have questions?

    Contact Support →Submit a Ticket