Nginx Proxy Manager - Einfaches Reverse-Proxy-Management für das Homelab

Der Nginx Proxy Manager ist ein kostenloses OpenSource Tool, das die Verwaltung des Nginx-Reverse-Proxies stark vereinfacht. Es richtet sich Nutzer, die mehrere Dienste hinter einer einzigen IP-Adresse betreiben und dabei auf einfache, aber sichere Weise Zugriffe steuern möchten.

Der Nginx Proxy Manager bietet eine Web-Oberfläche für das Erstellen, Verwalten und Absichern von Reverse-Proxies, ohne dass man die Nginx-Konfiguration manuell editieren muss.

  • Domains auf interne Dienste weiterleiten
  • SSL-Zertifikate automatisch über Let’s Encrypt ausstellen und erneuern
  • HTTP zu HTTPS umleiten
  • Zugriff auf bestimmte Dienste per IP-Filter oder Passwort schützen
  • Weiterleitungen, Subdomains und Streams (TCP/UDP) verwalten

Nginx Proxy Manager kann als Docker-Container betrieben werden. Er verwaltet die Nginx-Konfiguration im Hintergrund, während man alle Einstellungen über die Weboberfläche trifft. Dadurch kann man komplexe Reverse-Proxy-Setups ohne tiefgehendes Nginx-Wissen umsetzen.

Mehr Infos unter: nginxproxymanager.com

Nerd Fonts

Nerd-Fonts erweitert Monospace-Schriftarten um tausende zusätzliche Icons. Dadurch verbessert sich die visuelle Darstellung in Terminals, Editoren und Entwickler-Tools deutlich. Das Projekt ist aktuell nahezu konkurrenzlos in diesem Bereich. Nerd-Fonts können auf allen gängigen Betriebssystemen eingesetzt werden. Aufgrund ihrer Größe sind sie für Webseiten jedoch ungeeignet.

Zu den integrierten Iconsets gehören unter anderem:

  • Font Awesome
  • Font Awesome Extension
  • Material Design Icons
  • Weather Icons
  • Devicons
  • Octicons
  • Font Logos (Formerly Font Linux)

Intern wird die Ausgangsfont um zusätzliche Glyphen erweitert. Die Nerd-Fonts-Entwickler weisen diesen Icons feste Unicode-Bereiche zu, sodass sie konsistent in verschiedenen Anwendungen genutzt werden können. Tools wie Prompt-Frameworks oder Statusleisten greifen auf diese Codepoints zu und rendern die Icons automatisch.

Die Integration in Tools wie Starship oder Oh My Zsh ist nahtlos. viele Themes setzen Nerd-Fonts sogar voraus.

Weitere Informationen findet man auf der offiziellen Projektseite: www.nerdfonts.com

Dialog mit apt-cyg unter Cygwin installieren

apt-cyg ist ein Kommandozeilen-Paketmanager für Cygwin, mit dem man Pakete bequem über die Eingabeaufforderung installieren kann, ohne jedes Mal den grafischen Setup-Dialog neu starten zu müssen. Er löst das Problem der umständlichen Nachinstallation, indem er ein apt-ähnliches Interface für die Cygwin-Paketverwaltung bereitstellt.

dialog ist ein Kommandozeilen-Tool zur Erstellung von textbasierten Dialogboxen (wie Eingabefelder, Menüs, Ja/Nein-Abfragen etc.), das auch unter Cygwin auf Windows verfügbar ist. Es ermöglicht es, relativ einfach grafische Benutzeroberflächen für Shell-Skripte zu erstellen.

Möchte man dialog unter Cygwin mit apt-cyg installieren, benötigt man mindestens diese beiden Pakete dialog libdialog15 installieren:

apt-cyg install dialog libdialog15

Ohne das Paket libdialog15 erhält man folgende Fehlermeldung:

dialog.exe: error while loading shared libraries: cygdialog-15.dll: cannot open shared object file: No such file or directory

Warum libdialog15 keine automatische Abhängigkeit von dialog ist, bleibt schleierhaft.

Starship - Ein plattformübergreifende Prompt für Linux, Windows und macOs

Starship ist ein Prompt-Renderer, der einen schnellen, anpassbaren und einheitlichen Prompt in allen Systemen und Shells bereitstellt.

Die einzigen Voraussetzungen sind eine funktionierende Shell wie Bash, Zsh, Fish oder PowerShell sowie ein Terminal-Emulator. Wer schöne Symbole will, braucht auch noch eine Nerd-Font. Starship selbst ist ein einzelnes, in Rust kompiliertes Binary, das ohne zusätzliche Laufzeitumgebungen auskommt und direkt unter Linux, macOS, Windows Native (PowerShell oder Cmd) und sogar in Umgebungen wie Cygwin oder WSL läuft.

