emissary/doc/tutorials/fr/first-steps.md
William Petit 3d7a094cb8
All checks were successful
arcad/emissary/pipeline/head This commit looks good
feat(auth): store and retrieve auth token from home directory by default (#2)
2023-08-25 12:53:31 -06:00

6.8 KiB

Premiers pas

Prérequis

Étapes

Préparer votre RaspberryPi

  1. Sur la page des "versions" des firmwares du projet Emissary, télécharger la dernière version disponibles correspondant à votre système cible, dans le cas présent openwrt-<openwrt_version>-emissary-<emissary_firmware_version>-bcm27xx-bcm2710-rpi-3-ext4-factory.img.gz

  2. Brancher votre carte SD dans le lecteur, flasher celle ci avec le firmware:

    # Chemin vers le fichier de firmware précédemment téléchargé
    FIRMWARE_FILE="openwrt-<openwrt_version>-emissary-<emissary_firmware_version>-bcm27xx-bcm2710-rpi-3-ext4-factory.img.gz"
    
    SDCARD_DEVICE=/dev/sdX  # Chemin vers le "device" correspondant à votre carte SD
    
    # Décompresser le firmware
    gzip -d "${FIRMWARE_FILE}"
    
    # Flash la carte SD
    sudo dd if="${FIRMWARE_FILE%.gz}" of="${SDCARD_DEVICE}" bs=2M conv=fsync
    
    # Attendre la fin des écritures
    sudo sync
    
  3. Placer votre carte SD dans votre RaspberryPi, le connecter à votre réseau en Ethernet puis l'allumer.

  4. Scanner votre réseau pour trouver l'adresse IP de votre Raspberry Pi. Par exemple, avec l'outil nmap:

    sudo nmap -sP 192.168.0.*   # À modifier par le préfixe correspondant à votre réseau local
    

    Une entrée équivalente à la suivante devrait être affichée:

    Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-25 19:29 CEST
    Nmap scan report for 192.168.0.24
    Host is up (0.0034s latency).
    MAC Address: B8:27:EB:E5:7B:55 (Raspberry Pi Foundation)
    [...]
    
  5. Se connecter en SSH sur votre RaspberryPi et définir un mot de passe pour le compte administrateur:

    ssh root@<ip>
    
    passwd
    

Installer le serveur Emissary

  1. Sur la machine Ubuntu 22.04, télécharger les paquets Emissary sur la page "Versions" du projet. Dans le cas présent, choisir le paquet Debian emissary-server_<emissary_version>_linux_<arch>.deb<arch> correspond à l'architecture CPU de votre machine.

  2. Installer le paquet télécharger via dpkg:

    sudo dpkg -i emissary-server_<emissary_version>_linux_<arch>.deb
    
  3. Appliquer les migrations sur la base de données:

    sudo emissary --workdir /usr/share/emissary --config /etc/emissary/server.yml server database migrate
    
  4. Redémarrer le service:

    sudo systemctl restart emissary-server
    
  5. Créer un jeton d'administration:

    sudo emissary --workdir /usr/share/emissary --config /etc/emissary/server.yml server auth create-token --role writer --subject $(whoami)
    

    Note

    Le jeton sera stocké dans le répertoire $HOME/.config/emissary.

  6. Vérifier l'authentification sur l'API:

    emissary api agent query
    

    Une réponse équivalente à la suivante devrait s'afficher:

    +----+-------+------------+--------+-------------+-----------+
    | ID | LABEL | THUMBPRINT | STATUS | CONTACTEDAT | UPDATEDAT |
    +----+-------+------------+--------+-------------+-----------+
    +----+-------+------------+--------+-------------+-----------+
    

Appairer l'agent avec votre serveur

  1. Sur le RaspberryPi, exécuter la commande suivante:

    uci set emissary.agent.server_url='http://<server_ip>:3000'
    uci commit emissary
    reload_config
    
  2. Via la commande logread, vérifier que l'agent arrive à se connecter avec le serveur:

    logread -f
    

    Un message de ce type devrait s'afficher:

    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.611 [INFO]	<./internal/agent/controller/persistence/controller.go:58>	(*Controller).Reconcile	no changes detected, doing nothing	{"controller": "persistence-controller"}
    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.675 [ERROR]	<./internal/agent/controller/spec/controller.go:43>(*Controller).reconcileAgent	unexpected agent status	{"controller": "spec-controller", "agentID": 1, "status": 0}
    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.676 [INFO]	<./internal/agent/controller/openwrt/uci_controller.go:32>	(*UCIController).Reconcile	could not find uci spec, doing nothing	{"controller": "uci-controller"}
    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.677 [INFO]	<./internal/agent/controller/app/controller.go:43>	(*Controller).Reconcile	could not find app spec	{"controller": "app-controller"}
    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.678 [INFO]	<./internal/agent/controller/proxy/controller.go:35>(*Controller).Reconcile	could not find proxy spec	{"controller": "proxy-controller"}
    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.680 [INFO]	<./internal/agent/controller/mdns/controller.go:38>(*Controller).Reconcile	could not find mdns spec	{"controller": "mdns-controller"}
    Thu May 25 18:48:51 2023 daemon.info emissary[2202]: 2023-05-25 18:48:51.680 [INFO]	<./internal/agent/controller/openwrt/sysupgrade_controller.go:36>	(*SysUpgradeController).Reconcile	could not find sysupgrade spec, doing nothing	{"controller": "sysupgrade-controller"}
    
  3. Sur le serveur, vérifier que l'agent a pu s'enregistrer:

    emissary api agent query
    

    Un message de ce type devrait s'afficher:

    +----+-------+-----------------------------------+--------+-----------------------------------+-----------------------------------+
    | ID | LABEL | THUMBPRINT                        | STATUS | CONTACTEDAT                       | UPDATEDAT                         |
    +----+-------+-----------------------------------+--------+-----------------------------------+-----------------------------------+
    | 1  |       | 21CnUATcboKCaheb2uczWCuoxTZtnp... | 0      | 2023-05-25 18:49:51.652680196 ... | "2023-05-25T18:49:51.589225817... |
    +----+-------+-----------------------------------+--------+-----------------------------------+-----------------------------------+
    

    Noter l'identifiant associé à l'agent.

  4. Mettre à jour le statut de l'agent afin qu'il soit en capacité à récupérer ses spécifications:

    emissary api agent update --agent-id <agent_id> --status 1
    

Bravo, vous avez appairé votre premier agent et son serveur Emissary !

Aller plus loin