https://github.com/emergencyforge/intrarp-setup
Die einfache Setup-Datei für intraRP (Web).
https://github.com/emergencyforge/intrarp-setup
Last synced: 2 months ago
JSON representation
Die einfache Setup-Datei für intraRP (Web).
- Host: GitHub
- URL: https://github.com/emergencyforge/intrarp-setup
- Owner: EmergencyForge
- License: gpl-3.0
- Created: 2025-09-29T17:04:47.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-04-16T07:20:24.000Z (2 months ago)
- Last Synced: 2026-04-16T09:25:19.293Z (2 months ago)
- Language: PHP
- Size: 246 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# intraRP Setup
Setup-Wizard für [intraRP](https://github.com/EmergencyForge/intraRP) — ein Intranet-Rollenspielsystem mit Discord-Integration für FiveM-Feuerwehr- und Rettungsdienst-Communities.
Das Script lädt das aktuelle Release-ZIP herunter, führt die Datenbank-Migrations aus, erstellt die `.env` und löscht sich anschließend selbst.
## Voraussetzungen
### PHP
- **PHP ≥ 8.2** (empfohlen: 8.3 oder 8.4)
- Folgende Extensions müssen aktiviert sein:
| Extension | Zweck |
|-------------------------|--------------------------------|
| `pdo` | Datenbank-Basis |
| `pdo_mysql` | MySQL-Treiber |
| `mbstring` | String-Handling (Twig, OAuth2) |
| `openssl` | HTTPS, OAuth2-Tokens |
| `fileinfo` | Upload-MIME-Erkennung |
| `dom` | XML/HTML-Parser (Twig, dompdf) |
| `xml` | XML-Parser |
| `json` | JSON-Serialisierung |
| `session` | Benutzer-Sessions |
| `intl` | Internationalisierung |
| `zip` | Release-ZIP entpacken |
| `curl` | HTTPS-Downloads |
| `filter` | Input-Validierung |
| `ctype` | String-Validierung |
| `gd` **oder** `imagick` | PDF-Generierung (dompdf) |
### PHP-Konfiguration
Das Release-ZIP ist ca. 100 MB groß. Folgende `php.ini`-Werte werden empfohlen:
- `memory_limit = 512M`
- `max_execution_time = 300`
- `upload_max_filesize = 256M`
- `post_max_size = 256M`
### Sonstiges
- MySQL-Datenbank (muss vorab angelegt werden — Tabellen werden automatisch erstellt)
- [Discord-Applikation](https://wiki.emergencyforge.de/erste-schritte/discord-app-erstellen/) (Client ID + Secret)
- Git — nur für Main/Custom Branch (Entwicklermodus)
- `exec()`-Berechtigung — nur für Main/Custom Branch (Composer-Autoinstall)
## Installation
1. `setup.php` in das gewünschte Webserver-Verzeichnis hochladen
2. Sicherstellen dass das Verzeichnis für PHP **beschreibbar** ist (`chmod 0775`)
3. Im Browser aufrufen (z.B. `https://example.com/setup.php`)
4. Dem 6-Schritt-Wizard folgen:
- **Prüfung** — PHP-Version, Extensions, Schreibrechte, Download-Methode
- **Version** — Release-ZIP oder Branch auswählen
- **Datenbank** — Zugangsdaten eingeben und Verbindung testen
- **System** — Domain und Base Path bestätigen
- **Discord** — Client ID und Secret eintragen + live testen
- **Übersicht** — Eingaben prüfen und abschicken
5. Setup abschicken — der Wizard lädt das ZIP, führt die DB-Migrations aus, schreibt die `.env` und löscht sich selbst
Die Discord-Redirect-URI wird im System-Step automatisch angezeigt — diese muss in der Discord-Applikation unter **OAuth2 → Redirects** eingetragen werden.
## Entwicklermodus
Über `setup.php?dev` kann ein Custom Branch gewählt werden. Dafür muss Git auf dem Server installiert sein. Der Wizard versucht automatisch, Composer herunterzuladen und `composer install --no-dev -o` auszuführen — wenn `exec()` gesperrt ist, wird eine manuelle Anleitung gezeigt.
## Debug-Modus
Mit `setup.php?debug` wird `display_errors` aktiviert und PHP-Fehler werden direkt im Browser ausgegeben. Für Produktivumgebungen **nicht** verwenden.
## Troubleshooting
**„Verzeichnis nicht beschreibbar"**
Der PHP-User (meistens `www-data` oder der FPM-Pool-User) muss ins Setup-Verzeichnis schreiben dürfen. Lösung: `chown www-data .` und `chmod 0775 .` im Setup-Verzeichnis.
**„Extension XY fehlt"**
Shared-Hoster: im Kundenpanel nach „PHP-Module" suchen und die fehlende Extension aktivieren. VPS: `apt install php8.2-` bzw. das Äquivalent der Distribution, dann PHP-FPM neu starten.
**„GitHub API Fehler" / Rate-Limit**
Das Setup kontaktiert `api.github.com/repos/EmergencyForge/intraRP/releases/latest`. Bei Rate-Limit-Überschreitung fällt es automatisch auf die nicht-authenticated Redirect-Route zurück. Wenn das auch scheitert: kurz warten (GitHub limitiert 60 requests/h pro IP) oder mit `?dev` den Branch-Modus wählen.
**„Discord lehnte ab: invalid_client"**
Die Client ID oder das Secret ist falsch. Im Discord Developer Portal unter der App → OAuth2 → Reset Secret, dann den neuen Wert eintragen.
**„setup.php konnte nicht automatisch gelöscht werden"**
Nach erfolgreichem Setup muss `setup.php` manuell aus dem Webroot entfernt werden — sonst könnte jemand das System re-installieren und dabei vorhandene Daten überschreiben.
**Migration-Warnung im Abschluss-Screen**
Wenn die Phinx-Migrations nicht automatisch liefen (z.B. weil `vendor/` fehlt), versucht intraRP sie beim ersten Web-Request erneut auszuführen. Falls das ebenfalls scheitert: im Projekt-Root `vendor/bin/phinx migrate -e production` manuell ausführen.
## Sicherheitshinweise
- Das Setup nutzt einen **CSRF-Token** und ein **Rate-Limit** (20 Requests/Minute), um automatisierte Angriffe abzuwehren
- Der generierte `APP_KEY` ist ein 32-Byte Zufallswert aus `random_bytes()` — wird für künftige Token-Signaturen verwendet
- Das Setup loggt Fehler ausschließlich in der PHP-Session, **nicht** in eine Datei — damit nach dem Setup keine Logs mit Pfaden/Credentials zurückbleiben
- Beim Branch-Update prüft das Setup, ob ein vorhandenes `.git`-Verzeichnis tatsächlich auf `EmergencyForge/intraRP` zeigt, bevor es `git reset --hard` ausführt
## Lizenz
[GPL-3.0](LICENSE.md)