| 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 | ||
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-Tracking: Lädt dynamisch Spielerpositionen und zeigt sie als Marker auf der Live-Karte an, inklusive individuell gestalteter Popups.
- Karten-Archiv: Speichert automatisch einen täglichen Snapshot der Karte und macht ihn über eine Dropdown-Auswahl 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, die
convert(ImageMagick) ersetzt.- 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:
- 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 /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
2. Globale Konfiguration
Die Hauptkonfigurationsdatei ist config.sh. Sie müssen diese Datei bearbeiten, um sie an die Umgebung Ihres Servers anzupassen.
Wichtige Variablen in config.sh:
BASE_SCRIPT_DIR: Das Wurzelverzeichnis des Projekts (z.B./opt/luweb).MINETESTMAPPER_WORLD_DATA_BASE_PATH: Der Pfad zum Datenverzeichnis Ihrer Minetest/Luanti-Welten.WEB_ROOT_PATH: Das Document-Root Ihrer Webseite, in das die generierten Dateien platziert werden (z.B./var/www/IhreDomain.de/web).LOG_DIR_BASE: Das Verzeichnis, in das Logdateien geschrieben werden (z.B./var/log/luweb).
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 (z.B. <server-pfad>/worlds/meine_welt/web.conf) und passen Sie die Werte an.
📂 Verzeichnisstruktur
Das System verwendet nun eine modulare Struktur, um die Wartbarkeit zu erhöhen:
/opt/luweb/
├── config.sh
├── generate_map.sh
├── generate_site.sh
├── check_server_status.sh
├── check_dependencies.sh
├── minetestmapper (ausführbare Datei)
├── site_generator/
│ ├── functions/
│ │ ├── 01_utils.sh
│ │ ├── 02_init.sh
│ │ ├── 03_html_helpers.sh
│ │ └── generators/
│ │ ├── css_generator.sh
│ │ ├── static_pages_generator.sh
│ │ ├── world_detail_generator.sh
│ │ └── world_overview_generator.sh
│ ├── templates/
│ │ ├── world_detail_page.template
│ │ └── ...
│ └── examples/
│ └── web.conf.template
├── web_content/
│ ├── images/
│ └── static/
└── worldmaps_output/
└── <world_name>/
├── map.png
└── map_info.txt
🚀 Usage
1. Karten- und Daten-Generierung
Das generate_map.sh-Skript erzeugt die Karte, Kacheln und Metadaten für eine spezifische Welt.
# Erzeugt die Assets für die Welt im Verzeichnis 'world'
./generate_map.sh world
2. Webseiten-Generierung
Das generate_site.sh-Skript baut die gesamte Webseite für alle Welten, die eine web.conf besitzen.
# Generiert die komplette Webseite
./generate_site.sh
3. Live-Status-Prüfung
Das check_server_status.sh-Skript prüft den Online-Status aller konfigurierten Welten. Es sollte sehr häufig ausgeführt werden.
# Prüft den Server-Status
./check_server_status.sh
4. Automatisierung (Cronjob)
Für den vollautomatischen Betrieb wird die Einrichtung von Cronjobs empfohlen.
Beispiel für crontab -e:
# Generiere die Karten-Assets für 'world' einmal pro Stunde
0 * * * * /opt/luweb/generate_map.sh world >> /var/log/luweb/cron.log 2>&1
# Prüfe den Server-Status alle 2 Minuten
*/2 * * * * /opt/luweb/check_server_status.sh >> /var/log/luweb/cron.log 2>&1
# Baue die Webseite (z.B. für neue Admins, geänderte Beschreibungen) zweimal täglich neu
0 */12 * * * /opt/luweb/generate_site.sh >> /var/log/luweb/cron.log 2>&1
📄 Lizenz
MIT License Copyright (c) 2025 Rage87 - rage87@geigernet.eu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
👤 Autoren
- Rage87 (Main-Developer)