Das Tool ersetzt den Standard-Prompt der Shell durch hochgradig konfigurierbare Ausgaben. Dazu startet es bei jeder neuen Eingabeaufforderung einen sehr schnellen Rendering-Prozess, der den aktuellen Kontext des Verzeichnisses analysiert. Es sammelt relevante Daten wie Git-Status, Versionen oder Befehlsdauer und stellt diese in einer kompakten Zeile dar. Ist der Akku fast leer, wird auch das angezeigt. Die eigentliche Shell bleibt dabei vollständig unberührt und alle Befehle funktionieren wie gewohnt.

Die größte Stärke von Starship ist seine nahtlose Plattformunabhängigkeit. Man erhält auf einem Windows-Rechner in der PowerShell exakt das gleiche, vertraute Erscheinungsbild wie in Bash auf einem Linux-Server. Diese Einheitlichkeit steigert die Produktivität erheblich. Weitere klare Vorteile sind die hohe Geschwindigkeit, die durch Rust garantiert wird, und die intelligente, kontextsensitive Anzeige: Nur was gerade benötigt wird, wie der Git-Branch oder die Node.js-Version, wird auch tatsächlich angezeigt. Ein geniales Detail ist die farbliche Kodierung des Prompts, die sofort visuell anzeigt, ob der letzte Befehl erfolgreich war. Starship ist out of the box einsetzbar, kann aber nach Belieben angepasst werden. Zu erwähnen ist, dass für eine ansprechende Ausgabe eine Nerd-Font benötigt wird, die separat zu installieren ist. Sie stellt Icons für viele Zwecke dar.

Nach der Installation des Windows-Binaries genügt ein Eintrag in der ~/.bashrc, um den Linux-ähnlichen Prompt auch unter Cygwin zu aktivieren:

# Das funktioniert auch in der ~/.bashrc unter Cygwin auf Windows
eval "$(starship init bash)"

Nach dem Neustart der Shell zeigt Starship sofort einen informativen Prompt, der unter anderem den Git-Status, die Python-Version im aktuellen virtuellen Environment und die Ausführungszeit des letzten langen Befehls an – alles im selben Layout wie auf einem Linux-System. Für Entwickler und Administratoren, die regelmäßig zwischen verschiedenen Betriebssystemen wechseln oder einfach Wert auf einen informativen und zuverlässigen Terminal-Prompt legen, ist Starship nahezu perfekt geeignet.

Weitere Informationen, Installationsanleitungen und die umfangreiche Moduldokumentation findet man auf der offiziellen Projektseite

Blockbench - OpenSource Low-Poly-Modelling

Blockbench ist ein auf Low-Poly-Modellierung augelegter 3D-Editor, da er auf Electron setzt, kann er unter Windows, macOS oder Linux ausgeführt werden. Er arbeitet primär mit Quadern, die man rotiert, skaliert und zusammensetzt, was den Prozess im Vergleich zum klassischen Vertex-Modeling vereinfacht. Blockbench bietet einen integrierten Textur-Editor, mit dem man Texturen direkt auf das 3D-Modell malt. Blockbench verfügt auch über einen Animationseditor; Es ist möglich, ein Modell zu riggen und es anschließend mithilfe von Keyframes für Position, Rotation und Skalierung zu animieren.

Der Editor exportiert in diverse 3D-Formate wie OBJ oder GLTF sowie in spezifische Minecraft-Formate. Zu den großen Stärken zählt die extrem flache Lernkurve, die es Einsteigern erlaubt, innerhalb weniger Minuten brauchbare Ergebnisse zu erzielen.

Blockbench ist auf Low-Poly-Modellierung spezialisiert; für organisches High-Poly-Sculpting ist es nicht geeignet.

Da Blockbench über eine integrierte Konsole verfügt und durch Plugins erweiterbar ist, kann man Aufgaben automatisieren.

Weitere Informationen und den Download findet man unter blockbench.net. Für Minecraft-Modder und Indie-Entwickler mit Fokus auf Retro-Ästhetik das Tool ideal.

ragersMediaInfo - Medieninfos auf dem Stream Deck und der MiraBox

ragersMediaInfo zeigt umfangreiche Medieninformationen wie Titel, Interpret, Album und das Albumcover. Die Anzeige wird bei jedem Titelwechsel aktualisiert und ist für maximale Kompatibilität nahtlos in die native Windows-Medien-API integriert.

Es werden beliebig viele Tasten untertsützt, jede Taste kann ein eigenes Layout haben:

  • Titel
  • Interpret
  • Album
  • Titel + Interpret
  • Titel + Album
  • Titel + Interpret + Album
  • Cover

Unterstützte Anwendungen

