Update Factorio/README.md

This commit is contained in:
Clay 2025-07-29 13:57:36 -04:00
parent 22a81912b8
commit 9c6dfdf8f8

View file

@ -1 +1,168 @@
Factorio Scripts
# 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/<server>/factorio-current.log` for details.
- **Screen Sessions:**
Each server runs in a named `screen` session. Use `screen -ls` to list sessions and `screen -r <session>` 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.
---