## Vorbereitung

### Das brauchst du

Plane etwa 15 Minuten ein. Halte die Zugangsdaten für Webspace, Datenbank und GPORTAL-FTP bereit.

PHP-Webspace

PHP 8.1 oder neuer, MySQL/MariaDB, HTTPS sowie PHP-Erweiterungen PDO MySQL, JSON und FTP.

LS25 Dedicated Server

GPORTAL-Zugang, FTP-Zugang und Berechtigung, zwei Mods hochzuladen und zu aktivieren.

Im Paket

`WEB-DASHBOARD.zip`, Telemetrie-Mod, LiveMap-Mod, diese Anleitung und Prüfsummen.

Wichtig: Bestehende Installationen vorher sichern: `config.php`, Datenbank und den Ordner `uploads`. Niemals eine fremde `config.php` veröffentlichen.

## Webspace

### Dashboard installieren

1

#### Dateien hochladen

`WEB-DASHBOARD.zip` lokal entpacken. Den Inhalt des Ordners per FTP in einen leeren Webordner laden, zum Beispiel `/farmdashboard`. Versteckte Datei `.htaccess` mit übertragen.

https://deine-domain.de/farmdashboard/
2

#### Datenbank anlegen

Im Hosting-Panel eine UTF-8-MySQL-/MariaDB-Datenbank erstellen. Danach in phpMyAdmin die Datei `sql/schema.sql` importieren.

3

#### config.php erstellen

`config.example.php` zu `config.php` kopieren. Datenbankzugang eintragen und im Abschnitt `gportal` die Verbindung aktivieren.

'gportal' => [ 'enabled' => true, 'cron_token' => 'MINDESTENS_32_ZUFAELLIGE_ZEICHEN', 'pull_on_dashboard_request' => true, ... ]

Beim FTP-Server nur Hostname/IP eintragen, nicht `ftp://`. Port, Benutzer und Passwort exakt aus GPORTAL übernehmen. Wenn der Login mit `tls => true` fehlschlägt, `false` verwenden.

4

#### GPORTAL-Pfade eintragen

Der Standardpfad der Telemetrie und die LiveMap-Dateien liegen im Profilordner des Servers. Bei abweichender GPORTAL-Struktur die exakten Pfade aus FileZilla übernehmen.

'telemetry_path' => '/profile/modSettings/FS25_FarmDashboardV2/telemetry.json', 'livemap' => [ 'static_path' => '/profile/modSettings/livemap_static.json', 'dynamic_path' => '/profile/modSettings/livemap_dynamic.json', 'fast_path' => '/profile/modSettings/livemap_fast.json', 'overview_path' => '/profile/modSettings/livemap_overview.dds', ],
5

#### Ersteinrichtung abschließen

`setup.html` im Browser öffnen. Administrator, sicheres Passwort und Servername festlegen. Den einmal angezeigten API-Schlüssel sicher speichern. Anschließend `setup.html` vom Webspace löschen oder umbenennen.

## LS25-Server

### Mods aktivieren

1

#### Server vollständig stoppen

Den LS25-Server im GPORTAL-Panel beenden und warten, bis er wirklich offline ist.

2

#### Beide ZIP-Dateien hochladen

Die Dateien `FS25_FarmDashboardV2.zip` und `FS25_LiveMap.zip` unverändert in den Mod-Ordner laden. Die ZIP-Dateien nicht entpacken und nicht erneut ineinander packen.

3

#### Im Spielstand aktivieren

Beide Mods im Dedicated-Webinterface für den richtigen Spielstand aktivieren. Server starten und mindestens bis zum vollständig geladenen Spielstand warten.

4

#### game.log kontrollieren

Im Log müssen diese Meldungen erscheinen. Die erfolgreiche Telemetrie-Meldung wird nicht bei jedem einzelnen Schreibvorgang ausgegeben, um das Log klein zu halten.

Info: [FarmDashboardV2] bootstrap v2.1.6.2 loaded [FarmDashboardV2] telemetry.json written successfully [FS25_LiveMap] livemap_overview.dds exported successfully

## Prüfen & Hilfe

### Ersten Abruf auslösen

Rufe die folgende Adresse einmal mit deinem eigenen geheimen Token auf. Bei Erfolg steht oben `"ok": true`. Danach das Dashboard öffnen und anmelden.

https://deine-domain.de/farmdashboard/api/gportal-pull.php?token=DEIN_CRON_TOKEN&force=1
Fertig, wenn …

Dashboard zeigt „Online“, Höfe werden erkannt, Kartenbild erscheint und Spieler/Fahrzeuge bewegen sich.

LIVE

Meldung | Lösung
--- | ---
gportal_ftp_login_failed | Host, Port, Benutzer und Passwort prüfen. `tls` auf den vom Anbieter unterstützten Wert setzen.
remote_file_read_failed | Pfad in FileZilla direkt bis zur Datei öffnen und exakt in `config.php` übernehmen.
Kartendatei fehlt | LiveMap-Mod aktivieren, Spielstand komplett laden und `/profile/modSettings/livemap_overview.dds` prüfen. Bei neuer Map wird die neue Datei automatisch erneut abgerufen.
Dashboard offline | `api/health.php` prüfen, danach den erzwungenen GPORTAL-Abruf öffnen und die JSON-Fehlermeldung auswerten.

24/7-Betrieb: Mit `pull_on_dashboard_request => true` werden Daten beim geöffneten Dashboard aktualisiert. Für echte Hintergrundaktualisierung einen Hosting-Cronjob auf `api/gportal-pull.php` mit Token im Abstand von 1 Minute einrichten.