Das Plugin verwendet den Windows 10/11 Global System Media Transport Controls Session Manager (GSMTC) - Jede Anwendung die, der GSMTC unterstützt, funktioniert automatisch. Dies umfasst (ist aber nicht beschränkt auf):

  • Spotify (App + Web)
  • YouTube / YouTube Music (über den Browser)
  • Apple Music Web
  • Amazon Music (App + Web)
  • Foobar2000
  • Chrome, Edge, Opera, Firefox, Vivaldi (alle Medien mit Metadaten)
  • Windows Media Player

Generell gilt: Wenn Windows den Titel in der Lautstärkeanzeige anzeigt oder die Wiedergabe-/Pause-Tasten der Tastatur funktionieren, funktioniert das ragersMediaInfo-Plugin.

Den Download gibt es bei manuell bei rager.dev oder direkt im Store von MiraBox.

MiraBox - Ein Chinesischer Stream Deck Klon

Das MiraBox MBOX 293S, häufig auch „Stream Dock“ genannt, ist ein kompaktes, kabelgebundenes Macro-Pad, das funktional an ein „Stream Deck“ erinnert, jedoch mit etwa 35 Euro nur einen Bruchteil kostet. Es verfügt über 15 frei programmierbare LCD-Tasten, hinter denen ein durchgehendes Display verbaut ist. Dadurch können die Tasten beliebige Icons oder Statusanzeigen darstellen.

Im Vergleich zu herkömmlichen Tastaturen oder Maus-Shortcuts bietet ein Gerät dieser Art deutliche Vorteile: visuelles Feedback, eine klare Zuordnung von Aktionen und eine schnell zugängliche Bedienoberfläche. Das macht es besonders für Workflows mit vielen wiederkehrenden Schritten interessant, bei denen Übersicht und Reaktionszeit eine große Rolle spielen.

Elgato brachte mit dem „Stream Deck“ den ersten weit verbreiteten Vertreter dieser Geräteklasse auf den Markt, primär für Streamer, die damit Szenen, Audioquellen oder andere Streaming-Elemente steuern. Die Anforderungen, viele Befehle, schnelle Erreichbarkeit und intuitive Bedienung, gelten aber ebenso für zahlreiche andere Anwendungen, etwa Entwicklungs-, Kreativ- oder Automations-Tools.

Inzwischen existieren sowohl von Elgato als auch von MiraBox zahlreiche Varianten in unterschiedlichen Größen. Teilweise verfügen diese auch über Drehregler, um beispielsweise Lautstärken analog zu regeln.

Jeder Button des MBOX 293S kann mit Shortcuts belegt werden, die über die mitgelieferte Software verwaltet werden. Diese Software lässt sich über Plugins aus einem eigenen App-Store erweitern. Viele Plugins, die ursprünglich für das Elgato Stream Deck entwickelt wurden, sind zudem mit der MiraBox kompatibel. Mithilfe eines Tampermonkey-Scripts lassen sich diese Plugins direkt aus dem offiziellen Elgato-Store herunterladen. Icons und grafische Elemente können meist problemlos übernommen werden. Bei Plugins hängt die tatsächliche Kompatibilität jedoch von der jeweiligen Implementierung ab.

Der Shop und die offizielle Software unterstützen nur Windows und MacOS. Für die MiraBox 293 (ohne S) existieren bereits Open-Source-Implementierungen, die unter Linux funktionieren. Auch gibt es bereits ein Linux StreamDock SDK, das allerdings keine Plugins unterstützt, sondern nur die direkte Kommunikation. Wahrscheinlich wird es aber bald erste Implementierungen eines Pluginsystems auch für Linux geben.

Einer der nächsten Artikel wird sich mit der Pluginentwicklung beschäftigen. Auch wenn die Hardware gut und preiswert ist, so ist vor allem die Dokumentation auf Englisch dürftig. Es gibt zwar ein großes Forum, allerdings ist dieses hauptsächlich in Chinesisch.

Zusammengefasst kann man sagen, dass es sich bei der MiraBox um ein interessantes Produkt handelt. Vor allem durch den Preis wird es für eine größere Zielgruppe interessant.

Mit dem Ulanzi D200 U-Studio gibt es ein weiteres ähnliches Gerät, das bereits ausführlich auf HACKADAY analysiert wurde.

MiniSearch - Volltextsuche mit minimalem Overhead

MiniSearch ist eine JavaScript-Bibliothek, die client- und serverseitige Volltextsuche ermöglicht, indem sie einen invertierten Index im Arbeitsspeicher des Browsers oder Node.js-Servers aufbaut. Der Index wird vollständig im Arbeitsspeicher gehalten, wodurch die Datenmenge, die durchsucht werden kann, begrenzt ist. Auch wird der Index beim Starten immer neu aufgebaut, was für größere Mengen an Daten nicht ideal ist. Bei Versuchen mit ca. 6 MB an Daten hat der Aufbau des Index nur ca. 860 ms gedauert. Eine Fuzzy-Suche war meist in unter einer ms durchgeführt.

