⚠️ LEGACY DOCUMENTATION
This page describes the old SSUI v5 documentation and is kept for reference only. It does not describe the current SSUI v6 release, API, paths or security model.
For a new installation, start with the current v6 documentation.
The Holy SSUI Debug Flowchart¶
Based on the Data of ALL support tickets so far
Navigation: Start at Chart 1. Each chart tells you where to go next.
Chart 1 - Main Triage¶
Start here. Always.
flowchart TD
START(["🆘 HELP!\nSomething is wrong!"]):::alert --> Q1{"What's the problem?"}
Q1 -->|"Can't access\nWeb UI"| C2["➡️ Go to Chart 2\nWeb UI & Login Issues"]:::nav
Q1 -->|"Can't log in"| C2
Q1 -->|"Server\nwon't start"| C3["➡️ Go to Chart 3\nServer Startup Issues"]:::nav
Q1 -->|"Players\ncan't connect"| C4["➡️ Go to Chart 4\nConnection & Networking"]:::nav
Q1 -->|"Server disappears\nfrom server list"| C5["➡️ Go to Chart 5\nServer List & Advertiser"]:::nav
Q1 -->|"Docker\nbeing Docker"| C6["➡️ Go to Chart 6\nDocker Issues"]:::nav
Q1 -->|"Discord bot /\nSaves / Crashes /\nOther"| C7["➡️ Go to Chart 7\nEverything Else™"]:::nav
Q1 -->|"It's actually fine\nI'm just anxious"| RESOLVED
RESOLVED(["✅ Crisis Averted!\nServer goes brrr.\nGo play Stationeers."]):::success
classDef alert fill:#e74c3c,color:#fff,stroke:#c0392b,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 2 - Web UI & Login Issues¶
Can't reach the UI or can't log in? Start here.
flowchart TD
ENTRY(["📋 Chart 2\nWeb UI & Login Issues"]):::header --> MODE{"What's the issue?"}
MODE -->|"Can't reach\nthe Web UI"| WEB
MODE -->|"Can't log in"| LOGIN
%% --- WEB UI ACCESS ---
WEB{"Are you using\nhttps:// in the URL?"}
WEB -->|"No / what?"| HTTPS_FIX["Use https://IP:8443\nSSUI does NOT serve HTTP.\nNever has. Never will."]
HTTPS_FIX --> HTTPS_OK{"Fixed?"}
HTTPS_OK -->|"Yes!"| RESOLVED
HTTPS_OK -->|"Nope"| WEB_LOCAL
WEB -->|"Yes"| WEB_LOCAL
WEB_LOCAL{"Using 'localhost'\non Windows?"}
WEB_LOCAL -->|"Yes"| HYPER_FIX["Try 127.0.0.1:8443 instead.\nHyper-V likes to eat\nlocalhost DNS for breakfast."]
HYPER_FIX --> HYPER_OK{"Fixed?"}
HYPER_OK -->|"Yes!"| RESOLVED
HYPER_OK -->|"No"| WEB_PROXY
WEB_LOCAL -->|"No"| WEB_PROXY
WEB_PROXY{"Behind a\nreverse proxy?"}
WEB_PROXY -->|"nginx"| NGINX_FIX["Add to your nginx config:\n• proxy_buffering off\n• proxy_cache off\n• proxy_http_version 1.1\n• proxy_read_timeout 86400s\nClear browser cache after!"]
WEB_PROXY -->|"Traefik"| TRAEFIK_FIX["Add insecureSkipVerify\nfor SSUI's self-signed cert.\nCheck serversTransport config."]
WEB_PROXY -->|"Apache"| APACHE_FIX["SSUI needs RSA certs,\nnot ECDSA!\nUse: certbot --key-type rsa"]
WEB_PROXY -->|"No proxy"| WEB_FW{"Firewall blocking\nport 8443 TCP?"}
WEB_FW -->|"Yes / maybe"| FW_FIX["Open port 8443 TCP\nin your firewall."]
WEB_FW -->|"No, it's open"| JACKSON
NGINX_FIX --> PROXY_OK{"Fixed?"}
TRAEFIK_FIX --> PROXY_OK
APACHE_FIX --> PROXY_OK
FW_FIX --> PROXY_OK
PROXY_OK -->|"Yes!"| RESOLVED
PROXY_OK -->|"No"| JACKSON
%% --- LOGIN ---
LOGIN{"What's happening?"}
LOGIN -->|"Forgot password"| PW_RESET["1. Edit UiMod/config/config.json\n2. Set authEnabled: false\n3. Restart SSUI\n4. Go to /setup\n\nOr use the -r flag on startup."]
LOGIN -->|"'Invalid token'\nspam in logs"| JWT_FIX["Old browser tab from a\nprevious install is haunting you. 👻\nClose ALL SSUI tabs."]
LOGIN -->|"Just doesn't work"| PW_RESET
PW_RESET --> PW_OK{"Fixed?"}
JWT_FIX --> PW_OK
PW_OK -->|"Yes!"| RESOLVED
PW_OK -->|"No"| JACKSON
%% --- TERMINALS ---
JACKSON["➡️ Go to Chart 8\n📣 Ping Jackson"]:::nav
RESOLVED(["✅ Crisis Averted!"]):::success
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 3 - Server Startup Issues¶
Server won't start? Find your platform.
flowchart TD
ENTRY(["📋 Chart 3\nServer Startup Issues"]):::header --> PLAT{"What platform?"}
PLAT -->|"Windows"| WIN_START
PLAT -->|"Linux\n(bare metal)"| LIN_START
PLAT -->|"Docker"| DOCK_START
%% --- WINDOWS ---
WIN_START{"Installed VC++\nRedistributable?"}
WIN_START -->|"No / What?"| VCPP["Install the latest VC++ Redist\nfrom Microsoft. Stationeers\nforgets to include it.\nEspecially on Win11."]
VCPP --> VCPP_OK{"Fixed?"}
VCPP_OK -->|"Yes!"| RESOLVED
VCPP_OK -->|"No"| CHECK_CONSOLE
WIN_START -->|"Yes"| CHECK_CONSOLE
%% --- LINUX ---
LIN_START{"What distro / version?"}
LIN_START -->|"Ubuntu 22.04\nor older"| OLD_OS["Your OS is too old.\nStationeers needs newer glibc.\nUpgrade to Debian 13+\nor Ubuntu 24.04+.\n\nOr just use the Docker image."]
OLD_OS --> RESOLVED
LIN_START -->|"Debian 13+ /\nUbuntu 24.04+"| STEAM_ERR
STEAM_ERR{"SteamCMD errors?"}
STEAM_ERR -->|"Error 0x2 /\nupdate fails"| IPV6_FIX["Disable IPv6:\nsysctl -w\nnet.ipv6.conf.all.disable_ipv6=1\n\nSteamCMD and IPv6\nhave beef. 🥩"]
IPV6_FIX --> IPV6_OK{"Fixed?"}
IPV6_OK -->|"Yes!"| RESOLVED
IPV6_OK -->|"No"| CHECK_CONSOLE
STEAM_ERR -->|"'No such file'\nerrors"| PATIENCE["Is SteamCMD still downloading?\nWait for it to finish.\nPatience, young grasshopper. 🧘"]
PATIENCE --> PAT_OK{"Fixed?"}
PAT_OK -->|"Yes!"| RESOLVED
PAT_OK -->|"Still broken"| STEAM_PATH["Ran SteamCMD manually?\nIt puts files in ~/Steam\ninstead of ~/SSUI/Steam.\nDelete stale folders,\nlet SSUI manage it."]
STEAM_PATH --> SP_OK{"Fixed?"}
SP_OK -->|"Yes!"| RESOLVED
SP_OK -->|"No"| CHECK_CONSOLE
STEAM_ERR -->|"No errors"| CHECK_CONSOLE
%% --- DOCKER ---
DOCK_START{"Sanity check\nfailing?"}
DOCK_START -->|"Yes"| SANITY["containerd / K8s?\nSSUI doesn't detect all runtimes.\nUse -NoSanityCheck flag\nor create /.dockerenv"]
SANITY --> SAN_OK{"Fixed?"}
SAN_OK -->|"Yes!"| RESOLVED
SAN_OK -->|"No"| CHECK_CONSOLE
DOCK_START -->|"No"| CHECK_CONSOLE
%% --- SHARED CONSOLE CHECK ---
CHECK_CONSOLE{"Check SSUI console.\nIndexOutOfRangeException\nin TerrainSystem?"}
CHECK_CONSOLE -->|"Yes!"| ONE_CORE["Running a 1-core VM?\nGame does ProcessorCount - 1\n= 0 workers on 1 core.\n\nFix: Add to AdditionalParams:\nMaxConcurrentWorkers 1"]
ONE_CORE --> RESOLVED
CHECK_CONSOLE -->|"No / other errors"| SUPPORT_PKG["Generate a Support Package!\nWiki → Support-Packages"] --> JACKSON
%% --- TERMINALS ---
JACKSON["➡️ Go to Chart 8\n📣 Ping Jackson"]:::nav
RESOLVED(["✅ Crisis Averted!"]):::success
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 4 - Connection & Networking¶
Server runs but players can't connect? The big one. Deep breaths.
flowchart TD
ENTRY(["📋 Chart 4\nConnection & Networking"]):::header --> PF
PF{"Did you port forward\nUDP 27016 on router?"}
PF -->|"No / What?"| PF_FIX["Forward your game port\n(default: UDP 27016)\non your router.\nSee portforward.com"]
PF_FIX --> PF_OK{"Fixed?"}
PF_OK -->|"Yes!"| RESOLVED
PF_OK -->|"No"| TYPO
PF -->|"Yes"| TYPO
TYPO{"Double-check:\nIs it really 27016\nor did you fat-finger it?\n(Looking at you, 27106)"}
TYPO -->|"Oops, typo!"| PF_FIX
TYPO -->|"It's correct"| LIP
LIP{"Is LocalIpAddress\nset to 0.0.0.0?"}
LIP -->|"No, it's my\nmachine's IP"| LIP_FIX["Set LocalIpAddress to 0.0.0.0\nYes, the name is misleading.\nNo, don't put your actual IP.\nBlame Rocketwerkz. 🤷"]
LIP_FIX --> LIP_OK{"Fixed?"}
LIP_OK -->|"Yes!"| RESOLVED
LIP_OK -->|"No"| CGNAT
LIP -->|"Yes"| CGNAT
CGNAT{"Behind CGNAT?\n(ISP shares your\npublic IP with neighbors)"}
CGNAT -->|"Yes / Probably"| CGNAT_FIX["Port forwarding is impossible.\n1. Rent a VPS + FRP tunnel\n2. VPN tunnel solution\n3. AdvertiserOverride = VPS IP\n\nOr switch ISP. Seriously."]
CGNAT_FIX --> RESOLVED
CGNAT -->|"No"| DOCK
DOCK{"Running in Docker?"}
DOCK -->|"Yes"| UPNP["UPnP does NOT work in Docker.\nManual port forwarding only.\nCheck host networking mode."]
UPNP --> UP_OK{"Fixed?"}
UP_OK -->|"Yes!"| RESOLVED
UP_OK -->|"No"| RAKNET
DOCK -->|"No"| RAKNET
RAKNET{"RakNet errors\nin server logs?"}
RAKNET -->|"Yes"| RK_Q{"On Kubernetes?"}
RK_Q -->|"Yes"| K8S["Use hostNetwork: true\nin your pod spec.\nRakNet can't handle\nkube-proxy SNAT. At all."]
K8S --> RESOLVED
RK_Q -->|"No"| RKPORT["Try moving game port\nto 50000+ range.\nRakNet is picky about ports.\n\n(Stationeers bug, not SSUI.\nWe're innocent. 🤷)"]
RKPORT --> RK_OK{"Fixed?"}
RK_OK -->|"Yes!"| RESOLVED
RK_OK -->|"No"| JACKSON
RAKNET -->|"No"| STUCK
STUCK{"Connection stuck\nat 0%?"}
STUCK -->|"Yes"| CLIENT["Is the CLIENT PC also\nport-forwarding those ports?\nRemove them on client!\nOnly the SERVER forwards."]
STUCK -->|"'Incompatible\nversion'"| VER["Server + client versions\nmust match. Re-run\nSteamCMD update."]
STUCK -->|"Neither"| DNAT{"Double NAT?\n(Modem + Router\nboth doing NAT)"}
DNAT -->|"Yes"| DFIX["Put modem in bridge mode\nor port forward on BOTH\ndevices. Double NAT is pain."]
DNAT -->|"No / Don't know"| JACKSON
CLIENT --> C_OK{"Fixed?"}
VER --> C_OK
DFIX --> C_OK
C_OK -->|"Yes!"| RESOLVED
C_OK -->|"No"| JACKSON
%% --- TERMINALS ---
JACKSON["➡️ Go to Chart 8\n📣 Ping Jackson"]:::nav
RESOLVED(["✅ Crisis Averted!"]):::success
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 5 - Server List & Advertiser¶
Server runs, people connected before, but now it vanishes from the list?
flowchart TD
ENTRY(["📋 Chart 5\nServer List & Advertiser"]):::header --> WHEN
WHEN{"When does it\ndisappear?"}
WHEN -->|"After some\nhours / days"| DYN{"Dynamic IP\nfrom your ISP?"}
WHEN -->|"Never appears\nat all"| NEVER["Server probably isn't\nreachable at all.\n➡️ Go to Chart 4\nConnection & Networking"]:::nav
WHEN -->|"Shows as\n'incompatible'"| VER["Server + client versions\nmust match.\nRe-run SteamCMD update.\nCheck you're not on\nan old beta branch."]
VER --> V_OK{"Fixed?"}
V_OK -->|"Yes!"| RESOLVED
V_OK -->|"No"| JACKSON
DYN -->|"Yes"| ADV["Enable the SSUI Advertiser\nwith 'auto' mode.\nUses ipify to detect your\npublic IP and re-advertises\nautomatically."]
ADV --> A_OK{"Fixed?"}
A_OK -->|"Yes!"| RESOLVED
A_OK -->|"No"| ERR
DYN -->|"No / Not sure"| ERR
ERR{"Advertiser stopped?\nCheck logs for error count."}
ERR -->|"Yes, error\nthreshold hit"| UPDATE["Update SSUI to latest!\nOld versions killed the\nadvertiser after 5 transient\nerrors. Forever.\nFixed with incremental backoff."]
UPDATE --> RESOLVED
ERR -->|"No errors visible"| JACKSON
%% --- TERMINALS ---
JACKSON["➡️ Go to Chart 8\n📣 Ping Jackson"]:::nav
RESOLVED(["✅ Crisis Averted!"]):::success
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 6 - Docker Issues¶
Docker being Docker. A tale as old as containerization itself.
flowchart TD
ENTRY(["📋 Chart 6\nDocker Issues"]):::header --> WHAT
WHAT{"What Docker problem?"}
WHAT -->|"Sanity check\nfails"| SANITY["containerd / K8s?\nSSUI doesn't detect all runtimes.\nUse -NoSanityCheck flag\nor create /.dockerenv\nin the container."]
WHAT -->|"Mods not\nloading"| MODS
WHAT -->|"Files owned\nby root"| ROOT["Add user/uid/gid mapping\nin docker-compose.yml\nto match your host user."]
WHAT -->|"CLI commands\ndon't work"| CLI["SSUI manages the server\nthrough the Web UI.\nYou don't need docker exec\nfor game server commands.\nThat's the whole point. 😉"]
WHAT -->|"HTTP 400 on\nfirst access"| HTTPS["Are you using https:// ?\nSSUI does NOT serve HTTP.\n➡️ See Chart 2 if stuck"]:::nav
WHAT -->|"Server works then\nstops responding"| TIMEOUT["Enable SSUI log file:\nCreateSSUILogFile: true\nin config.json.\nWait for next occurrence."]
WHAT -->|"Players can't\nconnect"| CONN["UPnP doesn't work in Docker.\nManual port forwarding only.\n➡️ See Chart 4 for more"]:::nav
SANITY --> S_OK{"Fixed?"}
S_OK -->|"Yes!"| RESOLVED
S_OK -->|"No"| JACKSON
ROOT --> RESOLVED
CLI --> RESOLVED
TIMEOUT --> JACKSON
MODS{"Is BepInEx/core\npresent in the container?"}
MODS -->|"No / Missing"| NUKE["Nuclear option:\n1. Remove all app files\n2. docker volume prune\n3. Re-create with bind mount:\n ./app:/app:rw\n4. Re-install SLP + mods\n5. Verify BepInEx/core exists"]
MODS -->|"Yes"| VER["Check SLP server DLL\nmatches your game version.\nRe-copy the mod package.\nWatch for XML\ndeserialization errors."]
NUKE --> M_OK{"Fixed?"}
VER --> M_OK
M_OK -->|"Yes!"| RESOLVED
M_OK -->|"No"| JACKSON
%% --- TERMINALS ---
JACKSON["➡️ Go to Chart 8\n📣 Ping Jackson"]:::nav
RESOLVED(["✅ Crisis Averted!"]):::success
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 7 - Discord Bot, Saves, Crashes & Everything Else™¶
The grab-bag chart. If you made it here, things are getting interesting.
flowchart TD
ENTRY(["📋 Chart 7\nEverything Else™"]):::header --> CAT{"Pick your poison:"}
CAT -->|"Discord bot\nacting weird"| DISCORD
CAT -->|"Save / backup\nproblems"| SAVES
CAT -->|"Server crashes"| CRASH
CAT -->|"Something else"| ELSE
%% --- DISCORD ---
DISCORD{"What's the bot doing?"}
DISCORD -->|"403 errors"| OAUTH["Regenerate the bot invite\nwith the updated OAuth URL.\nCheck channel permissions."]
DISCORD -->|"Spamming\nmessages"| SPAM["Restart SSUI.\nUsually a Stationeers memory\nleak causing repeated events.\nClassic Rocketwerkz moment. 🙄"]
DISCORD -->|"Retrieve password\nbroken"| BOTPW["Update to SSUI v5.13+\nRace condition was fixed."]
DISCORD -->|"Save notifications\nmissing"| BOTSAVE["Check Discord OAuth URL\nis up to date."]
DISCORD -->|"Other"| JACKSON
OAUTH --> B_OK{"Fixed?"}
BOTSAVE --> B_OK
B_OK -->|"Yes!"| RESOLVED
B_OK -->|"No"| JACKSON
SPAM --> SP_OK{"Still spamming\nafter restart?"}
SP_OK -->|"No!"| RESOLVED
SP_OK -->|"YES"| JACKSON
BOTPW --> RESOLVED
%% --- SAVES ---
SAVES{"What save issue?"}
SAVES -->|"Server ignores\nmy save"| SNAME["Does SaveName in config\nEXACTLY match folder name?\n\n'Luna' ≠ 'Lunar'\nCase. Matters. Every. Letter."]
SAVES -->|"Backup manager\nis empty"| SBACKUP["It only watches the\nautosaves directory.\nUse 'file save' to trigger\nautosaves instead."]
SAVES -->|"Autosave\ncopy broken"| SBUG["Update to SSUI v5.9.1+\nBug after ~2400 autosaves.\nYes, really."]
SAVES -->|"Commands like\n'say' don't work"| SCMD["Save name mismatch!\nSSCM needs exact world name\nfor command privileges."]
SAVES -->|"Copied save\nfrom another server"| SCOPY{"SaveName matches\nfolder name?\nPermissions OK?"}
SNAME --> S_OK{"Fixed?"}
SCMD --> S_OK
S_OK -->|"Yes!"| RESOLVED
S_OK -->|"No"| JACKSON
SBACKUP --> RESOLVED
SBUG --> RESOLVED
SCOPY -->|"Fixed it!"| RESOLVED
SCOPY -->|"Still broken"| JACKSON
%% --- CRASHES ---
CRASH{"When does it crash?"}
CRASH -->|"During save\noperations"| CSAVE["Update SSUI!\nSSCM had a threading bug:\nsaves ran off the main\nUnity thread. Fixed in PR #119."]
CRASH -->|"On loading\na save"| CLOAD
CRASH -->|"Random crashes\nwith mods"| CMODS
CRASH -->|"Other / random"| COTHER["Generate a Support Package!\nWiki → Support-Packages\nEnable CreateSSUILogFile: true"]
CSAVE --> RESOLVED
COTHER --> JACKSON
CLOAD{"IndexOutOfRange\nor save corruption?"}
CLOAD -->|"IndexOutOfRange"| CTABLET["Known Stationeers bug:\ntablet cartridge switched\nduring a save operation.\nJackson has a patched DLL."]
CLOAD -->|"Other error"| COTHER
CTABLET --> JACKSON
CMODS{"Crashes without\nmods too?"}
CMODS -->|"No, mods only"| MODISSUE["Mod issue, not SSUI.\nRunning beta branch?\nGood luck, brave soul. ⚔️"]
MODISSUE --> SKILL_ISSUE
CMODS -->|"Yes"| COTHER
%% --- OTHER ---
ELSE{"Be more specific:"}
ELSE -->|"AutoPause\ndoesn't work"| APAUSE["Stationeers game bug.\nSSUI sends the command.\nGame just... ignores it. 🫠"]
ELSE -->|"Detection manager\nnot firing"| DETECT["Known bug.\nCheck GitHub issues."]
ELSE -->|"Config changes\ndon't apply"| RESTART{"Restarted SSUI\nafter config change?"}
ELSE -->|"Run 2 servers\non 1 machine"| DUAL["Change SSUIWebPort in\nconfig.json or use -p=PORT.\nChange game port in\nNetwork settings too."]
ELSE -->|"Orphan process\nafter update"| ORPHAN["GH issue #159.\nStop server BEFORE updating.\nKill orphan manually via PID."]
APAUSE --> SKILL_ISSUE
DETECT --> JACKSON
RESTART -->|"...no"| RFIX["Restart SSUI. Always\nrestart after config changes.\nALWAYS."] --> RESOLVED
RESTART -->|"Yes!"| JACKSON
DUAL --> RESOLVED
ORPHAN --> RESOLVED
%% --- TERMINALS ---
JACKSON["➡️ Go to Chart 8\n📣 Ping Jackson"]:::nav
RESOLVED(["✅ Crisis Averted!"]):::success
SKILL_ISSUE(["🏆 SKILL ISSUE™\nCertified by SSUI Support Dept."]):::skillissue
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef skillissue fill:#e67e22,color:#fff,stroke:#d35400,stroke-width:4px
classDef nav fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:2px
Chart 8 - The Jackson Endpoint™¶
You've tried everything. There's only one hope left.
flowchart TD
ENTRY(["📋 Chart 8\nThe Jackson Endpoint™"]):::header --> JACKSON
JACKSON["📣 Ping @JacksonTheMaster\nin the SSUI Discord #support\n\nBring:\n• SSUI version number\n• A support package\n• Your config.json\n• Patience\n• Snacks (recommended)"]:::jackson
JACKSON --> J_OK{"Did Jackson fix it?"}
J_OK -->|"Yes! 🎉"| RESOLVED
J_OK -->|"No response yet"| J_WAIT["He sleeps sometimes.\nApparently he's 'human'\nand has a 'life'.\nWait 24-48h."]:::wait
J_WAIT --> J_OK2{"How about now?"}
J_OK2 -->|"Fixed! 🎉"| RESOLVED
J_OK2 -->|"Still nothing"| SKILL_ISSUE
J_OK -->|"Even Jackson\ncan't fix this"| SKILL_ISSUE
RESOLVED(["✅ Crisis Averted!\nServer goes brrr.\nGo play Stationeers."]):::success
SKILL_ISSUE(["🏆 SKILL ISSUE™\n\nCertified by the\nSSUI Support Department.\n\nWe tried. We really did.\nMaybe try Minecraft?"]):::skillissue
classDef header fill:#2c3e50,color:#fff,stroke:#1a252f,stroke-width:3px
classDef jackson fill:#3498db,color:#fff,stroke:#2980b9,stroke-width:3px
classDef wait fill:#9b59b6,color:#fff,stroke:#8e44ad,stroke-width:2px
classDef success fill:#27ae60,color:#fff,stroke:#1e8449,stroke-width:3px
classDef skillissue fill:#e67e22,color:#fff,stroke:#d35400,stroke-width:4px
Quick Reference: The Flowchart Cheat Sheet¶
For those who don't like pictures, here's the TL;DR version:
Tier 1: Check These First (Solves 60% of tickets)¶
| Symptom | Fix |
|---|---|
| Can't reach Web UI | Use https:// not http://, port 8443 |
localhost doesn't work on Windows |
Use 127.0.0.1 instead (Hyper-V) |
| Forgot password | authEnabled: false in config → restart → /setup |
| Players can't connect | Port forward UDP 27016 on router |
| "Incompatible version" | Update game server via SteamCMD |
| Server won't start on Windows | Install VC++ Redistributable |
Tier 2: Platform-Specific Gotchas (Solves another 25%)¶
| Platform | Gotcha | Fix |
|---|---|---|
| Linux | SteamCMD error 0x2 | Disable IPv6 |
| Linux | Ubuntu 22.04 too old | Upgrade to Debian 13+ / Ubuntu 24.04+ |
| Linux | 1-core VM crash | MaxConcurrentWorkers 1 in AdditionalParams |
| Docker | UPnP doesn't work | Manual port forwarding only |
| Docker | Containerd not detected | -NoSanityCheck flag |
| Docker | Mods broken after volume change | Full cleanup + rebuild with bind mount |
| Docker | Files owned by root | Add uid/gid to docker-compose |
| Windows | Hyper-V eats localhost | Use 127.0.0.1 |
| Kubernetes | Player disconnects | hostNetwork: true in pod spec |
Tier 3: Networking Nightmares (The hard ones)¶
| Issue | Fix |
|---|---|
| Behind CGNAT | VPS + FRP tunnel, or VPN |
| Double NAT | Bridge mode on modem, or forward on both devices |
| RakNet errors | Try port 50000+ range; it's a game bug |
| Reverse proxy (nginx) | proxy_buffering off, proxy_cache off, timeouts |
| Reverse proxy (Apache) | certbot --key-type rsa (ECDSA not supported) |
| Reverse proxy (Traefik) | insecureSkipVerify for self-signed cert |
| Server disappears from list | Enable SSUI Advertiser with auto mode |
LocalIpAddress confusion |
Set to 0.0.0.0, NOT your actual IP |
Tier 4: Ping @JacksonTheMaster¶
When all else fails. Bring logs, a support package, and snacks.
Tier 5: 🏆 Skill Issue™¶
You've reached the end. We tried.
No Jacksons were harmed in the making of this chart. 3000 GPUs worked hard on this analysis (probably)