Anleitungen

b.lan – Momentaner Remote-Desktop über einen Browser für Heimserver, die sich weigern, eine Desktop-Umgebung zu installieren

b.lan – Momentaner Remote-Desktop über einen Browser für Heimserver, die sich weigern, eine Desktop-Umgebung zu installieren

In den letzten Wochen bin ich ziemlich oft zwischen Terminal und Browser hin- und hergewechselt, um mich um den Homeserver zu kümmern. Manchmal müssen Sie die Admin-Seite des Routers öffnen, manchmal müssen Sie die Website-Anzeige auf der Clientseite testen oder einfach eine Datei mit Chrome herunterladen, nachdem Sie sich bei einem bestimmten Konto angemeldet haben. Jedes Mal, wenn Sie eine SSH-Verbindung mit Portweiterleitung herstellen oder einen Link in einen lokalen Browser kopieren müssen, fühlt es sich für einen 5-Sekunden-Auftrag wirklich kompliziert an.

Es entstand der Gedanke, eine Desktop-Umgebung (DE) zu installieren. Aber DEs mögen es, ganz zu schweigen davon, dass sie die Abhängigkeiten von Dutzenden von Paketen, Display-Managern und Compositors einbeziehen – die tatsächlich rund um die Uhr laufen, auch wenn sie nicht verwendet werden.

Deshalb habe ich b.lan erstellt: einen On-Demand-Remote-Desktop, der nur bei Verwendung läuft, sich im Leerlauf automatisch ausschaltet und im Leerlauf nur über insgesamt 50 MB RAM verfügt.

Warum nicht einfach DE installieren?

Diese Frage stellt sich jedes Mal, wenn ich über dieses Setup spreche. Die Antwort ist einfach: Ressource. Dieser HP 14s Server verfügt nur über 8 GB RAM und einen mittelmäßigen Prozessor. Nginx, PHP-FPM, MySQL und mehrere andere Dienste verbrauchen bereits 1-2 GB. Das Hinzufügen von DE bedeutet, dass 300 MB–2 GB hinzugefügt werden, was auch dann weitergeht, wenn niemand angemeldet ist.

Was ich brauche, ist kein 24/7-Desktop. Was ich brauche, ist: die Möglichkeit, den Bildschirm bei Bedarf für einen Moment auszuleihen und ihn dann zurückzugeben, wenn er fertig ist. Es ist, als würde man einen Computer mieten, nicht kaufen.

KomponentenRAMFortsetzung?
Vollständiges DE (XFCE)~300 MBJa
Vollständiges DE (GNOME/KDE)~1–2 GBJa
b.lan (im Leerlauf)~50 MBNein – schaltet sich im Leerlauf aus
Chrome (1 Tab)~200 MBNur bei Verwendung
Hinweis: Der Dienst b.lan wird nach 30 Minuten ohne VNC-Verbindung vollständig heruntergefahren. Im toten Zustand sind die verwendeten Ressourcen = 0. Null. Vergleichen Sie dies mit ED, wo der Prozess weitergeht, obwohl Sie schlafen.

Hier kommt b.lan

b.lan (b.lan – ja, nur 4 Buchstaben) ist ein browserbasierter Remote-Desktop, auf den von jedem Gerät im lokalen Netzwerk aus zugegriffen werden kann. Öffnen Sie einfach https://b.lan in einem Browser, klicken Sie auf „Sitzung starten“ und in wenigen Sekunden haben Sie einen virtuellen Desktop komplett mit Chrome, Dateimanager und Terminal.

Erste Anzeige von b.lan, wenn die Sitzung beendet ist Erste Ansicht – Remote-Desktop ist mit einem Klick startbereit

Wenn die Sitzung ausgeführt wird, ändert sich die Anzeige in eine einfache Symbolleiste mit einem Iframe, der über noVNC direkt eine Verbindung zum virtuellen Desktop herstellt. Von hier aus können Sie:

  • Surfen Sie mit Chrome, wenn Sie mit Ihren Konten angemeldet sind
  • Durchsuchen Sie die Serverdateien mit dem Thunar File Manager (Strg+Alt+F)
  • Greifen Sie direkt mit xfce4-terminal (Strg+Alt+T) auf das Terminal zu.
  • Öffnen Sie ein neues Chrome (Strg+Alt+C)
  • Beenden Sie die Sitzung jederzeit mit der Schaltfläche „Beenden“
B.lan wird angezeigt, wenn die Sitzung mit noVNC-Symbolleiste und Iframe ausgeführt wird Sitzung läuft – minimale Symbolleiste oben, virtueller Desktop im Iframe

Was Sie auf dem virtuellen Desktop tun können

1. Chrome-Browser

Chrome Stable 149 läuft auf der virtuellen Anzeige. Das Profil ist von meinem lokalen Chrome getrennt – Sie können sich also mit bestimmten Konten speziell für Serverzwecke anmelden (Websites testen, auf Router zugreifen, Dateien herunterladen).

Chrome-Browser läuft auf virtuellem Desktop Chrome läuft auf dem Xvfb-Display :99 – sieht aus wie ein normaler Desktop, ist aber nur virtuell

