Zum Inhalt springen
eteaching.plone.nostrmetadatasync

eteaching.plone.nostrmetadatasync

Nostr integration für Plone 6.

eteaching.plone.nostrmetadatasync synchronisiert Metadaten von Plone-Inhalten mit Nostr. Dies geschieht auf der Grundlage von subscribers (event handlers). Wenn Inhalte auf der Plone-Website erstellt, gelöscht oder geändert werden, werden entsprechende Nostr-Ereignisse erstellt, signiert und an vordefinierte Relias im Nostr-Netzwerk gesendet. Dazu stehen zwei Konfigurationsoberflächen zur Verfügung. Die eine dient dazu um Einstellungen vorzunehmen. Hier kann festgelegt werden, welche Inhaltstypen und Filter zur Auswahl der von der Synchronisation betroffenen Inhalte verwendet werden sollen. Die zweite Konfigurationsoberfläche kann verwendet werden, um alle Ereignisse in den Nostr-Relays für den gesamten Inhalt zu erstellen, der über die Einstellungen ausgewählt wurde, oder um Löschereignisse zu senden.

Features

  • Echtzeit-Synchronisation zwischen Metadaten für Terminbasierte Plone-Objekte (z. B. plone.app.event) und zeitbasierten Nostr-Kalenderereignissen (NIP-52).
  • Echtzeit-Synchronisation zwischen Metadaten für Lehrmaterialien und Nostr-AMB-Ereignissen (NIP-AMB)
  • Erstellung von Nostr-Ereignissen für die Metadaten aller unterstützten Objekte
  • Spezifische Konfigurationsoptionen, bei denen Portaltypen und zusätzliche Einschränkungen für die Synchronisation ausgewählt werden können

Installation

Voraussetzungen

  • Ein Betriebssystem auf dem sich alles benötigten Pakete installieren lassen
  • Python 3.10, 3.11, 3.12, or 3.13
  • uv
  • Make
  • Git

Installation von eteaching.plone.nostrmetadatasync mit git

Dies ist keine Installation für den produktiven Einsatz, sondern dient vielmehr zu Test- und Entwicklungszwecken.

  1. Repository klonen und anschließend ins Arbeitsverzeichnis wechseln

    git clone git@github.com:e-teachingorg/eteaching.plone.nostrmetadatasync.git
    cd eteaching.plone.nostrmetadatasync
  2. Virtuelle Python-Umgebung erstellen und uv installieren

    python3 -m venv .
    bin/pip install uv
    source bin/activate
  3. .env Datei erstellen

    vi .env

    um NOST_KEY als Umgebungsvariable zu setzen:

    NOSTR_KEY=MyPrivateNostrKey
  4. Code-Basis installieren

    make install
  5. Leere Plone-Seite erstellen (user:admin, password:admin)

    make create-site
  6. Plone starten

    make start

Installation von eteaching.plone.nostrmetadatasync via buildout

  1. Benutze zc.buildout >=5, e.g. z.B. so:

    horse-with-no-namespace==20251105.1
    packaging==25.0
    pip==25.3
    setuptools==80.9.0
    wheel==0.45.1
    zc.buildout==5.1.1
  2. Virtuelle Python-Umgebung erstellen und Versionen aus der requirements.txt installieren:

    bin/python3 -m venv .
    bin/pip install -r requirements.txt
  3. .env Datei erstellen

    vi .env

    to set NOST_KEY as an environment variable:

    NOSTR_KEY=MyPrivateNostrKey
  4. Folgendes zur buildout.cfg hinzufügen:

    [buildout]
    
    eggs =
        eteaching.plone.nostrmetadatasync
    ...
    
    [instance]
    
    environment-vars =
    	NOSTR_KEY ${env:NOSTR_KEY}
    ...
  5. Buildout starten

    bin/buildout
  6. Plone starten

    bin/instance fg

Beispiel: Synchronisierung für Termine einrichten

  1. Öffnen der Plone-Website (z. B. http://localhost:8080/Plone zu Testzwecken) im Browser

  2. Login

  3. Klicke “admin” ➔ “Site Setup”

  4. Unter “Add-ons” prüfen, ob das Add-on „Nostr Metadata Sync“ installiert ist. Falls nicht, installieren.

  5. Gehen Sie dann zurück zu “Site-Einrichtung” ➔ “Add-on-Konfiguration” ➔ “Verwaltung der Nostr-Metadaten-Synchronisierung”

  6. Klicken Sie auf “Dieses Add-on konfigurieren”

  7. „nostr relays“ angeben. (Falls Nak mit dem Befehl nak serve auf demselben Computer gestartet wurde, folgendes eingeben: ws://localhost:10547)

  8. “Termin” unter “Inhaltstypen für den Kalender-Adapter” auswählen

  9. Zusätzliche Suchfilter und ein Community-Schlüssel kann angegeben werden, wenn die Synchronisierung mit einer bestimmten Community durchführt werden soll.

  10. “Sichern” klicken

Wenn nun im Portal Nachrichten erstellt und veröffentlicht werden, sollten diese mit den eingegebenen Relays synchronisiert werden.

Beteiligen

Lizenz

Das Projekt unterliegt der GPLv2.