Bestehende Daten werden einmalig aus storage.sync übernommen. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
5.0 KiB
5.0 KiB
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
- 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.jsonliegt. - In Chrome
chrome://extensionsöffnen und den Entwicklermodus aktivieren. - Entpackte Erweiterung laden → Ordner auswählen.
- 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
- In Nextcloud ein App-Passwort erstellen (Einstellungen → Sicherheit). Nicht das normale Passwort verwenden.
- 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 alslablinks.json) - Benutzer und App-Passwort
- WebDAV-Ordner, z. B.
- [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