2. Datei-Explorer – Thunar

Dies ist die Funktion, die ich am häufigsten verwende. Mit Thunar kann ich mithilfe der GUI durch Serverdateien navigieren – Dateien kopieren und einfügen, Verzeichnisse öffnen und Miniaturansichten von Bildern anzeigen. Viel schneller als wiederholtes ls im Terminal beim Durchsuchen eines unbekannten Ordners.

Thunar-Dateimanager zeigt Serverdateien an Thunar File Manager – das Durchsuchen von Serverdateien ist oft besser als ls

3. Terminal – xfce4-terminal

Ja, auf dem virtuellen Desktop, der Chrome und einen Dateimanager enthält, gibt es auch ein Terminal. Multitasking ist jetzt noch besser: Terminal in einem Fenster, Browser in einem anderen Fenster, auf demselben Bildschirm.

Terminal läuft auf virtuellem Desktop Terminal neben dem Browser – das Arbeiten wird flexibler

Technische Architektur

Hinter seinem einfachen Erscheinungsbild verwendet b.lan einen leichten, aber leistungsstarken Stack:

Xvfb
Virtueller Framebuffer – erstellt eine gefälschte Anzeige ohne Monitor
x11vnc
VNC-Server – Anzeige X für das Netzwerk freigeben
websockify + noVNC
WebSocket Bridge – VNC über Browser ohne Plugins
openbox + tint2
Minimaler Fenstermanager – Taskleiste + Fensterverwaltung
Chrome Stable
Primärer Browser – dauerhaftes Profil mit gespeicherten Anmeldungen
Thunar + xfce4-terminal
Dateimanager + Terminal – vollständige GUI ohne DE

Der Datenfluss sieht folgendermaßen aus:

Browser (client)
    ↓ HTTPS
Nginx (b.lan:443)
    ↓ proxy
noVNC / websockify (:6080)
    ↓ WebSocket
x11vnc (:5900)
    ↓
Xvfb (:99)
    ↓
openbox + tint2 + Chrome + Thunar + Terminal

Öffnen Sie die b.lan-Seite → Nginx server index.html → JavaScript-Status prüfen → Wenn es tot ist, zeigen Sie die Startschaltfläche an → Klicken Sie auf Start, lösen Sie systemctl start browser-session.service aus →

Lebenszyklusmanagement

Die Funktion, die mir am besten gefällt: Automatischer Stopp im Leerlauf. Jedes Mal, wenn ein VNC-Client eine Verbindung herstellt, wird die Zeitstempeldatei aktualisiert. Wenn der Timer 30 Minuten lang nicht zurückgesetzt wird (weil die Verbindung zum Client getrennt ist), schaltet systemd den Dienst sofort aus. Sauber, keine Hängevorgänge.

Ergebnis: Schließen Sie einfach den Browser-Tab und kommen Sie eine Stunde später wieder. Der Dienst hat sich selbst ausgeschaltet. Sie müssen nicht daran denken, es manuell auszuschalten. Serverressourcen werden ohne Belastung wieder entlastet.
EndpunktFunktion
/Startseite – Offline-Seite oder Iframe noVNC
/startSitzung starten (Systemctl-Start auslösen)
/stopSitzung beenden
/statusStatus prüfen (läuft/gestoppt + Sekunden im Leerlauf)
/heartbeatAktivitätszeitstempel aktualisieren (damit es nicht stoppt)

Open Source auf GitHub

Ich habe alle Skripte auf GitHub hochgeladen, damit jeder sie verwenden oder ändern kann: github.com/adammuizweb/browser.

Es gibt install.sh, das einfach sudo ausführt – es installiert alle Abhängigkeiten, richtet den systemd-Dienst ein, stellt die Nginx-Konfiguration bereit und bereitet die Web-Benutzeroberfläche vor. Geeignet für Debian/Ubuntu und Derivate.

# Cara instalasi (sebagai root)
sudo bash install.sh

# Atau kustom domain
DOMAIN=browser.lan sudo bash install.sh

Nach der Installation legen Sie einfach DNS fest (dnsmasq oder /etc/hosts) und greifen über den Browser darauf zu. HTTPS mit selbstsigniertem Zertifikat über mkcert wird empfohlen, damit Sie keine Warnung zu gemischten Inhalten erhalten, wenn noVNC verbunden ist.

Schlussfolgerung

b.lan ist kein Ersatz für SSH oder ein Terminal – es ist eine Ergänzung für Situationen, in denen CLI fehlt. Manchmal braucht man wirklich eine GUI, aber das bedeutet nicht, dass man ein schwergewichtiges DE installieren muss, das rund um die Uhr läuft.

Der Grundsatz: Dienste, die nicht genutzt werden, sollen keine Ressourcen verbrauchen. b.lan einschalten, wenn nötig, ausschalten, wenn es fertig ist. Einfach, leicht, effektiv.

Wenn Sie zu Hause einen Heimserver haben und oft das Gefühl haben, „wenn es nur für einen Moment einen Desktop gäbe“, versuchen Sie es mit der Bereitstellung von b.lan. Oder wenn Sie eine Idee finden, warte ich immer auf die Pull-Anfrage im Repo.