Files
rootandClaude Sonnet 5.5 2bcb625c11 Links in chrome.storage.local statt storage.sync (v1.2.0)
Bestehende Daten werden einmalig aus storage.sync übernommen.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 18:23:32 +00:00

5.0 KiB
Raw Permalink Blame History

LabLinks

Schlanke Chrome-Erweiterung (Manifest V3) im Retro-Terminal-Look, um die WebUIs deines HomeLabs (Proxmox, Nextcloud, Router, NAS …) per Popup zu öffnen – optional per WebDAV/Nextcloud über mehrere Geräte synchronisiert.

Funktionen

  • Popup-Launcher mit Suche (Enter öffnet den ersten Treffer)
  • Links verwalten: Name, URL und Emoji-Icon anlegen, bearbeiten, löschen, umsortieren
  • Export / Import als JSON
  • WebDAV-/Nextcloud-Sync (siehe unten)
  • Tastenkürzel zum Öffnen des Popups
  • Keine Tracker, keine externen Schriften oder Skripte, keine Abhängigkeiten

Installation

  1. Repository klonen oder als ZIP laden und entpacken. Achtung: Beim ZIP-Download steckt der Inhalt oft in einem verschachtelten Ordner. Wähle den Ordner, in dem direkt manifest.json liegt.
  2. In Chrome chrome://extensions öffnen und den Entwicklermodus aktivieren.
  3. Entpackte Erweiterung laden → Ordner auswählen.
  4. Icon in der Toolbar anpinnen.

Nach einem Update (git pull) die Erweiterung in chrome://extensions neu laden.

Tastenkürzel

Vorschlag: Alt+Shift+L. Chrome übernimmt Vorschläge nur bei der Erstinstallation und nur, wenn sie frei sind. Eigene Kombination setzen unter chrome://extensions/shortcuts → LabLinks → „LabLinks öffnen“.

Sync mit Nextcloud / WebDAV

  1. In Nextcloud ein App-Passwort erstellen (Einstellungen → Sicherheit). Nicht das normale Passwort verwenden.
  2. Im Popup [⚙] klicken und eintragen:
    • WebDAV-Ordner, z. B. https://cloud.example.com/remote.php/dav/files/NUTZER/LabLinks (wird bei Bedarf angelegt; die Daten liegen darin als lablinks.json)
    • Benutzer und App-Passwort
  3. [SPEICHERN & TESTEN] – Chrome fragt einmal nach Zugriff auf genau diesen Server.

Funktionsweise:

  • Sync beim Öffnen des Popups und nach jeder Änderung; [⟳] im Popup startet ihn manuell (grün = ok, rot = Fehler, Tooltip zeigt die Meldung, blinkend = läuft).
  • Zusammenführung pro Eintrag: der neuere Zeitstempel gewinnt. Löschungen werden als Tombstones (60 Tage) übertragen, damit gelöschte Links auf anderen Geräten nicht wieder auftauchen. Die Reihenfolge übernimmt das zuletzt geänderte Gerät.
  • Schreibkonflikte werden per ETag erkannt, danach wird erneut abgeglichen.
  • [TRENNEN] entfernt Zugangsdaten und Server-Berechtigung; lokale Links bleiben.
  • Funktioniert mit jedem WebDAV-Server, nicht nur mit Nextcloud.

Dateiformat (lablinks.json):

{
  "version": 1,
  "links": [{ "id": "…", "name": "Proxmox", "url": "https://pve:8006/", "icon": "🖥", "updated": 1760000000000 }],
  "deleted": [{ "id": "…", "updated": 1760000000000 }],
  "modified": 1760000000000
}

Sicherheit

  • Nur http(s)-Links: javascript:, data:, file:, chrome: u. Ä. werden beim Anlegen, Import und Sync verworfen.
  • Remote-Daten gelten als nicht vertrauenswürdig: Typen, Längen (Name 80, URL 2048, Icon 2 Zeichen), Anzahl (500 Links), Dateigröße (1 MB) und Zeitstempel (max. 1 Tag in der Zukunft) werden geprüft; Anzeige nur per textContent.
  • Minimale Rechte: Nur storage. Der Serverzugriff wird als optionale Berechtigung nur für den eingetragenen Host angefragt und beim Trennen oder Serverwechsel wieder entzogen.
  • HTTP nur im LAN: Unverschlüsseltes http:// (Basic-Auth!) ist nur für lokale Adressen erlaubt (localhost, private IP-Bereiche, *.local, *.lan, Hostnamen ohne Punkt) und zeigt eine Warnung. Zugangsdaten in der URL werden abgelehnt.
  • Strikte CSP: script-src 'self'; object-src 'none'; base-uri 'none', keine Inline-Skripte, keine externen Ressourcen.
  • Zugangsdaten liegen in chrome.storage.local (nicht im Google-Sync, ebenso wie die Links), aber unverschlüsselt auf der Festplatte des Browser-Profils. Wer Zugriff auf dein Profil hat, kann sie auslesen. Nutze deshalb immer ein widerrufbares App-Passwort mit dem Nutzer, der nur diesen Ordner braucht.
  • Selbstsignierte Zertifikate lehnt Chrome ab; nutze ein vertrauenswürdiges Zertifikat (z. B. Let's Encrypt) oder importiere deine CA ins System.

Bekannte Grenzen

  • Links liegen nur lokal (chrome.storage.local, ca. 10 MB Limit, Erweiterung begrenzt auf 500 Links). Geräteübergreifend geht es ausschließlich über den WebDAV-Sync; ohne ihn bleiben die Links auf diesem Browser-Profil.
  • Kein Online-Status pro Link, keine Gruppen.
  • Sync läuft nur, wenn das Popup geöffnet wird (kein Hintergrundprozess).

Projektstruktur

Datei Zweck
manifest.json Manifest V3, Rechte, Shortcut, CSP
popup.html/.css/.js Popup: Liste, Suche, Bearbeiten
options.html/.css/.js Sync-Einstellungen
sync.js WebDAV-Client, Merge, Validierung (von Popup und Einstellungen genutzt)
icons/ Toolbar-Icons

Versionen

  • 1.2.0 – Links liegen jetzt in storage.local (kein 8-KB-Limit mehr); bestehende Daten werden automatisch übernommen
  • 1.1.1 – Sicherheits-Härtung (URL-Schema, Validierung, HTTP-Regel, CSP, UUID-IDs)
  • 1.1.0 – WebDAV-/Nextcloud-Sync
  • 1.0.0 – Erste Version