luanti-web/README.md
2025-06-23 01:45:54 +02:00

117 lines
6.4 KiB
Markdown

# Luanti-Web: Ein dynamisches Webseiten-Toolkit
Willkommen beim Luanti Web Generator! Entstanden aus einer Leidenschaft für kreative Sandbox-Spiele, bietet dieses Hobby-Projekt ein leistungsstarkes, automatisiertes Toolkit zur Erstellung einer schönen und funktionsreichen statischen Webseite für Ihren Minetest- oder Luanti-Server. Präsentieren Sie Ihren Server, Ihre Welten, verfolgen Sie Ihre Spieler und informieren Sie Ihre Community.
Dieses System ist von Grund auf so konzipiert, dass es modular, leicht konfigurierbar und perfekt für kleine Gemeinschaften ist, die ohne großen Aufwand eine Webpräsenz wünschen.
## ✨ Features
* **Automatisierte Kartenerstellung:** Nutzt `minetestmapper`, um hochauflösende PNG-Karten Ihrer Spielwelten zu erstellen.
* **Performante Bildverarbeitung:** Verwendet `vips`, eine extrem schnelle und speichereffiziente Bibliothek, um auch riesige Karten (getestet bis 64k x 64k Pixel) für das Web zu skalieren.
* **Gekachelte Kartenerstellung:** Nutzt `gdal2tiles.py`, um performante, zoombare Kartenkacheln für ein flüssiges Benutzererlebnis zu erstellen.
* **Dynamischer Karten-Viewer:** Implementiert einen interaktiven Karten-Viewer mit **OpenLayers**, angetrieben von den generierten Kartenkacheln, inklusive digitalem Zoom über die höchste Auflösung hinaus.
* **Live-Spieler & Grundstücks-Anzeige:** Lädt dynamisch Spielerpositionen und geschützte Bereiche (Grundstücke) und zeigt sie als interaktive Overlays auf der Live-Karte an.
* **Layer-Steuerung:** Ein Menü auf der Karte erlaubt das Ein- und Ausblenden von Spielern, Hauptgrundstücken und Untergrundstücken (Parzellen).
* **Karten-Archiv:** Speichert automatisch einen täglichen Snapshot der Karte und macht ihn über eine Umschalt-Funktion auf der Welt-Detailseite verfügbar.
* **Vorlagen-gesteuerte Seitengenerierung:** Baut alle statischen HTML-Seiten aus einfachen, anpassbaren Vorlagen.
* **Flexible Konfiguration:** Einfache Konfiguration durch eine zentrale, globale `config.sh` und eine `web.conf`-Datei für jede Ihrer Welten.
* **Automatisierungs-bereit:** Konzipiert für die unbeaufsichtigte Ausführung über Planungswerkzeuge wie `cron`.
## 🔧 Voraussetzungen
Um dieses System zu betreiben, müssen die folgenden Softwarepakete auf Ihrem Server installiert sein:
* **bash:** Die Skriptsprache, die für das gesamte Projekt verwendet wird.
* **vips:** Eine hochperformante Bildverarbeitungsbibliothek.
* *Debian/Ubuntu Install:* `sudo apt-get install libvips-tools`
* **ImageMagick:** Wird aktuell noch für den Befehl `identify` (zum Auslesen von Bilddimensionen) benötigt.
* *Debian/Ubuntu Install:* `sudo apt-get install imagemagick`
* **GDAL/OGR:** Stellt das `gdal2tiles.py`-Skript für die Kachelerstellung bereit.
* *Debian/Ubuntu Install:* `sudo apt-get install gdal-bin python3-gdal`
* **SQLite3:** Das Kommandozeilen-Tool zur Abfrage der Spieldatenbanken (`players.sqlite`, `auth.sqlite`).
* *Debian/Ubuntu Install:* `sudo apt-get install sqlite3`
* **bc:** Der "basic calculator", wird für mathematische Operationen in Skripten benötigt.
* *Debian/Ubuntu Install:* `sudo apt-get install bc`
* **jq:** Ein Kommandozeilen-JSON-Prozessor, der von `sync_areas.sh` verwendet wird.
* *Debian/Ubuntu Install:* `sudo apt-get install jq`
* **minetestmapper:** Das ausführbare Programm zur Erstellung der Karten aus den Weltdaten. Muss im Projektverzeichnis platziert werden.
* **iproute2:** Stellt das `ss`-Kommando für den `check_server_status.sh` bereit (auf den meisten Systemen vorinstalliert).
* **Webserver:** Ein Webserver wie Nginx oder Apache wird benötigt, um die generierten statischen Dateien auszuliefern.
Ein mitgeliefertes Skript (`check_dependencies.sh`) kann alle wichtigen Abhängigkeiten automatisch überprüfen.
## ⚙️ Installation & Setup
### 1. Projektdateien herunterladen/klonen
Laden Sie den **letzten Build** von der [Releases-Seite](https://git.geigernet.eu/rainer/luanti-web/releases) herunter und entpacken Sie ihn in ein Basisverzeichnis auf Ihrem Server, z.B. `/opt/luweb/`.
ODER
Klonen Sie das Git-Repository in ein Basisverzeichnis.
```bash
git clone [https://git.geigernet.eu/rainer/luanti-web.git](https://git.geigernet.eu/rainer/luanti-web.git) /opt/luweb
cd /opt/luweb
# Alle Skripte ausführbar machen
chmod +x generate_map.sh generate_site.sh check_server_status.sh check_dependencies.sh sync_players.sh sync_areas.sh
```
### 2. Globale Konfiguration
Die Hauptkonfigurationsdatei ist `config.sh`. Sie müssen diese Datei bearbeiten, um sie an die Umgebung Ihres Servers anzupassen.
### 3. Konfiguration pro Welt
Das System ist so konzipiert, dass **nur Welten mit einer `web.conf`-Datei** im Web-Frontend angezeigt werden. Dies gibt Ihnen die volle Kontrolle darüber, welche Welten öffentlich sichtbar sind. Um eine Welt hinzuzufügen, kopieren Sie die Vorlage `site_generator/examples/web.conf.template` in das Datenverzeichnis der entsprechenden Welt und passen Sie die Werte an.
## 📂 Verzeichnisstruktur
```md
/opt/luweb/
├── config.sh
├── generate_map.sh
├── generate_site.sh
├── check_server_status.sh
├── check_dependencies.sh
├── sync_players.sh
├── sync_areas.sh
├── minetestmapper (ausführbare Datei)
├── site_generator/
│ ├── functions/
│ │ └── generators/
│ │ └── ...
│ ├── templates/
│ └── examples/
├── web_content/
└── worldmaps_output/
└── <world_name>/
├── map.png
└── map_info.txt
```
## 🚀 Nutzung & Automatisierung (Cronjob)
Die Skripte sind für die automatisierte Ausführung konzipiert. Richten Sie sie mit `crontab -e` ein.
```bash
# (Häufig) Aktualisiert Spieler- und Server-Status
* * * * * cd /opt/luweb && ./sync_players.sh >> /var/log/luweb/cron.log 2>&1
*/5 * * * * cd /opt/luweb && ./check_server_status.sh >> /var/log/luweb/cron.log 2>&1
# (Stündlich) Generiert die Basiskarte und Kacheln
0 * * * * cd /opt/luweb && ./generate_map.sh >> /var/log/luweb/cron.log 2>&1
# (Seltener) Synchronisiert Grundstücksdaten und baut die Webseite neu
45 */12 * * * cd /opt/luweb && ./sync_areas.sh >> /var/log/luweb/cron.log 2>&1
30 */12 * * * cd /opt/luweb && ./generate_site.sh >> /var/log/luweb/cron.log 2>&1
```
## 📄 Lizenz
**MIT License**
Copyright (c) 2025 Rage87 - rage87@geigernet.eu
(Lizenztext wie gehabt)
## 👤 Autoren
* **Rage87** (Main-Developer)