51 Commits

Author SHA1 Message Date
99ca25c9e3 Replace ATM10 with Biohazard: Project Genesis modpack
All checks were successful
Deploy GSM / deploy (push) Successful in 31s
Switched Minecraft server from All the Mods 10 to Biohazard: Project Genesis
(Beta 0.4.5, MC 1.20.1 + Forge 47.4.0). Updated server name, Discord bot
display, frontend modpack link, and documentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 23:27:58 +02:00
Alexander Zielonka
fe188cdab1 Auto-detect SteamCMD path on servers
All checks were successful
Deploy GSM / deploy (push) Successful in 23s
- Add findSteamCmd() helper that searches common locations
- Provide path hints per server type as fallback
- Remove hardcoded paths, more robust for different setups
- Check /usr/games/steamcmd, ~/steamcmd/, ~/Steam/ etc.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:53:50 +01:00
Alexander Zielonka
6771722cdd Add SteamCMD-based updates for V Rising, Palworld, Zomboid, Terraria
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
- Create generic SteamCMD handler factory for reusable update logic
- Check build IDs via appmanifest files and Steam API
- Support V Rising (1829350), Palworld (2394010), Zomboid (380870), tModLoader (1281930)
- Show update button for all supported server types in UI
- Minecraft, OpenTTD, Hytale marked as manual-update-only

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:50:19 +01:00
Alexander Zielonka
68de66b0fd Fix Docker status: treat 'created' as offline, not starting
All checks were successful
Deploy GSM / deploy (push) Successful in 23s
Container status 'created' means it was never started yet (e.g. after
docker create during update), so it should show as offline.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:47:25 +01:00
Alexander Zielonka
d840faeda9 Add modular server update feature with Discord notifications
All checks were successful
Deploy GSM / deploy (push) Successful in 25s
- Add serverUpdates.js service with handler registry for extensibility
- Implement Factorio Docker image update (pull + container recreate)
- Add GET/POST /servers/:id/update routes for check/perform
- Add ServerUpdateButton component with auto-check and confirm dialog
- Integrate update card in ServerDetail overview tab
- Auto-send Discord notification on successful update

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:42:22 +01:00
Alexander Zielonka
ed60bc33c7 Use server logos as thumbnails in Discord update embeds
All checks were successful
Deploy GSM / deploy (push) Successful in 23s
Replaced emoji icons with actual server logos from gsm.zeasy.dev
as embed thumbnails for a more professional look.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:30:39 +01:00
Alexander Zielonka
266c1705a2 Remove temp files 2026-01-19 12:28:19 +01:00
Alexander Zielonka
0f1fdca66a Make Discord update server types dynamic from server list
All checks were successful
Deploy GSM / deploy (push) Successful in 23s
Server dropdown now shows actual servers from the API instead of
hardcoded list.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:28:02 +01:00
Alexander Zielonka
bc69201139 Add Discord update feature for superadmins in Dashboard
All checks were successful
Deploy GSM / deploy (push) Successful in 30s
Superadmins can now send custom update messages to Discord directly from
the Dashboard via a new modal with server type selection, title template,
description, and color picker.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:23:22 +01:00
0b5e573d45 Fix Terraria log parsing for player leave detection
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
Changed detection pattern from "hat das Spiel verlassen" to "ist weg"
to match actual Terraria server log format.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:59:36 +01:00
df390e63e4 Add Terraria player detection via log parsing
All checks were successful
Deploy GSM / deploy (push) Successful in 27s
- Add getTerrariaPlayers function in ssh.js for PM2 log parsing
- Support German and English join/leave messages
- Update rcon.js to use Terraria log parsing
- Add Terraria to player fetch conditions in servers.js
- Update autoshutdown.js and discordBot.js for Terraria support
- Update config path to tModLoader directory
- Add global error handlers in server.js
- Update CLAUDE.md with deployment rules and Terraria info

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 21:38:32 +01:00
c010065963 temp dateien entfernt 2026-01-15 20:20:54 +01:00
2c67d3c464 Add GSM API documentation for Discord updates and non-RCON servers 2026-01-15 14:34:59 +01:00
6b4fb7aa47 Add localhost-only internal Discord update route
All checks were successful
Deploy GSM / deploy (push) Successful in 28s
2026-01-15 14:34:06 +01:00
751991143a Add Hytale to Discord bot alerts and status
All checks were successful
Deploy GSM / deploy (push) Successful in 28s
- Add hytale to serverDisplay config with icon 🏰 and color
- Fix fetchServerStatuses to get players for Hytale (no RCON)
- Enables player join/leave alerts for Hytale

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 14:32:11 +01:00
14b031bb93 Fix API routes to fetch Hytale players without RCON
All checks were successful
Deploy GSM / deploy (push) Successful in 25s
Add server.type === 'hytale' check to player count API routes,
matching the fix in autoshutdown.js.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 14:28:17 +01:00
4b74010ccb Remove debug logging from Hytale player detection
All checks were successful
Deploy GSM / deploy (push) Successful in 28s
2026-01-15 14:25:45 +01:00
df4200d425 Fix autoshutdown to check Hytale players without RCON
All checks were successful
Deploy GSM / deploy (push) Successful in 25s
Hytale uses log parsing instead of RCON, so add explicit check for
server.type === 'hytale' to enable player count checking.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 14:24:05 +01:00
a518bb2b7f Add debug logging to Hytale player detection
All checks were successful
Deploy GSM / deploy (push) Successful in 30s
2026-01-15 14:22:29 +01:00
30a7f3edf0 Fix Hytale player detection with correct log patterns
All checks were successful
Deploy GSM / deploy (push) Successful in 26s
- Join: [World|*] Player 'Name' joined world ... (UUID)
- Leave: [PlayerSystems] Removing player 'Name (Name)' from world ... (UUID)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 14:19:04 +01:00
9a732c819c Add Hytale player detection via log parsing
All checks were successful
Deploy GSM / deploy (push) Successful in 26s
- Add getHytalePlayers function to ssh.js that parses server logs
- Track player joins via [Universe|P] Adding player pattern
- Track disconnects via Removing player pattern
- Integrate with rcon.js getPlayers and getPlayerList functions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 14:14:38 +01:00
52a06e435f Fix config editor syntax highlighting with character parser
All checks were successful
Deploy GSM / deploy (push) Successful in 25s
Replace regex-based tokenization with character-by-character parsing
to completely avoid issues with numbers in CSS class names.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 13:58:59 +01:00
7aad85c5d4 Fix Hytale prometheus metrics and config editor syntax highlighting
All checks were successful
Deploy GSM / deploy (push) Successful in 27s
- Add missing "hytale" entry to SERVER_JOBS in prometheus.js
- Fix config editor regex bug that was corrupting CSS class names (e.g. text-cyan-400 becoming text-cyan-<span>400</span>)
- Use placeholder tokens to prevent numbers regex from matching inside already-replaced spans

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 13:55:28 +01:00
8a3690d61f Add Hytale config editor and Prometheus integration
All checks were successful
Deploy GSM / deploy (push) Successful in 25s
- Add Node Exporter target for Hytale server (10.0.30.204:9100)
- Add Hytale config read/write functions to ssh.js
- Add GET/PUT /hytale/config API routes
- Create HytaleConfigEditor.jsx with JSON syntax highlighting
- Add Hytale config tab to ServerDetail.jsx
- Add stopCmd and port to Hytale server config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 13:50:45 +01:00
1f98747d59 Hytale logo angepasst
All checks were successful
Deploy GSM / deploy (push) Successful in 27s
2026-01-15 13:42:20 +01:00
b2dde62476 Add Hytale server support with tmux runtime
All checks were successful
Deploy GSM / deploy (push) Successful in 29s
- Add tmux runtime support to ssh.js (status, start, stop, logs, uptime)
- Add Hytale server configuration to config.json
- Add Hytale server info and logo to frontend (ServerCard, ServerDetail)
- Add Hytale emoji to Discord notification mapping
- Update documentation with Hytale server details

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 13:39:58 +01:00
Alexander Zielonka
8af57aa81a Fix console showing endless loading when logs are empty
All checks were successful
Deploy GSM / deploy (push) Successful in 23s
Changed logs state initialization from empty string to null to properly
distinguish between "not yet loaded" and "loaded but empty" states.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 10:17:11 +01:00
66716279ad Fix syntax highlighting regex order in config editors
All checks were successful
Deploy GSM / deploy (push) Successful in 22s
The number regex was applied after the boolean regex, causing it to
match "400" in CSS class names like "text-orange-400" and corrupt
the HTML output. Now uses placeholder tokens to mark numbers before
adding any HTML tags.

