feat: add homelab deployment configs, documentation, and automation scripts
This commit is contained in:
73
snarfnet-game-seeds/README.md
Normal file
73
snarfnet-game-seeds/README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 🌲 SnarfNet Game Seed Management Plane
|
||||
|
||||
Declarative, GitOps-ready game server management plane for the SnarfNet dedicated gaming machine (`bc:24:11:67:16:cd` @ `140.44.44.80`), modeled on the declarative seed pattern (`arasoi/yggdrasil-releases` and `arasoi/yggdrasil-seeds`).
|
||||
|
||||
---
|
||||
|
||||
## 🎮 Declared Game Servers
|
||||
|
||||
| Game | Steam AppID | Container Image | Ports | RAM (Res / Limit) | World Save Path |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **Enshrouded** | `2278520` | `skarab42/enshrouded-server:latest` | `15636/udp`, `15637/udp` | 8GB / 16GB | `/opt/game-servers/enshrouded/savegame` |
|
||||
| **Farming Simulator 25** | `2300320` | `thijsvanloef/farming-simulator-25:latest` | `10823/tcp`, `10823/udp` | 6GB / 12GB | `/opt/game-servers/fs25/savegame` |
|
||||
| **Stationeers** | `600760` | `sprits/stationeers-server:latest` | `27016/udp`, `27015/udp` | 4GB / 8GB | `/opt/game-servers/stationeers/saves` |
|
||||
| **Valheim** (Crossplay) | `896660` | `lloesche/valheim-server:latest` | `2456/udp`, `2457/udp` | 4GB / 8GB | `/opt/game-servers/valheim/worlds` |
|
||||
| **V Rising** | `1829350` | `trueosiris/vrising:latest` | `9876/udp`, `9877/udp` | 4GB / 8GB | `/opt/game-servers/vrising/Saves` |
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Management CLI (`core/manager.py`)
|
||||
|
||||
The manager CLI reconciles declared seeds against the host runtime, triggers automated world backups to Synology NAS, and issues Wake-on-LAN magic packets.
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
# 1. Preview declared server configuration
|
||||
python core/manager.py plan
|
||||
|
||||
# 2. Render docker-compose.yml for live deployment
|
||||
python core/manager.py compose
|
||||
|
||||
# 3. Trigger manual atomic snapshot & sync to Synology NAS
|
||||
python core/manager.py backup
|
||||
|
||||
# 4. Wake up the gaming PC via Wake-on-LAN (bc:24:11:67:16:cd)
|
||||
python core/manager.py wol
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💾 Backup & Disaster Recovery Architecture
|
||||
|
||||
All game world save files are preserved in atomic tarballs and synchronized to the Synology NAS:
|
||||
- **NAS Backup NFS Target**: `14.10.10.71:/volume1/docker/game-backups`
|
||||
- **Host Mount**: `/mnt/nas/game-backups`
|
||||
- **Automated Timer**: Daily at 04:00 AM via `gameseed-backup.timer`
|
||||
- **Retention**: 14 rolling snapshots per game
|
||||
|
||||
---
|
||||
|
||||
## 🌐 UDM Pro Port Forwarding Matrix
|
||||
|
||||
To permit external friends and players to join the servers, ensure the following port forwards are mapped from WAN to `140.44.44.80` on the UDM Pro:
|
||||
|
||||
```
|
||||
Enshrouded: UDP 15636-15637 -> 140.44.44.80
|
||||
Farming Simulator 25: TCP/UDP 10823 -> 140.44.44.80
|
||||
Stationeers: UDP 27015-27016 -> 140.44.44.80
|
||||
Valheim: UDP 2456-2457 -> 140.44.44.80
|
||||
V Rising: UDP 9876-9877 -> 140.44.44.80
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Bootstrap New Host
|
||||
|
||||
To provision the physical gaming PC:
|
||||
```bash
|
||||
sudo bash scripts/setup-host.sh
|
||||
python3 core/manager.py compose
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user