Fr
From Nasqueron Agora
Documentation - Résolution d'erreur de build Anubis
Contexte
Installation et configuration d’Anubis Web AI Firewall sur un serveur Red Hat Enterprise Linux 10 (RHEL 10).
- Serveur : dwellers.nasqueron.org
- Utilisateur : ptdradmin
- Répertoire d’installation : /opt/anubis
Versions des outils :
- Go : 1.25.3
- Node.js : 22.16.0
- npm : 10.9.2
- esbuild : 0.27.2
Problème rencontré
Symptômes
- Échec de la génération de code (
go generate ./...)
- Permissions refusées lors de la création de fichiers
- Messages :
permission denied - Erreur :
./build.sh: line 48: esbuild: command not found
- Échec de la compilation (
go build)
- Le binaire
/opt/anubis/var/anubisn'a pas été créé - Erreur :
pattern static/app.js: no matching files found
- Échec du démarrage du service systemd
- Service anubis ne peut pas démarrer
- Erreur :
Unable to locate executable '/usr/bin/anubis': No such file or directory
Erreurs détaillées
go generate ./...
stringer: writing output: open droneblresponse_string.go: permission denied
(✗) Error [ error=failed to generate code for "/opt/anubis/internal/honeypot/naive/page.templ":
failed to write target file "/opt/anubis/internal/honeypot/naive/page_templ.go":
open /opt/anubis/internal/honeypot/naive/page_templ.go: permission denied ]
mkdir: cannot create directory 'static/js': Permission denied
./build.sh: line 48: esbuild: command not found
lib/challenge/preact/preact.go:20: running "./build.sh": exit status 127
go build -o var/anubis cmd/anubis/main.go
lib/challenge/preact/preact.go:23:12: pattern static/app.js: no matching files found
sudo systemctl status anubis
× anubis.service - Anubis Web AI Firewall
Active: failed (Result: exit-code)
Process: 821872 ExecStart=/usr/bin/anubis (code=exited, status=203/EXEC)
anubis.service: Unable to locate executable '/usr/bin/anubis': No such file or directory
Analyse de la cause racine
Causes principales
- Conflit de permissions dû à l'utilisation de
sudo git clone - Outil esbuild manquant dans le PATH lors de l’exécution de
build.sh
Conséquences en cascade
- Génération incomplète : fichiers de code généré non créés
- esbuild non trouvé : bundler JavaScript inaccessible
- Assets manquants : fichiers JS comme
static/app.jsnon générés - Compilation impossible
- Binaire absent : /usr/bin/anubis inexistant
- Service systemd en échec
Solution
<folding summary="Cliquez pour dérouler les étapes complètes de résolution">
Étape 1 : Arrêter le service en échec
sudo systemctl stop anubis
Étape 2 : Installer esbuild globalement
sudo npm install -g esbuild
which esbuild
esbuild --version
Étape 3 : Corriger la propriété des fichiers
sudo chown -R ptdradmin:ptdradmin /opt/anubis
Étape 4 : Nettoyer les artéfacts de build partiels
cd /opt/anubis
rm -rf bin var
Étape 5 : Générer le code sans sudo
go generate ./...
- La génération doit se terminer avec succès et produire les fichiers JS :
(✓) Complete [ updates=0 duration=2.753344ms ]
(✓) Complete [ updates=0 duration=4.775691ms ]
app.js
static/app.js 20.3kb
⚡ Done in 12ms
(✓) Complete [ updates=0 duration=2.333324ms ]
(✓) Complete [ updates=0 duration=3.490825ms ]
(✓) Complete [ updates=0 duration=14.668559ms ]
Étape 6 : Compiler le binaire
go build -o var/anubis cmd/anubis/main.go
Étape 7 : Vérifier la création du binaire
ls -l var/anubis
- Exemple attendu :
-rwxr-xr-x. 1 ptdradmin ptdradmin 52659096 Dec 17 14:46 var/anubis
Étape 8 : Copier le binaire vers /usr/bin
sudo cp var/anubis /usr/bin/anubis
sudo chmod 755 /usr/bin/anubis
Étape 9 : Vérifier l'installation
/usr/bin/anubis --version
- Exemple attendu :
Anubis devel
Étape 10 : Démarrer le service
sudo systemctl start anubis
sudo systemctl status anubis
- Statut attendu :
● anubis.service - Anubis Web AI Firewall
Loaded: loaded (/etc/systemd/system/anubis.service; enabled; preset: disabled)
Active: active (running) since Wed 2025-12-17 14:46:41 UTC; 6s ago
Main PID: 823482 (anubis)
Tasks: 13 (limit: 203296)
Memory: 15.5M (peak: 18.7M)
Étape 11 : Commandes complètes de séquence
# Arrêter le service
sudo systemctl stop anubis
# S'assurer que esbuild est installé
sudo npm install -g esbuild
which esbuild
esbuild --version
# Corriger la propriété
sudo chown -R ptdradmin:ptdradmin /opt/anubis
# Nettoyer et reconstruire
cd /opt/anubis
rm -rf bin var
go generate ./...
go build -o var/anubis cmd/anubis/main.go
# Vérifier et installer
ls -l var/anubis
sudo cp var/anubis /usr/bin/anubis
sudo chmod 755 /usr/bin/anubis
# Tester et démarrer
/usr/bin/anubis --version
sudo systemctl start anubis
sudo systemctl status anubis
</folding>
Bonnes pratiques
- Ne pas utiliser
sudopourgit clone - Installer tous les outils nécessaires globalement avant le build
- Séparer les opérations utilisateur et root (build vs installation)
- Vérifier les permissions avant de lancer le build
- Utiliser
make buildsi disponible
Structure de répertoires recommandée
/opt/anubis/ # Code source (propriétaire: utilisateur)
├── cmd/
├── internal/
├── lib/
└── var/
└── anubis # Binaire compilé
/usr/bin/anubis # Installation système (root)
/etc/anubis/ # Configuration (root)
├── site.env
└── site.botPolicies.yaml
Vérifications post-installation
sudo systemctl status anubis
sudo journalctl -u anubis -n 50
sudo journalctl -u anubis -f
sudo ss -tulpn | grep anubis
sudo systemctl restart anubis
Résumé
- Problèmes : permissions incorrectes et esbuild manquant
- Solutions : installer esbuild globalement, corriger propriété des fichiers, reconstruire sans sudo
- Résultat final : le service Anubis fonctionne correctement et protège le site desk.nasqueron.org
