Zum Inhalt

Plugins

Diese Seite richtet sich an Administratoren: wie Sie ein Plugin oder ein Theme installieren, was Sie dabei akzeptieren und was der Server ihm auf Ihrem Host erlaubt. Alles geschieht unter Verwaltung → Plugins. Die Seiten für Plugin-Autoren sind am Ende aufgeführt.

Ein Plugin ergänzt Evey um etwas, das es selbst nicht kann: einen Abschnitt auf der Startseite, eine Einblendung im Player, eine Metadatenquelle, ein Theme. Jedes Plugin ist ein eigener Prozess, der über einen lokalen Socket mit dem Server kommuniziert, durch eine Sandbox isoliert und auf die Berechtigungen beschränkt, die sein Manifest angibt. Seine Oberfläche, falls es eine hat, läuft in einem isolierten Rahmen der Seite.

Die Startseite ohne Plugins
Ohne Plugins.
Die Startseite mit dem Wetter-Plugin
Mit dem Beispiel-Plugin für das Wetter: ein Abschnitt ganz oben, in seinem eigenen Rahmen dargestellt.

Ein Plugin installieren

  1. Öffnen Sie unter Verwaltung → Plugins den Punkt Plugin installieren und wählen Sie die Plugin-Datei (.zip). Liefert der Autor eine Signatur mit, fügen Sie sie unter Signaturdatei (.zip.sig, optional) hinzu. Der Reiter Von URL installiert stattdessen über einen Link. Hängen Sie #sha256:<hash> an die URL an, damit der Download geprüft wird.
  2. Vorschau & Installieren analysiert das Paket, ohne es zu installieren. Die Vorschau zeigt die Berechtigungen und Fähigkeiten, die das Plugin anfordert, das Ergebnis der Statischen Analyse und, wenn eine Signatur mitgegeben wurde, das Signatur-Urteil mit dem Herausgeber. Die Slots und die Hosts werden beim Update und im Sicherheits-Dashboard angezeigt.
  3. Diese Liste ist verbindlich: Das ist alles, was das Plugin tun können wird. Bestätigen Sie, und das Plugin startet.
Verwaltung → Plugins auf dem Demo-Server
Verwaltung → Plugins: die verfügbaren Laufzeiten, die Ressourcenlimits und eine Karte pro Plugin (Oberfläche auf Englisch).

Ein Paket, in dem die Analyse ein kritisches Muster findet, wird abgelehnt, egal was Sie antworten. Warnungen werden angezeigt, die Entscheidung liegt bei Ihnen. Die Sprache des Plugins muss zu den Verfügbaren Laufzeiten des Servers gehören: Das Standard-Image bringt Python, Node.js, PHP, Ruby und Lua mit, das Image -nodejs behält Python und Node.js und das Image -lean nur Python.

Signierte Plugins

Ein Plugin-Autor kann das ZIP mit cosign signieren; sein öffentlicher Schlüssel reist im Paket. Evey prüft die Signatur selbst (kein cosign-Programm) und zeigt Signiert von , wenn der Schlüssel in Ihrer Liste der Vertrauenswürdigen Herausgeber steht, sonst Signiert, unbekannter Schlüssel mit seinem Fingerabdruck (ein Klick vertraut ihm), Nicht signiert oder Ungültig. Ein Update, das den Schlüssel wechselt oder die Signatur weglässt, wartet auf Ihre ausdrückliche Zustimmung. Die Regel entscheidet den Rest:

EVEY_PLUGINS_COSIGN_POLICY=warn      # off | warn (Standard) | enforce

Mit warn wird das Urteil angezeigt und nichts blockiert; mit enforce werden nur vertrauenswürdige Herausgeber installiert. Für Autoren: siehe Ihr Plugin signieren.

Ein Plugin aktualisieren

Auf der Karte des Plugins nimmt Aus Quelle aktualisieren … das neue ZIP entgegen (einen Pfad oder eine URL) und zeigt dieselbe Vorschau. Ein Update muss eine höhere Version haben als die installierte. Verlangt es neue Berechtigungen, Fähigkeiten, Slots oder Hosts, zeigt die Vorschau Diese Aktualisierung beantragt neue Berechtigungen und listet den Unterschied auf: Nichts wird übernommen, bevor Sie Genehmigen und installieren wählen. Das analysierte Paket ist das installierte Paket: Sein Hashwert wird beim Übernehmen des Updates noch einmal geprüft.

Die installierten Plugins verwalten

Jede Karte zeigt den Zustand des Plugins (Aktiviert oder Deaktiviert) und bietet:

Aktion Was sie tut
Aktiviert / Deaktiviert Startet oder stoppt den Prozess des Plugins. Ein deaktiviertes Plugin behält seine Dateien und seine Konfiguration.
Konfiguration Die Einstellungen, die das Plugin angibt (ein API-Schlüssel, eine Stadt, eine Einheit...). Geheime Felder werden maskiert angezeigt und nie an den Browser zurückgeschickt.
Protokolle Die letzten Zeilen, die das Plugin über den Host geschrieben hat.
Deinstallieren Entfernt den Prozess, die Dateien und die gespeicherten Daten des Plugins.

