117 lines
6.4 KiB
Markdown
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)
|