Affected editors: Palworld, Zomboid, OpenTTD

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 03:31:20 +01:00
8447484270 Add Discord update API route
All checks were successful
Deploy GSM / deploy (push) Successful in 26s
Adds POST /api/servers/discord/send-update endpoint that allows
superadmins to send announcements to all Discord guild update channels.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 03:13:49 +01:00
51b95240f2 Logging für REST Abfragen aus dem Palworld Server etnfernt
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
2026-01-12 03:07:23 +01:00
4bfb870fbb Add Palworld player count and list support via RCON
All checks were successful
Deploy GSM / deploy (push) Successful in 41s
- Add ShowPlayers RCON command handling for Palworld servers
- Update SSH access documentation with jump host instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 20:58:11 +01:00
b07ec607eb Remove SQLite databases from git tracking
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
Database files should not be in version control as they contain
production data that gets overwritten on each deployment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 13:55:25 +01:00
a07e8df3e7 Add server control buttons to dashboard with confirmation dialogs
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
- Add ConfirmModal component for stop/restart confirmations
- Add start/stop/restart buttons to ServerCard (moderator/admin only)
- Add confirmation dialogs to ServerDetail for stop/restart actions
- Add btn-sm CSS class for smaller buttons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 13:40:45 +01:00
3dc7e9e7e7 Restrict server detail access for guests
All checks were successful
Deploy GSM / deploy (push) Successful in 26s
- Add isGuest flag to UserContext
- Block guests from navigating to /server/:id route
- Make ServerCards non-clickable for guests
- Add rejectGuest middleware to backend
- Protect server detail endpoints (/:id, /metrics/history, /whitelist)