Ressourcenlimits oben auf der Seite begrenzt jeden Plugin-Prozess. Die Werte im Verwaltungsbereich sind die Standardwerte. Die Umgebungsvariable legt sie fest, solange im Verwaltungsbereich noch nie gespeichert wurde.

Feld Standard Umgebungsvariable
Max. Arbeitsspeicher (MiB) 256 EVEY_PLUGINS_MEMORY_MB
Max. Prozesse 64 EVEY_PLUGINS_PIDS_MAX
Max. Festplatte (MiB) 100 EVEY_PLUGINS_DISK_MAX_MB
CPU-Nice (0-19) 10 EVEY_PLUGINS_CPU_NICE
Sandbox-Modus auto EVEY_PLUGINS_SANDBOX_MODE

Arbeitsspeicher, Prozesse und Festplatte gelten beim nächsten Durchlauf der Überwachung, die ein Plugin stoppt, das sie überschreitet. CPU-Priorität und Sandbox-Modus gelten für danach gestartete Plugins. 0 stellt für Arbeitsspeicher und Prozesse den Standardwert wieder her; nur die Festplattengrenze behandelt 0 als „aus“.

Das Sicherheits-Dashboard hält pro Plugin die Befunde der Analyse, das Ergebnis der Signaturprüfung und den letzten Fehler fest. Seine Zeile Host-Sandbox zeigt den Sandbox-Modus, der auf dieser Maschine wirklich gilt: Steht dort basic, bietet der Host keine Beschränkung des Dateisystems pro Pfad, und Plugin-Sandbox einrichten erklärt, was zu ändern ist.

Plugins sind standardmäßig eingeschaltet. EVEY_PLUGINS_ENABLED=false schaltet das gesamte Plugin-System ab.

Was ein Plugin auf Ihrem Host tun kann

Egal, was sein Manifest angibt, ein Plugin:

  • sieht sein eigenes Verzeichnis, weder die Daten des Servers noch die Mediendateien;
  • hat keinen direkten Netzwerkzugang: Ein Plugin mit der Berechtigung network erreicht nur die Hosts, die es angegeben hat, über den Server, mit GET und HEAD;
  • kann keine Kindprozesse starten, es sei denn, es gibt subprocess an;
  • läuft unter den Ressourcenlimits oben und, wenn der Host es erlaubt, unter einem eigenen Benutzer.

Seine Oberfläche ist auf die Slots beschränkt, die das Manifest angibt: einen Abschnitt oder den großen Bereich oben auf der Startseite, eine Seitenleiste in einer Bibliothek oder auf einer Detailseite, eine Einblendung im Player, die Darstellungseinstellungen, den unteren Teil der Navigationsleiste oder einen Eintrag im Verwaltungsmenü, der die eigene Seite des Plugins öffnet. Ein Plugin kann nie etwas in den Bildschirmen für Anmeldung, Einrichtung und Sicherheit oder in den vorhandenen Verwaltungsbildschirmen anzeigen. In seinem Rahmen hat es keinen Zugriff auf die Seite, Ihre Cookies oder Ihre Sitzung: Was es vom Server liest, läuft über ein kurzlebiges Token, das auf die zwei Berechtigungen beschränkt ist, die es verlangen darf (public für eine sichere Auswahl aus Medientiteln und Postern, prefs für die Einstellungen des aktuellen Benutzers in seinem eigenen Namensraum).

Die Berechtigungen, die ein Plugin verlangen kann, stehen unter Berechtigungen und Slots. Wie die Sandbox funktioniert und was sie trotzdem nicht verhindern kann, steht unter Plugin-Sandbox und Bedrohungsmodell.

Der Server prüft, welche Hosts ein Plugin kontaktiert, nicht welche Daten es sendet

Steht ein Host einmal auf der Liste eines Plugins, kann der Server nicht prüfen, was das Plugin an ihn schickt. Prüfen Sie ein Plugin eines Drittanbieters vor der Installation, wie jede andere Software, und betrachten Sie seine Host-Liste als Liste derer, die die Titel Ihrer Bibliothek erhalten können.

Themes

Ein Theme ist ein Paket mit kind: theme ohne Prozess: ein Stylesheet und optional ein Skript, das isoliert in einem versteckten Rahmen läuft. Es wird über denselben Dialog Plugin installieren installiert; das Stylesheet wird bei der Installation bereinigt. Jeder Benutzer wählt es dann unter Einstellungen → Darstellung → Design. Was ein Theme enthalten darf, steht unter Themes.

Ein Plugin schreiben

Seite Inhalt
Ein Plugin schreiben Ein erstes Plugin Schritt für Schritt, der Installationsablauf, Signieren, Verteilung. Fangen Sie hier an.
Plugin-API-Referenz Das Manifest, die Backend-Aufrufe und der Datenspeicher, die evey.*-Brücke der Oberfläche.
Berechtigungen und Slots Was ein Manifest angeben darf, was bei der Installation geprüft wird, die Regeln für externe Abrufe, die Slots.
Themes Die Oberfläche mit CSS und einem Skript in einer Sandbox umgestalten.
Webhooks und API-Schlüssel Evey mit anderen Werkzeugen verbinden, ohne ein Plugin zu schreiben.