| site_generator | ||
| web_content | ||
| .gitignore | ||
| check_dependencies.sh | ||
| check_server_status.sh | ||
| colors.txt | ||
| config.sh | ||
| generate_map.sh | ||
| generate_site.sh | ||
| LICENSE.md | ||
| minetestmapper | ||
| README.md | ||
| sync_areas.sh | ||
| sync_players.sh | ||
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.shund eineweb.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
- Debian/Ubuntu Install:
- ImageMagick: Wird aktuell noch für den Befehl
identify(zum Auslesen von Bilddimensionen) benötigt.- Debian/Ubuntu Install:
sudo apt-get install imagemagick
- Debian/Ubuntu Install:
- GDAL/OGR: Stellt das
gdal2tiles.py-Skript für die Kachelerstellung bereit.- Debian/Ubuntu Install:
sudo apt-get install gdal-bin python3-gdal
- Debian/Ubuntu Install:
- SQLite3: Das Kommandozeilen-Tool zur Abfrage der Spieldatenbanken (
players.sqlite,auth.sqlite).- Debian/Ubuntu Install:
sudo apt-get install sqlite3
- Debian/Ubuntu Install:
- bc: Der "basic calculator", wird für mathematische Operationen in Skripten benötigt.
- Debian/Ubuntu Install:
sudo apt-get install bc
- Debian/Ubuntu Install:
- jq: Ein Kommandozeilen-JSON-Prozessor, der von
sync_areas.shverwendet wird.- Debian/Ubuntu Install:
sudo apt-get install jq
- Debian/Ubuntu Install:
- minetestmapper: Das ausführbare Programm zur Erstellung der Karten aus den Weltdaten. Muss im Projektverzeichnis platziert werden.
- iproute2: Stellt das
ss-Kommando für dencheck_server_status.shbereit (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 herunter und entpacken Sie ihn in ein Basisverzeichnis auf Ihrem Server, z.B. /opt/luweb/.
ODER
Klonen Sie das Git-Repository in ein Basisverzeichnis.
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
/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.
# (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)