Il y a quelques semaines je vous ai présenté mon HomeLab et notamment comment je le monitore avec l’excellent Bezsel. Un outil de monitoring simple, léger et efficace ! Loin des usines à gaz que sont Zabbix ou Centreon et largement suffisant pour un HomeLab.
Cependant, il ne propose pas de solution directement applicable pour monitorer mon firewall OPNsense.
Je vous explique dans cet article comment installer, configurer et mettre à jour un agent Bezsel pour l’OS FreeBSD ou OPNsense, basé sur cet OS, pour résoudre ce problème.
📌 Prérequis et Notes Importantes
- Accès SSH : activer le ssh sur OPNsense
- Utilisateur
beszel: L’agent tournera sous l’utilisateurbeszel. J’ai utilisé l’ID 2000, mais vous pouvez le changer ou l’omettre. - Mise à jour : L’agent peut s’auto-mettre à jour, mais vous devrez redémarrer le service manuellement après.
- Permissions : Toutes les commandes ci-dessous sont supposées être exécutées en tant que
root.
🛠️ Le Guide d’Installation Étape par Étape
1. Activation du ssh
Sur votre firewall OPNsense aller sur System -> Settings -> Administration

Puis dans la section Secure Shell activez le Secure Shell sur l’interface LAN comme dans la capture ci-dessous :

Ensuite il vous suffit de vous connecter à votre firewal en ssh avec la commande suivante en mettant l’ip de votre OPNsense:
ssh root@ip_opnsense
Le mot de passe est celui du root.
2. Création de l’utilisateur dédié
Pour des raisons de sécurité, l’agent ne doit pas tourner sous root.
pw user add beszel -u 2000 -d /nonexistent -s /usr/sbin/nologin -c "beszel user"
3. Préparation du Répertoire d’Installation
Créez l’emplacement où l’agent sera installé.
mkdir -p /opt/beszel-agent/bin
4. Installation de beszel-agent
Nous allons télécharger et extraire l’agent directement dans le répertoire créé. J’ai choisi ici une version un peu plus ancienne (v0.12.5) pour pouvoir tester la fonction de mise à jour après l’installation.
curl -sL https://github.com/henrygd/beszel/releases/download/v0.12.5/beszel-agent_freebsd_amd64.tar.gz | tar -xC /opt/beszel-agent/bin beszel-agent
5. Ajustement des Permissions pour l’Auto-Mise à Jour
Pour permettre à l’agent de se mettre à jour lui-même, il doit avoir les droits d’écriture sur son propre répertoire.
chown -R beszel:wheel /opt/beszel-agent/bin
6. Création et Configuration du Fichier d’Environnement (.env)
C’est là que vous stockez les paramètres sensibles de l’agent.
touch /opt/beszel-agent/env && chmod 640 /opt/beszel-agent/env && chown root:beszel /opt/beszel-agent/env
⚠️ Remplissez /opt/beszel-agent/env avec votre contenu :
J’ai choisi de lier le service à 127.0.0.1 car je n’utilise pas le mode SSH.
Il faut au préalable créer votre OPNsense sur Bezsel qui vous fournira la key ssh ainsi que le token
LISTEN=127.0.0.1:45876
KEY="ssh-ed25519 ..." # Votre clé publique
HUB_URL=https://example.internal # L'ip ou url de votre Beszel
TOKEN=abcde # Votre jeton d'authentification
7. Mise en place du Fichier RC (Service System)
Afin de pouvoir gérer l’agent comme un service standard (démarrer, arrêter, etc.), nous allons créer un fichier de service (rc).
- Créez le fichier de service (par commodité, dans
/opt/beszel-agent/rc) :
touch /opt/beszel-agent/rc
- Donnez-lui les permissions d’exécution :
chmod 755 /opt/beszel-agent/rc
- Créez le lien symbolique vers l’emplacement attendu par le système :
ln -s /opt/beszel-agent/rc /usr/local/etc/rc.d/beszel-agent
- Contenu du Fichier RC (
/opt/beszel-agent/rc)
Ce script permet la gestion standard du service et ajoute une commande upgrade super pratique. Copiez le contenu suivant dans le fichier rc :
#!/bin/sh
# PROVIDE: beszel_agent
# REQUIRE: DAEMON NETWORKING
# BEFORE: LOGIN
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable Beszel Agent:
# beszel_agent_enable="YES"
#
# beszel_agent_enable (bool): Set to YES to enable Beszel Agent
# Default: NO
# beszel_agent_env_file (str): Beszel Agent env configuration file
# Default: /opt/beszel-agent/env
# beszel_agent_user (str): Beszel Agent daemon user
# Default: beszel
# beszel_agent_bin (str): Path to the beszel-agent binary
# Default: /opt/beszel-agent/bin/beszel-agent
# beszel_agent_flags (str): Extra flags passed to beszel-agent command invocation
# Default:
. /etc/rc.subr
name="beszel_agent"
rcvar=beszel_agent_enable
load_rc_config $name
: ${beszel_agent_enable:="NO"}
: ${beszel_agent_user:="beszel"}
: ${beszel_agent_flags:=""}
: ${beszel_agent_env_file:="/opt/beszel-agent/env"}
: ${beszel_agent_bin:="/opt/beszel-agent/bin/beszel-agent"}
logfile="/var/log/${name}.log"
pidfile="/var/run/${name}.pid"
procname="/usr/sbin/daemon"
start_precmd="${name}_prestart"
start_cmd="${name}_start"
stop_cmd="${name}_stop"
extra_commands="upgrade"
upgrade_cmd="beszel_agent_upgrade"
beszel_agent_prestart()
{
if [ ! -f "${beszel_agent_env_file}" ]; then
echo WARNING: missing "${beszel_agent_env_file}" env file. Start aborted.
exit 1
fi
}
beszel_agent_start()
{
echo "Starting ${name}"
/usr/sbin/daemon -fc \
-P "${pidfile}" \
-o "${logfile}" \
-u "${beszel_agent_user}" \
"${beszel_agent_bin}" ${beszel_agent_flags}
}
beszel_agent_stop()
{
pid="$(check_pidfile "${pidfile}" "${procname}")"
if [ -n "${pid}" ]; then
echo "Stopping ${name} (pid=${pid})"
kill -- "-${pid}"
wait_for_pids "${pid}"
else
echo "${name} isn't running"
fi
}
beszel_agent_upgrade()
{
echo "Upgrading ${name}"
if command -v sudo >/dev/null; then
sudo -u "${beszel_agent_user}" -- "${beszel_agent_bin}" update
else
su -m "${beszel_agent_user}" -c "${beszel_agent_bin} update"
fi
echo "Restarting ${name}"
beszel_agent_stop
beszel_agent_start
}
run_rc_command "$1"
8. Activation du Service
Pour que le service démarre automatiquement au boot, ajoutez la ligne suivante à /etc/rc.conf.local (préférable) ou /etc/rc.conf :
beszel_agent_enable="yes"
9. Contrôle et Gestion du Service
Vous pouvez maintenant utiliser la commande service pour contrôler l’agent :
| Action | Commande |
| Démarrer | service beszel-agent start |
| Arrêter | service beszel-agent stop |
| Redémarrer | service beszel-agent restart |
| Statut | service beszel-agent status |
🚀 Mise à Jour Simplifiée !
Grâce à la commande personnalisée ajoutée au fichier RC (point 7), la mise à jour est un jeu d’enfant :
service beszel-agent upgrade
Cette commande exécute la mise à jour de l’agent en tant qu’utilisateur beszel, puis redémarre le service automatiquement. Beaucoup plus simple que de faire la mise à jour manuellement puis de redémarrer !