MiniSearch ist eine reine JavaScript-Bibliothek ohne externe Abhängigkeiten. Dadurch ist sie auch ideal, wenn ein kleines serverseitiges Projekt mit einer Volltextsuche ausgestattet werden muss, wo Solr oder auch schon Meilisearch viel Overhead benötigen. MiniSearch hingegen kann direkt eingebunden und verwendet werden. Auch die Nutzung im Browser in einer PWA ist ideal.

Die Kernfunktionalität von MiniSearch basiert auf einem Radix Tree (einem platzoptimierten Präfixbaum) für den invertierten Index. Dieser Ansatz macht die Indexierung und Suche nicht nur schnell, sondern auch besonders speichereffizient, was für mobile Browser entscheidend ist.

Es ist möglich, Dokumente zur Laufzeit hinzuzufügen und zu entfernen. Die Bibliothek bietet erweiterte Suchfunktionen wie Präfix-Suche, Fuzzy-Suche für Tippfehler und Field Boosting zur Gewichtung von Feldern, sodass Treffer in Titelfeldern höher bewertet werden können als z.B. in der Beschreibung. MiniSearch bietet viele Funktionen, die man bei einer so kleinen Suche nicht erwarten würde. So generiert Die Auto-Suggestion-Funktionalität Vorschläge direkt aus den indizierten Dokumenten und sortiert sie nach Relevanz.

Im Vergleich zu schwergewichtigen Lösungen wie Solr oder Meilisearch punktet MiniSearch durch minimalen Overhead. Während diese serverbasierten Lösungen erhebliche Ressourcen benötigen, kann MiniSearch direkt im Anwendungsprozess operieren.

sed - Der universelle Text-Transformer für die Kommandozeile

sed steht für Stream Editor und ist ein Unix/Linux-Kommandozeilenwerkzeug, das die automatische Bearbeitung von Text ermöglicht, indem es nicht-interaktive Transformationen durchführt.

sed gibt es für alle Unix-ähnlichen Betriebssysteme (wie Linux oder macOS) oder Umgebungen wie Cygwin unter Windows. sed ist praktisch immer vorinstalliert oder über die Paketverwaltung leicht beziehbar. Da es Bestandteil von Busybox ist, ist es auch in den meisten Docker-Containern vorhanden und muss nicht installiert werden.

Die Kernfunktionalität von sed besteht darin, einen Textstrom zeilenweise zu lesen, auf jede Zeile eine oder mehrere vordefinierte Operationen anzuwenden und das Ergebnis auszugeben. Sämtliche Bearbeitungen wie Suchen, Ersetzen, Löschen oder Einfügen laufen dabei ohne manuelle Eingriffe ab. sed verarbeitet Text zeilenweise: Es lädt jede Zeile in den Pattern Space, wendet die definierten Operationen darauf an und gibt das Ergebnis anschließend aus. Dieser Prozess wiederholt sich für alle Zeilen der Eingabedatei.

Es eignet sich hervorragend für Skripte oder Build-Pipelines, in denen Konfigurationsdateien angepasst werden müssen.

Entfernt alle Zeilen, die mit '#' beginnen und überschreibt die Originaldatei

sed -i '/^#/d' meine_konfiguration.conf

Ersetzt in allen Zeilen das Wort "alt" durch "neu" und erstellt eine Backup-Datei

sed -i.bak 's/alt/neu/g' meine_datei.txt

Weitere Informationen wie eine vollständige Befehlsreferenz und Tutorials findt man in der offiziellen GNU sed Dokumentation.

Mumble Auto-Restart für Let's Encrypt Zertifikate

Will man Let's Encrypt TLS/SSL-Zertifikate mit Mumble nutzen, so gibt es das Problem, dass der Mumble-Server diese nicht neu lädt, weswegen sie nach 90 ungültig sind. Wird der Mumble-Server in einem Docker-Container betrieben, kann man ihn über ein ENTRYPOINT automatisch neu starten lassen. Dafür muss der Mode restart: unless-stopped oder restart: allways gesetzt sein. In meinem Fall lasse ich die Let's Encrypt durch Caprover erstellen und mountet sie dann direkt im Docker-Container. Die Zertifikate findet man unter /captain/data/letencrypt/etc/live/<domain> auf dem Hostsystem.

#!/bin/bash
while true; do
  # Murmur im Hintergrund starten
  mumble-server -ini /config/mumble-server.ini -fg &
  
  PID=$!
  
  # Prozess für 30 Tage pausieren (2.592.000 Sekunden)
  sleep 2592000
  
  # Murmur-Prozess beenden, was den Container-Exit und Restart auslöst
  kill $PID
done