Aller au contenu principal

Installer le Navin Manager

Cette page installe le serveur Navin Manager (console, API REST, moteur d'opérations) sur un hôte, depuis les paquets, puis le démarre et réalise la première connexion. L'opération est menée par un administrateur système disposant des droits root et dure environ 30 minutes. Autres méthodes : l'installation hors ligne pour un réseau sans accès Internet, l'installateur guidé navin-install (section Installation guidée) et le bac à sable pour un essai sur un poste sans root.

Avant de commencer​

ÉlémentExigenceVérification
SystèmeUbuntu 24.04 (DEB), famille RHEL 8, 9 ou 10 : RHEL, Rocky Linux, AlmaLinux, Oracle Linux 8/9, CentOS Stream 9/10 (un seul RPM), Arch Linux (pacman), x86_64. Ubuntu 22.04 n'est qu'un hôte géré. La matrice complète est dans Compatibilité des systèmes.cat /etc/os-release
Pythonpython3.12 et python3.12-venv sur Ubuntu, python3.12 sur la famille RHEL (AppStream en 8.10 et 9, BaseOS en 10), le python d'Arch Linux pour lequel le paquet a été construit. Le paquet installe la dépendance.python3.12 --version
Base de donnéesUn serveur PostgreSQL : local sur l'hôte (postgresql ou postgresql-server, configuré par navin-manager-db local) ou un serveur externe joint avec sslmode=require, verify-ca ou verify-full.psql --version
NomUn nom d'hôte complet qui se résout. Le certificat autosigné du paquet est établi pour lui.hostname -f
RéseauPort 8460/tcp (console, API, enregistrement des agents) ouvert depuis les opérateurs et les hôtes gérés ; port 8461/tcp (API des agents et miroir) ouvert depuis les hôtes gérés.ss -ltn montre les deux ports libres
Droitsroot ou sudo.sudo -v

Étapes​

  1. Ajouter le dépôt Navin, ou copier le paquet. Les paquets sont publiés dans des dépôts apt, dnf et pacman signés, produits par os/repo.sh ; sans dépôt, installez directement le fichier du paquet à l'étape 2.

    Ubuntu :

    sudo curl -fsSLo /usr/share/keyrings/navin-archive-keyring.gpg https://<hote-depot>/apt/navin-archive-keyring.gpg
    sudo curl -fsSLo /etc/apt/sources.list.d/navin.sources https://<hote-depot>/apt/navin.sources
    sudo apt update

    RHEL, Rocky Linux, AlmaLinux :

    sudo curl -fsSLo /etc/yum.repos.d/navin.repo https://<hote-depot>/rhel/navin.repo

    Arch Linux (faites confiance une fois à la clé de publication, son empreinte figure dans navin.conf) :

    curl -fsSLO https://<hote-depot>/arch/navin-archive-keyring.asc
    sudo pacman-key --add navin-archive-keyring.asc && sudo pacman-key --lsign-key <empreinte>
    curl -fsSL https://<hote-depot>/arch/navin.conf | sudo tee -a /etc/pacman.conf

    <hote-depot> : adresse du dépôt Navin ou de son miroir dans votre organisation. <empreinte> : l'empreinte de la clé écrite dans navin.conf.

    Résultat attendu : apt update, dnf repolist ou pacman -Sy affiche le dépôt navin.

    En cas d'échec : vérifiez le proxy du gestionnaire de paquets et le certificat de l'hôte du dépôt.

  2. Installer un PostgreSQL local (facultatif) et le paquet. Le paquet crée le compte navin-manager, l'environnement applicatif /opt/navin-manager/venv construit à partir des paquets wheel livrés dans le paquet (sans réseau), la clé maîtresse, un certificat autosigné, server.env et, si un serveur PostgreSQL est installé sur l'hôte, la base locale.

    sudo apt install postgresql navin-manager # Ubuntu 24.04
    sudo dnf install postgresql-server navin-manager # RHEL, Rocky Linux, AlmaLinux 9
    sudo pacman -S --needed postgresql && sudo pacman -S navin-manager # Arch Linux

    Sans dépôt : sudo apt install ./navin-manager_<version>_amd64.deb, sudo dnf install ./navin-manager-<version>-1.el9.x86_64.rpm ou sudo pacman -U ./navin-manager-<version>-1-x86_64.pkg.tar.zst.

    Résultat attendu : le paquet affiche initial account 'navin', one-time password in /etc/navin-manager/server.env et self-signed certificate created in /etc/navin-manager/tls. Si les paramètres passent les contrôles de production, le service est activé et démarré ; sinon il affiche not started, the settings are incomplete: run navin-manager check.

    En cas d'échec : install-venv.sh signale un interpréteur absent (dnf install python3.12, python3.12-venv, pacman -S python) ; un échec de construction de l'environnement restaure le précédent.

  3. Choisir la base de données. navin-manager-db écrit NM_DATABASE_URL dans /etc/navin-manager/server.env et applique les migrations. La base locale n'est jointe que par le socket UNIX, avec un mot de passe aléatoire.

    sudo navin-manager-db local

    Pour le serveur PostgreSQL de votre organisation (TLS obligatoire) :

    sudo navin-manager-db external 'postgresql://navin_manager:<mot-de-passe>@<db-host>:5432/navin_manager?sslmode=verify-full&sslrootcert=/etc/navin-manager/tls/postgresql-ca.pem'

    <mot-de-passe> : mot de passe du rôle navin_manager, propriétaire de la base navin_manager.

    Résultat attendu : navin-manager-db: NM_DATABASE_URL set to ... et la liste des migrations appliquées ; sudo navin-manager-db status montre chaque migration applied.

    En cas d'échec : une adresse externe sans sslmode=require, verify-ca ou verify-full est refusée ; si les migrations échouent sur le nouveau serveur, l'ancienne valeur de NM_DATABASE_URL est restaurée.

  4. Installer le certificat TLS de votre PKI. Le certificat autosigné du paquet (EC P-256, 397 jours, noms : FQDN, nom court, localhost, 127.0.0.1) ne sert qu'au premier démarrage. Voir Certificats TLS.

  5. Contrôler les paramètres. navin-manager check liste chaque paramètre qui interdit un démarrage en production (TLS, certificats clients, attribut du cookie, jeton des métriques, coût scrypt, clé maîtresse, sslmode, mot de passe initial).

    sudo runuser -u navin-manager -- navin-manager check

    Résultat attendu : settings are valid for this environment.

    En cas d'échec : corrigez chaque ligne affichée ; les paramètres sont décrits dans la référence de configuration.

  6. Démarrer le serveur. L'unité applique les migrations (ExecStartPre=navin-manager migrate) puis lance navin-manager serve, qui crée l'administrateur initial.

    sudo systemctl enable --now navin-manager
    sudo firewall-cmd --permanent --add-port=8460/tcp --add-port=8461/tcp && sudo firewall-cmd --reload # famille RHEL
    sudo ufw allow 8460/tcp && sudo ufw allow 8461/tcp # Ubuntu avec ufw

    Résultat attendu : systemctl is-active navin-manager affiche active ; le journal montre administrator navin from the configuration: created (the password must be changed at the first sign in).

    En cas d'échec : journalctl -u navin-manager -n 100 montre le paramètre refusé ou l'erreur de base de données.

  7. Se connecter et changer le mot de passe. Lisez le mot de passe à usage unique, ouvrez la console et connectez-vous avec navin.

    sudo grep '^NM_ADMIN_PASSWORD=' /etc/navin-manager/server.env

    Ouvrez https://<fqdn-manager>:8460. La console demande aussitôt votre propre mot de passe (12 caractères ou plus).

    Résultat attendu : le Tableau de bord affiche Aucun cluster pour l'instant et le bouton Créer un cluster.

    En cas d'échec : mot de passe perdu : sudo runuser -u navin-manager -- navin-manager reset-admin remet le compte sur NM_ADMIN_PASSWORD, à changer de nouveau à la connexion suivante.

  8. Sauvegarder la clé maîtresse. /etc/navin-manager/master.key scelle chaque secret enregistré.

    danger

    Sans copie de master.key, les secrets enregistrés (connexions, coffre fort, mot de passe SMTP) sont irrécupérables après la perte de l'hôte. Gardez-en une copie dans le coffre de votre organisation.

Administrateur initial​

ÉlémentValeur
Nom d'utilisateurNM_ADMIN_USERNAME, par défaut navin
Mot de passeNM_ADMIN_PASSWORD dans server.env, valeur aléatoire écrite par le paquet (Nm-<32 hex>-K9!)
Créationune fois, au premier démarrage de navin-manager serve ; un redémarrage ne le réapplique jamais
Mot de passe perdunavin-manager reset-admin
Autres administrateursAdministration > Utilisateurs, ou navin-manager create-admin --username <nom> (mot de passe saisi deux fois, lu dans --password-file ou --password-stdin)
Second facteurdésactivé par défaut ; NM_MFA_ENABLED=true rétablit l'étape TOTP

Certificats TLS​

Le Manager a deux écoutes et deux certificats :

ÉcoutePortCertificatCertificat client
Console, API, enregistrement8460tls_cert_file, tls_key_file (votre PKI)non
API des agents et miroir8461émis par l'autorité interne du Manager (NM_PKI_DIR, par défaut /var/lib/navin-manager/pki) pour le FQDN et NM_AGENT_TLS_SANSexigé (agent_client_cert_required)

Pour remplacer le certificat autosigné :

  1. Copier le certificat et sa clé. La clé n'est lisible que par le compte de service.

    sudo install -o root -g navin-manager -m 0644 manager.crt /etc/navin-manager/tls/server.crt
    sudo install -o root -g navin-manager -m 0640 manager.key /etc/navin-manager/tls/server.key

    manager.crt : le certificat (avec sa chaîne intermédiaire) émis pour le FQDN utilisé par les opérateurs et les agents. manager.key : sa clé privée.

  2. Redémarrer le serveur.

    sudo systemctl restart navin-manager

    Résultat attendu : openssl s_client -connect <fqdn-manager>:8460 </dev/null | openssl x509 -noout -issuer affiche l'émetteur de votre PKI.

Autres noms pour l'écoute des agents (une IP virtuelle, un alias DNS) : ajoutez NM_AGENT_TLS_SANS=<nom1>,<nom2> dans server.env puis redémarrez. Le certificat de l'autorité qu'épinglent les agents s'exporte avec navin-manager ca-export --out <fichier>, et son empreinte s'affiche à côté de chaque jeton d'amorçage.

Proxy inverse​

Le Manager sert lui-même le TLS sur ses deux ports et n'a pas besoin de proxy inverse. Il ne lit pas les en-têtes X-Forwarded-* (proxy_headers est désactivé), et l'écoute des agents vérifie le certificat client de chaque agent : les agents doivent donc joindre le port 8461 directement, sans terminaison TLS intermédiaire. Renseignez public_url et agent_url quand les opérateurs ou les agents utilisent un autre nom que le FQDN de l'hôte.

Installation guidée​

os/install/navin-install installe un serveur autonome ou un cluster (le Manager, puis ses nœuds) depuis une archive hors ligne par famille (navin-install-<version>-debian, -rhel, -arch), vérifie chaque hôte avant toute modification et reprend là où il s'est arrêté quand on le relance.

sha256sum -c navin-install-<version>-rhel.tar.gz.sha256
tar xzf navin-install-<version>-rhel.tar.gz && cd navin-install-<version>-rhel
sudo ./navin-install preflight manager
sudo ./navin-install manager --cluster <nom-cluster> --mode production
sudo ./navin-install join-command --nodes 3 --hours 24

<nom-cluster> : lettres minuscules, chiffres et tirets. join-command affiche la commande à lancer sur chaque nœud (voir Installer l'agent Navin). Le guide complet est os/install/README.fr.md.

Vérifier​

sudo navinctl status
sudo navinctl check
curl -sk https://<fqdn-manager>:8460/api/v1/version

Résultat attendu : navin-manager.service est enabled et active, navinctl check affiche settings are valid for this environment, /api/v1/version renvoie la version du serveur, et la console montre la page Système avec la base de données et le moteur d'opérations en bonne santé.

Étapes suivantes​

Dépannage​

SymptômeCauseCorrection
not started, the settings are incomplete après l'installationun contrôle de production échoue (souvent la base)sudo runuser -u navin-manager -- navin-manager check, puis navin-manager-db local ou external
NM_DATABASE_URL must use sslmode=require, verify-ca or verify-full in productionadresse externe sans TLSajoutez sslmode=verify-full&sslrootcert=<fichier-ac>
master key file /etc/navin-manager/master.key is missingclé supprimée ou master_key_file incorrectrestaurez la clé depuis le coffre ; navin-manager init-key n'en crée une nouvelle que pour une nouvelle installation
NM_ADMIN_PASSWORD must be a strong one-time password in productionmot de passe initial faible dans server.env12 caractères ou plus, lettres et chiffres, pas navin
Le navigateur signale le certificatle certificat autosigné est toujours en placeinstallez le certificat de votre PKI (Certificats TLS)
Le port 8460 est occupéun autre programme l'écoutess -ltnp 'sport = :8460'