Skip to main content
De Labeler is een functie voor gevorderden. Omdat deze continu als server moet draaien, is dit bedoeld voor wie Laravel Forge gebruikt of zelf een server kan opzetten. Niet aanbevolen voor Laravel-beginners. Er is geen ondersteuning.Laravel Cloud wordt niet ondersteund. Een Labeler moet permanent draaien als WebSocket-server en vereist aanpassingen aan de nginx-configuratie, maar op Laravel Cloud kun je nginx niet configureren, dus daar kan een Labeler niet draaien.

Wat is een Labeler?

Een Labeler is een service die labels toekent aan content op het AT Protocol (Bluesky). Je kunt hem inzetten voor moderatie, contentclassificatie, eigen filters en meer. Het is nodig dat je vooraf het concept van een Labeler begrijpt. Starter kits voor andere talen zijn ook nuttig als referentie. Voorbeeldimplementaties:

Voorbereiding

Om een Labeler te draaien heb je het volgende nodig.
  • Een nieuw Bluesky-account speciaal voor de Labeler (gebruik niet je dagelijkse account)
  • Een nieuw Laravel-project speciaal voor de Labeler (aparte projecten worden aanbevolen)
  • Een (sub)domein
  • Een productie-Linux-server zoals een VPS of AWS EC2 (Laravel Cloud, Laravel Vapor en Vercel zijn niet mogelijk)
Als je alleen shared hosting kunt gebruiken, is het lastig om een Labeler te draaien.

Extra pakketten installeren

Configuratie

Genereer eerst een privésleutel.
Voeg de gegenereerde privésleutel en de bijbehorende configuratiewaarden toe aan .env.

Een Labeler-klasse maken

Maak een eigen Labeler-klasse die erft van AbstractLabeler. Het bestand mag op een willekeurige plek staan.
Het pakket neemt het grootste deel van de Labeler-verwerking voor zijn rekening, dus je implementeert alleen de onderdelen die je wilt aanpassen.
Voorbeeldimplementatie: ArtisanLabeler.php

labels()

Geeft de labeldefinities terug. De constantedefinities in de skyware-starterkit zijn een goede referentie.

subscribeLabels()

Wordt direct na het opzetten van de WebSocket-verbinding aangeroepen. Geeft SubscribeLabelResponse-objecten terug als iterator.

emitEvent()

Wordt aangeroepen wanneer er een request binnenkomt om een label toe te voegen of te verwijderen. Geeft UnsignedLabel-objecten terug als iterator.

saveLabel()

Slaat het ondertekende label op in de database. Geeft een SavedLabel terug.
Raadpleeg voor de migratie en het Eloquent-model de voorbeelden in het pakket.

createReport()

Wordt aangeroepen wanneer een gebruiker bijvoorbeeld een appeal instuurt.

queryLabels()

Query’t labels via de HTTP-API in plaats van WebSocket. Wordt niet gebruikt door het officiële Bluesky, maar door derde partijen. Geef een lege array terug als je dit niet nodig hebt.

Registreren in de AppServiceProvider

Registreer de gemaakte Labeler-klasse in AppServiceProvider::boot().

Het account instellen

Initialiseer het account als Labeler-account.
Bij dit command voer je niet het app-wachtwoord in maar het echte accountwachtwoord. Tijdens het proces ontvang je een bevestigingsmail met “PLC Update Operation Requested”; volg de instructies van het command om de code in te voeren.
Als de endpoint-URL correct is ingesteld, kun je dit ook vanuit je lokale omgeving uitvoeren.

Labeldefinities declareren

Registreer de labeldefinities bij het Labeler-account.
Ook dit command kun je vanuit je lokale omgeving uitvoeren.

Overige commands

Labeldefinities verwijderen:
Het Labeler-account terugzetten naar een gewoon account:

Draaien op Laravel Forge

Start na het inschakelen van SSL de Labeler-server met de volgende configuratie.

nginx-configuratie

Voeg drie location-blokken toe aan de nginx-configuratie van Forge.

Deployscript

Stop de Labeler-server tijdens het deployen. Na het stoppen herstart Supervisor deze automatisch.

Achtergrondproces (daemon) instellen

Kies in het scherm voor achtergrondprocessen van Forge het tabblad Custom in plaats van het tabblad Queue Worker. Command:
Geef opties op als je tegelijk met Jetstream of de Firehose wilt starten. Gelijktijdig draaien met de commands bluesky:ws of bluesky:firehose is niet mogelijk.

Labels toevoegen

Hoe je labels toekent, hangt af van de implementatie van je applicatie. In het voorbeeld wordt de eventfunctionaliteit van Laravel gebruikt om een label toe te kennen “wanneer iemand je volgt”.
Het wordt aanbevolen om ook via de task scheduler labels toe te kennen, voor het geval er events gemist worden.
Laatst gewijzigd op 6 september 2026