Guests can now only view the dashboard overview without accessing
individual server details.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:57:34 +01:00
Alexander Zielonka
e88e246be6 Add unreachable status handling to ServerCard
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
- Gray out unreachable servers with 50% opacity
- Disable click interaction for unreachable servers
- Show "Nicht erreichbar" badge

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 13:28:34 +01:00
Alexander Zielonka
f2b7b62d81 Bump frontend version to 1.0.0
All checks were successful
Deploy GSM / deploy (push) Successful in 23s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 12:36:19 +01:00
Alexander Zielonka
a043b6faf8 Trigger deployment 2026-01-09 12:35:11 +01:00
Alexander Zielonka
d5700fe84a Fix deployment workflow: correct target paths and PM2 cwd
- Deploy backend to /opt/gameserver-monitor/backend/ (not root)
- Deploy frontend to /opt/gameserver-monitor/frontend/dist/
- Run PM2 restart from backend directory with --update-env
- Add proper PM2 process check before restart

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 12:27:09 +01:00
Alexander Zielonka
2d9a5910fa Cleanup repo, add Gitea CI/CD workflow, improve error handling
All checks were successful
Deploy GSM / deploy (push) Successful in 1m25s
- Remove temp files and reorganize docs
- Add .gitea/workflows/deploy.yml for automated deployment
- Add unreachable host checks to server routes (/:id, logs, start/stop/restart)
- Add unreachable checks to config routes (zomboid, terraria, openttd)
- Return HTTP 503 with unreachable flag instead of crashing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 12:15:32 +01:00
f2f9e02fb2 zustand auf server wiederhergestellt 2026-01-09 08:43:18 +01:00
Alexander Zielonka
1010fe7d11 Add OpenTTD and Terraria support, improve config editors
- Add OpenTTD server integration (config editor, server card, API)
- Add Terraria server integration (config editor, API)
- Add legends to all config editors for syntax highlighting
- Simplify UserManagement: remove edit/delete buttons, add Discord avatars
- Add auto-logout on 401/403 API errors
- Update save button styling with visible borders

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 12:32:38 +01:00
20ba93b26f Add multi-guild Discord OAuth support
- Users can now login via Bacanaks OR Piccadilly Discord server
- Highest role from all servers is used (superadmin > moderator > user)
- Lazy initialization fixes env loading timing issue
- Updated documentation with implementation details and troubleshooting

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:30:15 +01:00
Alexander Zielonka
4fcc111def Add multi-guild Discord bot support with auto-setup
- Bot creates category and channels automatically when joining a server
- Channel structure: info, status, alerts, updates, diskussion, requests (forum)
- Add guild_settings database table for per-server configuration
- Add Discord bot invite button to Dashboard
- Add display settings API functions
- Add comprehensive Discord bot documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 18:29:13 +01:00
Alexander Zielonka
ff3fa0752e palworld added 2026-01-07 12:35:23 +01:00
Alexander Zielonka
c74ac543aa aa 2026-01-07 08:03:19 +01:00
2bb4dd723c ja 2026-01-07 02:41:37 +01:00
4194f68968 xd 2026-01-06 21:22:10 +01:00
Alexander Zielonka
5049e7791f Update documentation for Factorio World Management
- Add new components and service to directory structure
- Add Factorio World Management API endpoints
- Add feature description in Features section
- Mark feature as completed in todo.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 15:57:30 +01:00
Alexander Zielonka
be3e915980 Add world settings viewing with legacy fallback
- Store map generation settings in DB when creating new worlds
- Add info button to view settings for each saved world
- Show legacy warning for worlds created before this feature

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 15:51:35 +01:00
Alexander Zielonka
ff6adb093b Add Factorio World Management feature to GSM
- Add gsm-frontend to repository (React + Vite + TailwindCSS)
- New "Worlds" tab for Factorio server with:
  - List saved worlds with Start/Delete actions
  - Create new world with full map generation parameters
  - Preset selection (Default, Rich Resources, Rail World, etc.)
  - Save custom configurations as templates
- Show which save will be loaded in Overview tab
- Lock world management while server is running
- Backend changes deployed to server separately

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 15:42:14 +01:00