diff --git a/ct/headers/satisfactory b/ct/headers/satisfactory new file mode 100644 index 000000000..aa6d9f481 --- /dev/null +++ b/ct/headers/satisfactory @@ -0,0 +1,6 @@ + _____ __ _ ____ __ + / ___/____ _/ /_(_)____/ __/___ ______/ /_____ _______ __ + \__ \/ __ `/ __/ / ___/ /_/ __ `/ ___/ __/ __ \/ ___/ / / / + ___/ / /_/ / /_/ (__ ) __/ /_/ / /__/ /_/ /_/ / / / /_/ / +/____/\__,_/\__/_/____/_/ \__,_/\___/\__/\____/_/ \__, / + /____/ diff --git a/ct/satisfactory.sh b/ct/satisfactory.sh new file mode 100644 index 000000000..1d4518987 --- /dev/null +++ b/ct/satisfactory.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +source "$(dirname "${BASH_SOURCE[0]}")/../misc/build.func" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_URL:-https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main}/misc/build.func") + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: n8flx +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.satisfactorygame.com/ + +APP="Satisfactory" +var_tags="${var_tags:-gaming;server}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-8192}" +var_disk="${var_disk:-20}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -x /opt/steamcmd/steamcmd.sh || ! -d /opt/satisfactory/server ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + msg_info "Stopping ${APP}" + systemctl stop satisfactory + msg_ok "Stopped ${APP}" + + create_backup /home/steam/.config/Epic/FactoryGame/Saved + + msg_info "Updating ${APP}" + if $STD runuser -u steam -- /opt/steamcmd/steamcmd.sh \ + +force_install_dir /opt/satisfactory/server \ + +login anonymous \ + +app_update 1690800 -beta public validate \ + +quit; then + msg_ok "Updated ${APP}" + else + restore_backup + systemctl start satisfactory + msg_error "Failed to update ${APP}" + exit 1 + fi + + restore_backup + + msg_info "Starting ${APP}" + systemctl start satisfactory + msg_ok "Started ${APP}" + msg_ok "Updated Successfully!" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Add the server in Satisfactory Server Manager:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:7777${CL}" +echo -e "${INFO}${YW} Required ports:${CL} ${BGN}7777 TCP/UDP and 8888 TCP${CL}" diff --git a/install/satisfactory-install.sh b/install/satisfactory-install.sh new file mode 100644 index 000000000..8c4934fa0 --- /dev/null +++ b/install/satisfactory-install.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: n8flx +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.satisfactorygame.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + lib32gcc-s1 \ + lib32stdc++6 +msg_ok "Installed Dependencies" + +msg_info "Creating Steam User and Application Directories" +useradd --system \ + --create-home \ + --home-dir /home/steam \ + --shell /usr/sbin/nologin \ + steam +mkdir -p /opt/satisfactory/server /opt/steamcmd +chown -R steam:steam /opt/satisfactory /opt/steamcmd /home/steam +msg_ok "Created Steam User and Application Directories" + +fetch_and_deploy_from_url \ + "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" \ + "/opt/steamcmd" +chown -R steam:steam /opt/steamcmd + +msg_info "Installing Satisfactory Dedicated Server" +$STD runuser -u steam -- /opt/steamcmd/steamcmd.sh \ + +force_install_dir /opt/satisfactory/server \ + +login anonymous \ + +app_update 1690800 -beta public validate \ + +quit +msg_ok "Installed Satisfactory Dedicated Server" + +msg_info "Creating Service" +cat </etc/systemd/system/satisfactory.service +[Unit] +Description=Satisfactory Dedicated Server +Wants=network-online.target +After=network-online.target + +[Service] +Type=simple +User=steam +Group=steam +WorkingDirectory=/opt/satisfactory/server +Environment=LANG=C.UTF-8 +Environment=HOME=/home/steam +ExecStart=/opt/satisfactory/server/FactoryServer.sh -log +Restart=on-failure +RestartSec=10 +KillSignal=SIGINT +TimeoutStopSec=120 +StandardOutput=journal+console +StandardError=journal+console + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now satisfactory +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc