Aller au contenu

Installer sous Linux (manuel)

Sur cette page
  1. Vue d'ensemble
  2. 1. Télécharger et vérifier l'agent
  3. 2. Créer l'utilisateur système
  4. 3. Stocker le jeton
  5. 4. Créer le service
  6. 5. Vérifier qu'il est connecté
  7. Réglages et logs
  8. Mettre à jour
  9. Changer le jeton
  10. Gérer le service

Vous préférez l'installateur ?

L'installateur automatique réalise toutes les étapes ci-dessous en une commande, et gère pour vous les mises à jour, le retour arrière et le jeton. Les deux donnent exactement la même installation.

Vue d'ensemble#

Cette page installe l'agent comme service systemd, étape par étape : télécharger et vérifier le binaire, créer l'utilisateur onagent, stocker le jeton, créer le service. Il vous faut un accès root, systemd 235 ou plus récent, et le jeton de l'agent, copié lorsque vous avez créé l'agent dans Onagre.

1. Télécharger et vérifier l'agent#

Lisez la version courante, puis téléchargez exactement cette version et son empreinte :

Terminal
VERSION="$(curl -fsSL https://d.onag.re/version)"
curl -fsSLo /tmp/onagent "https://d.onag.re/agent/$VERSION/agent-linux-x64"
echo "$(curl -fsSL "https://d.onag.re/agent/$VERSION/agent-linux-x64.sha256" | cut -d' ' -f1)  /tmp/onagent" | sha256sum -c -
Terminal
VERSION="$(curl -fsSL https://d.onag.re/version)"
curl -fsSLo /tmp/onagent "https://d.onag.re/agent/$VERSION/agent-linux-arm64"
echo "$(curl -fsSL "https://d.onag.re/agent/$VERSION/agent-linux-arm64.sha256" | cut -d' ' -f1)  /tmp/onagent" | sha256sum -c -

sha256sum doit répondre OK. Sinon, n'installez pas le fichier : téléchargez-le à nouveau. Vérifiez ensuite qu'il s'exécute sur cette machine — il affiche sa version, sans réseau ni jeton — puis installez-le :

Terminal
chmod 0755 /tmp/onagent
DOTNET_BUNDLE_EXTRACT_BASE_DIR=/tmp /tmp/onagent --version
install -m 0755 -o root -g root /tmp/onagent /usr/local/bin/onagent

2. Créer l'utilisateur système#

L'agent s'exécute sans privilèges, sous onagent, sans shell ni répertoire personnel :

Terminal
useradd --system --user-group --no-create-home --home-dir /nonexistent --shell /usr/sbin/nologin onagent

3. Stocker le jeton#

Gardez le jeton hors du fichier de service, dans un fichier que seul root peut lire (systemd le lit avant de démarrer l'agent sous onagent) :

Terminal
install -d -m 0700 /etc/onagent
( umask 077; echo 'TOKEN=<VOTRE_JETON>' > /etc/onagent/onagent.env )

4. Créer le service#

Créez /etc/systemd/system/onagent.service :

INI
[Unit]
Description=Onagre Agent
Documentation=https://docs.onagre.io/en/agents/deployment
Wants=network-online.target
After=network-online.target

[Service]
Type=exec
User=onagent
Group=onagent
EnvironmentFile=/etc/onagent/onagent.env
Environment=DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/cache/onagent
ExecStart=/usr/local/bin/onagent
WorkingDirectory=/
Restart=always
RestartSec=10
RestartPreventExitStatus=78
LimitNOFILE=65535
CacheDirectory=onagent
UMask=0077
StandardOutput=journal
StandardError=journal
SyslogIdentifier=onagent
AmbientCapabilities=CAP_NET_RAW
CapabilityBoundingSet=CAP_NET_RAW
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
PrivateDevices=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectKernelLogs=yes
ProtectControlGroups=yes
ProtectClock=yes
ProtectHostname=yes
RestrictSUIDSGID=yes
RestrictRealtime=yes
RestrictNamespaces=yes
LockPersonality=yes
SystemCallArchitectures=native
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK

[Install]
WantedBy=multi-user.target
Réglage Pourquoi
User=onagent L'agent ne s'exécute jamais en root.
RestartPreventExitStatus=78 Un jeton absent ou refusé arrête l'agent (code de sortie 78) au lieu de le redémarrer en boucle.
DOTNET_BUNDLE_EXTRACT_BASE_DIR, CacheDirectory L'agent décompresse son runtime dans /var/cache/onagent/, qui appartient à onagent.
AmbientCapabilities=CAP_NET_RAW Seul privilège : l'ICMP, pour le Sensor Ping et la découverte réseau.
ProtectSystem=strict, ProtectHome=read-only… Durcissement : l'agent peut lire le système (Sensors Fichier) mais n'écrire nulle part. N'ajoutez ni MemoryDenyWriteExecute (incompatible avec .NET) ni PrivateTmp (les Sensors Fichier ne verraient plus /tmp).

Démarrez-le, puis activez-le au démarrage :

Terminal
systemctl daemon-reload
systemctl enable --now onagent

5. Vérifier qu'il est connecté#

Terminal
curl -s http://127.0.0.1:27520/ready

Il répond {"status":"Ready"} une fois l'agent connecté — voir Endpoints de santé. Dans Onagre, l'agent apparaît Connected dans Configuration → Agents :

En-tête et état de l'agent par1-prod-dc : Connected, version 2.8.4.112 sous Linux x64, charge faible, dernier battement il y a quelques secondes, relié au Hub EU-FR-PAR-SCW-02.
Une fois le service démarré, l'agent apparaît Connected avec un battement récent.

Réglages et logs#

Les réglages sont des variables d'environnement : ajoutez-les dans /etc/onagent/onagent.env, une ligne NOM=valeur chacune, puis systemctl restart onagent. Tous les réglages : Configuration de l'agent.

Les logs vont dans le journal systemd :

Terminal
journalctl -u onagent -f
journalctl -u onagent --since today
journalctl -u onagent -p warning

Pour garder aussi un fichier de log, posez LOG=/var/log/onagent/onagent.log et ajoutez LogsDirectory=onagent au service (systemctl edit onagent).

Les Sensors Fichier lisent les fichiers en tant qu'onagent : pour un fichier lisible par root seul, lancez setfacl -m u:onagent:r /chemin/du/fichier.

Mettre à jour#

Téléchargez et vérifiez la nouvelle version comme à l'étape 1, conservez le binaire actuel, remplacez-le, puis redémarrez :

Terminal
install -d -m 0755 /usr/local/lib/onagent
cp /usr/local/bin/onagent /usr/local/lib/onagent/onagent.previous
install -m 0755 -o root -g root /tmp/onagent /usr/local/bin/onagent
systemctl restart onagent
curl -s http://127.0.0.1:27520/ready

Si l'agent ne se reconnecte pas, revenez en arrière : install -m 0755 /usr/local/lib/onagent/onagent.previous /usr/local/bin/onagent && systemctl restart onagent.

Changer le jeton#

Après Revoke and regenerate dans Onagre, remplacez la ligne TOKEN= de /etc/onagent/onagent.env, puis systemctl restart onagent.

Gérer le service#

Tâche Commande
État systemctl status onagent
Redémarrer systemctl restart onagent
Modifications locales (conservées par les mises à jour) systemctl edit onagent
Arrêter et désactiver systemctl disable --now onagent
Désinstaller systemctl disable --now onagent && rm -rf /etc/systemd/system/onagent.service /usr/local/bin/onagent /usr/local/lib/onagent /var/cache/onagent /etc/onagent && systemctl daemon-reload && userdel onagent