Was ist Labeler?
Labeler ist ein Dienst, der Inhalten auf dem AT Protocol (Bluesky) Labels zuweist. Er lässt sich für Moderation, Content-Klassifikation, benutzerdefinierte Filterung usw. verwenden. Ein Vorabverständnis des Labeler-Konzepts ist erforderlich. Auch Starter-Kits für andere Sprachen sind hilfreich. Beispielimplementierung:Vorbereitung
Zum Betrieb eines Labelers benötigen Sie:- Einen neuen, ausschließlich für den Labeler bestimmten Bluesky-Account (nicht Ihren persönlichen Account verwenden).
- Ein neues, ausschließlich für den Labeler bestimmtes Laravel-Projekt (getrennte Projekte werden empfohlen).
- Eine (Sub-)Domain
- Einen produktiven Linux-Server (VPS, AWS EC2 o. Ä.) (Laravel Cloud, Laravel Vapor und Vercel sind nicht möglich).
Wenn Sie nur Shared Hosting einsetzen können, ist der Betrieb eines Labelers schwierig.
Installation zusätzlicher Pakete
Konfiguration
Erzeugen Sie zunächst einen privaten Schlüssel..env hinzu.
Labeler-Klasse erstellen
Erstellen Sie eine eigene Labeler-Klasse, die vonAbstractLabeler erbt. Die Datei kann beliebig abgelegt werden.
Beispielimplementierung: ArtisanLabeler.php
labels()
Gibt die Label-Definitionen zurück. Die Konstanten-Definitionen des skyware-Starter-Kits sind eine gute Referenz.subscribeLabels()
Wird unmittelbar nach der WebSocket-Verbindung aufgerufen. GibtSubscribeLabelResponse als Iterator zurück.
emitEvent()
Wird aufgerufen, wenn ein Request zum Hinzufügen oder Entfernen eines Labels eingeht. GibtUnsignedLabel als Iterator zurück.
saveLabel()
Speichert signierte Labels in der Datenbank. Gibt einSavedLabel zurück.
createReport()
Wird aufgerufen, wenn Nutzer beispielsweise einen Widerspruch (Appeal) einreichen.queryLabels()
Fragt Labels statt über WebSocket über die HTTP-API ab. Wird vom offiziellen Bluesky nicht verwendet, aber von Drittanbietern genutzt. Wenn nicht erforderlich, geben Sie ein leeres Array zurück.Registrierung im AppServiceProvider
Registrieren Sie die erstellte Labeler-Klasse inAppServiceProvider::boot().
Account-Setup
Initialisieren Sie den Account als Labeler.Label-Definitionen deklarieren
Registrieren Sie die Label-Definitionen am Labeler-Account.Weitere Kommandos
Label-Definitionen löschen:Ausführung auf Laravel Forge
Aktivieren Sie SSL und starten Sie den Labeler-Server mit folgender Konfiguration.nginx-Konfiguration
Fügen Sie der nginx-Konfiguration von Forge dreilocation-Blöcke hinzu.
Deploy-Skript
Stoppen Sie den Labeler-Server beim Deployment. Danach startet Supervisor ihn automatisch neu.Hintergrundprozess (Daemon) konfigurieren
Wählen Sie in Forges Konfigurationsmaske für Hintergrundprozesse nicht den Reiter „Queue Worker”, sondern Custom. Kommando:bluesky:ws oder bluesky:firehose ist nicht möglich.
Labels vergeben
Wie Labels vergeben werden, hängt von der Anwendung ab. Das Beispiel nutzt die Event-Funktion von Laravel und vergibt ein Label bei „einer neuen Follower-Beziehung”.Source: docs/labeler.md
Sample: invokable/laralabeler