Skip to main content
Labeler est une fonctionnalité avancée. Comme il nécessite un serveur qui tourne en continu, elle vise les personnes qui utilisent Laravel Forge ou qui savent gérer leur propre serveur. Elle n’est pas recommandée pour les débutants Laravel. Aucun support n’est fourni.Laravel Cloud n’est pas pris en charge. Labeler doit fonctionner en permanence en tant que serveur WebSocket et nécessite une modification de la configuration nginx. Or Laravel Cloud ne permet pas de configurer nginx, il est donc impossible d’y exécuter Labeler.

Qu’est-ce que Labeler ?

Labeler est un service qui applique des labels à du contenu sur AT Protocol (Bluesky). Il peut servir à la modération, à la classification de contenu, au filtrage personnalisé, etc. Il est indispensable de comprendre au préalable le concept de Labeler. Les starter kits pour d’autres langages sont également des références utiles. Implémentations d’exemple :

Préparation

Pour faire fonctionner Labeler, il vous faut :
  • Un nouveau compte Bluesky dédié à Labeler (n’utilisez pas votre compte habituel)
  • Un nouveau projet Laravel dédié à Labeler (il est recommandé de séparer les projets)
  • Un (sous-)domaine
  • Un serveur Linux de production tel qu’un VPS ou une instance AWS EC2 (Laravel Cloud, Laravel Vapor et Vercel ne conviennent pas)
Si vous n’avez accès qu’à un hébergement mutualisé, l’exploitation de Labeler est difficile.

Installation de packages supplémentaires

Configuration

Commencez par générer une clé privée.
Ajoutez à .env la clé privée générée et les valeurs de configuration associées.

Création de la classe Labeler

Créez votre classe Labeler en étendant AbstractLabeler. Vous pouvez placer le fichier où vous le souhaitez.
Le package prend en charge la majeure partie du traitement du Labeler ; vous n’avez à implémenter que les parties à personnaliser.
Implémentation d’exemple : ArtisanLabeler.php

labels()

Renvoie la définition des labels. Les constantes du starter kit skyware sont une bonne référence.

subscribeLabels()

Appelée immédiatement après la connexion WebSocket. Renvoie SubscribeLabelResponse sous forme d’itérateur.

emitEvent()

Appelée lorsqu’une requête d’ajout ou de retrait de label est reçue. Renvoie UnsignedLabel sous forme d’itérateur.

saveLabel()

Enregistre le label signé en base de données. Renvoie un SavedLabel.
Pour la migration et le modèle Eloquent, référez-vous aux exemples fournis dans le package.

createReport()

Appelée lorsqu’un utilisateur envoie un appel (appeal) ou similaire.

queryLabels()

Interroge les labels via l’API HTTP plutôt que via WebSocket. Non utilisée officiellement par Bluesky ; elle sert à des tiers. Renvoyez un tableau vide si vous n’en avez pas besoin.

Enregistrement dans AppServiceProvider

Enregistrez la classe Labeler créée dans AppServiceProvider::boot().

Configuration du compte

Initialisez le compte en tant que Labeler.
Cette commande demande le mot de passe réel du compte, et non un App Password. Pendant le traitement, un e-mail de confirmation « PLC Update Operation Requested » vous est envoyé : suivez les instructions de la commande.
La commande peut également être exécutée depuis un environnement local si l’URL de l’endpoint est correctement configurée.

Déclaration des définitions de labels

Enregistrez les définitions de labels sur le compte Labeler.
Cette commande peut aussi être exécutée depuis l’environnement local.

Autres commandes

Suppression des définitions de labels :
Restaurer le compte Labeler en compte normal :

Exécution sur Laravel Forge

Après avoir activé SSL, démarrez le serveur Labeler avec la configuration suivante.

Configuration nginx

Ajoutez 3 blocs location à la configuration nginx de Forge.

Script de déploiement

Arrêtez le serveur Labeler lors du déploiement. Supervisor le redémarrera automatiquement.

Configuration du processus d’arrière-plan (daemon)

Sur l’écran de configuration des processus d’arrière-plan de Forge, choisissez l’onglet Custom et non Queue Worker. Commande :
Si vous lancez également Jetstream ou Firehose, ajoutez les options correspondantes. La commande ne peut pas être exécutée simultanément avec bluesky:ws ou bluesky:firehose.

Ajout de labels

La manière d’appliquer un label dépend de l’implémentation de votre application. L’exemple utilise le système d’événements Laravel pour appliquer un label « lorsqu’un follow est reçu ».
Il est recommandé d’appliquer également des labels via la planification de tâches, en prévision d’événements manqués.
Dernière modification le 13 juillet 2026