From 9c6dfdf8f8543a8f6fc4789d8be317db9418fc44 Mon Sep 17 00:00:00 2001 From: Clay Date: Tue, 29 Jul 2025 13:57:36 -0400 Subject: [PATCH] Update Factorio/README.md --- Factorio/README.md | 169 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 168 insertions(+), 1 deletion(-) diff --git a/Factorio/README.md b/Factorio/README.md index dce359b..02fac4a 100644 --- a/Factorio/README.md +++ b/Factorio/README.md @@ -1 +1,168 @@ -Factorio Scripts \ No newline at end of file +# Factorio Multi-Server Manager + +This project provides a robust, automated solution for managing multiple [Factorio](https://factorio.com/) headless servers on Linux. It includes scripts for updating Factorio, orchestrating server processes, monitoring server health, and sending notifications—all driven by a single configuration file. + +--- + +## Features + +- **Automatic Update Checks:** Detects and installs new Factorio releases. +- **Multi-Server Management:** Start, stop, and restart multiple servers as defined in a single INI config. +- **Screen Integration:** Each server runs in its own `screen` session for easy process management and detachment. +- **Health Monitoring:** Detects and restarts crashed or missing servers. +- **Discord Notifications:** Sends update notifications to a Discord webhook. +- **Colorful, Informative Output:** Terminal output is styled for clarity and quick status checks. +- **Graceful Shutdowns:** Ensures servers save and shut down cleanly before updates or restarts. +- **Mod Support:** Handles mod directory and mod settings propagation. + +--- + +## Directory Structure + +``` +/home/factorio/ + ├── factcheck.sh # Main health check and update script + ├── new_screen_start.sh # Server start/stop/update orchestrator + ├── servers-config.ini # INI file listing all managed servers + ├── factorio/ # Factorio installation directory + ├── mods/ + │ └── default/ # Default mod directory for servers + └── servers/ + ├── server1/ + ├── server2/ + └── ... # One directory per server, each with its own config and saves +``` + +--- + +## Setup & Reproduction + +### 1. Dependencies + +- Linux (tested on Ubuntu/Debian) +- [screen](https://www.gnu.org/software/screen/) +- [jq](https://stedolan.github.io/jq/) +- [curl](https://curl.se/) +- [wget](https://www.gnu.org/software/wget/) +- [Factorio headless server](https://factorio.com/download-headless) + +Install dependencies (example for Ubuntu): +```sh +sudo apt update +sudo apt install screen jq curl wget +``` + +### 2. Directory Preparation + +- Place all scripts in `/home/factorio/` +- Place the Factorio headless server in `/home/factorio/factorio/` +- Each server should have its own directory under `/home/factorio/servers/` +- Mods should be in `/home/factorio/mods/default/` +- Ensure all scripts are executable: + ```sh + chmod +x /home/factorio/factcheck.sh /home/factorio/new_screen_start.sh + ``` + +### 3. Configuration + +Edit `servers-config.ini` to define your servers. Example: +```ini +[test] +port=34198 +settings=/home/factorio/servers/test/server-settings.json +config=/home/factorio/servers/test/config.ini +mod_directory=/home/factorio/mods/default +use_whitelist=false + +[private] +port=55557 +settings=/home/factorio/servers/private/server-settings.json +config=/home/factorio/servers/private/config.ini +mod_directory=/home/factorio/mods/default +use_whitelist=true +``` +- Comment out any server blocks you do not want managed by prefixing with `;`. + +--- + +## Usage + +### Health Check, Update, and Auto-Restart + +Run the main script to check for updates, ensure all servers are running, and restart any that are down: +```sh +./factcheck.sh +``` + +### Manual Server Management + +- **Start/Restart All Servers:** + ```sh + ./new_screen_start.sh + ``` + (Stops and starts each server sequentially.) + +- **Stop All Servers:** + ```sh + ./new_screen_start.sh --stop + ``` + +- **Update Factorio and Mods:** + ```sh + ./new_screen_start.sh --update + ``` + (Stops all servers, updates Factorio if needed, then restarts all servers.) + +- **Help:** + ```sh + ./new_screen_start.sh --help + ``` + +--- + +## Tips & Best Practices + +- **Automate Health Checks:** + Add `factcheck.sh` to a cron job for regular health checks and updates. + Example (runs every 15 minutes): + ``` + */15 * * * * /home/factorio/factcheck.sh >> /home/factorio/factcheck.log 2>&1 + ``` + +- **Discord Webhook:** + The update script sends notifications to a Discord webhook. Change the webhook URL in `factcheck.sh` to your own server if desired. + +- **Logs:** + Server logs are monitored for readiness and clean shutdowns. Check `/home/factorio/servers//factorio-current.log` for details. + +- **Screen Sessions:** + Each server runs in a named `screen` session. Use `screen -ls` to list sessions and `screen -r ` to attach. + +- **Mod Management:** + Place shared mods in `/home/factorio/mods/default/`. The scripts will propagate mod settings as needed. + +--- + +## Troubleshooting + +- **Server Not Starting:** + Check that the Factorio binary is present and executable at `/home/factorio/factorio/bin/x64/factorio`. +- **Permissions:** + Ensure the `factorio` user has ownership and execute permissions for all relevant files and directories. +- **Config Errors:** + Double-check paths in `servers-config.ini` for typos or missing files. + +--- + +## License + +MIT License (or specify your own) + +--- + +## Credits + +Created by ClayGarth.com and contributors. +Inspired by the Factorio community and designed for reliability and ease of use. + +---