panel — open-source game server manager (public release)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 19:19:43 -07:00
commit 5232609719
2160 changed files with 300415 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
#!/bin/bash
# panel-native Satisfactory entrypoint.
set -euo pipefail
log() { printf '[panel-satisfactory] %s\n' "$*"; }
if [[ "$(id -u)" = "0" ]]; then
chown -R panel:panel /game /game-saves /home/panel 2>/dev/null || true
exec setpriv --reuid=panel --regid=panel --clear-groups \
--inh-caps=-all --bounding-set=-all \
env HOME=/game-saves PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
GAME_PORT="${GAME_PORT:-7777}" RELIABLE_PORT="${RELIABLE_PORT:-8888}" \
/entrypoint.sh "$@"
fi
GAME_DIR=/game
SAVE_DIR=/game-saves
START_SH="${GAME_DIR}/FactoryServer.sh"
if [[ ! -x "${START_SH}" ]]; then
log "ERROR: ${START_SH} not found. Run 'Update' in the panel to install Satisfactory via SteamCMD."
exit 78
fi
# Satisfactory writes SaveGames / Engine configs to
# $HOME/.config/Epic/FactoryGame. HOME is /game-saves → saves land in the
# save volume without further fiddling.
mkdir -p "${SAVE_DIR}/.config/Epic/FactoryGame/Saved/SaveGames"
GAME_PORT="${GAME_PORT:-7777}"
RELIABLE_PORT="${RELIABLE_PORT:-8888}"
cd "${GAME_DIR}"
log "starting Satisfactory dedicated server (game=${GAME_PORT}/udp+tcp reliable=${RELIABLE_PORT}/tcp)"
# -Port drives both the UDP game socket and the HTTPS API listener (they
# share the number). -ReliablePort is the TCP reliability channel (1.0+).
# -stdout -FullStdOutLogOutput route UE logs to stdout for `docker logs`.
exec stdbuf -oL -eL "${START_SH}" \
-Port="${GAME_PORT}" \
-ReliablePort="${RELIABLE_PORT}" \
-multihome=0.0.0.0 \
-stdout -FullStdOutLogOutput \
-unattended