Fr

From Nasqueron Agora
Revision as of 10:16, 18 December 2025 by Ptdradmin (talk | contribs) (Created page with "= 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 d...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

  1. É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
  1. Échec de la compilation (go build)
  • Le binaire /opt/anubis/var/anubis n'a pas été créé
  • Erreur : pattern static/app.js: no matching files found
  1. É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.js non 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 sudo pour git 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 build si 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