Aller au contenu

🔌 Connexion d'un serveur à Komodo

Pour cela, nous devons passer par Komodo Periphery.

Komodo Periphery est un petit serveur web sans état qui s'exécute sur les serveurs que nous souhaitons connectés à Komodo.
Il expose une API appelée par Komodo Core pour :

  • effectuer des actions sur le serveur,
  • obtenir l'utilisation du système ainsi que l'état et les journaux des conteneurs.

Il est uniquement destiné à être accessible depuis le Core et dispose d'une liste blanche d'adresses pour limiter les IP autorisées à appeler cette API. La passkey (définie lors de l'installation de Komodo Core) permet également de limiter les accès à l'API.

Il existe deux solutions pour déployer Komodo Periphery :

  • Conteneur Docker
  • Systemd

Personnellement, je préfère utiliser des conteneurs avec un utilisateur non-root. Après quelques tests avec la version conteneur, je me suis tourné vers l'agent systemd qui m'est apparu moins compliqué à utiliser pour lancer des conteneurs en tant qu'utilisateur non-root.

💾 Installation de l'agent avec systemd

Installation de l'agent
# En tant qu'utilisateur autorisé à instancier des conteneurs Docker
curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py | python3 - --user

# Cela déploie la configuration suivante dans le home directory de l'utilisateur.
.config/
|-- komodo/
|   `-- periphery.config.toml
`-- systemd/
    `-- user/
        `-- periphery.service

Il faut maintenant configurer le fichier /home/MonUser/.config/komodo/periphery.config.toml

Extrait du fichier .config/komodo/periphery.config.toml
################################
# 🦎 KOMODO PERIPHERY CONFIG 🦎 #
################################

## Optional. The port the server runs on.
## Env: PERIPHERY_PORT
## Default: 8120
port = 8120

(...)

repo_dir = "/srv/repos" # Pas encore utilisé

stack_dir = "/srv/stacks" # Répertoire où seront déployées les stacks Docker

(...)

########
# AUTH #
########

allowed_ips = [] # Je n'ai rien précisé ici sinon Komodo Core n'arrive pas à se connecter

## Optional. Require callers to provide on of the provided passkeys to access the periphery api.
## Env: PERIPHERY_PASSKEYS or PERIPHERY_PASSKEYS_FILE
## Default: empty, which will not require any passkey to be passed by core.
passkeys = ['VOTRE_PASSKEY'] # Renseignez ici la passkey créée précédemment lors de la configuration de Komodo Core

############
# Security #
############

## Enable HTTPS server using the given key and cert.
## If true and a key / cert at the given paths are not found, 
## self signed keys will be generated using openssl.
## Env: PERIPHERY_SSL_ENABLED
## Default: false (will change to `true` in later release)
ssl_enabled = true

## Path to the ssl key.
## Env: PERIPHERY_SSL_KEY_FILE
## Default: /etc/komodo/ssl/key.pem
ssl_key_file = "/home/MonUser/.config/komodo/ssl/key.pem"

## Path to the ssl cert.
## Env: PERIPHERY_SSL_CERT_FILE
## Default: /etc/komodo/ssl/cert.pem
ssl_cert_file = "/home/MonUser/.config/komodo/ssl/cert.pem"

(...)

Créez les dossiers /srv/stacks et /srv/repos :

Création des répertoires
sudo mkdir /srv/{stacks,repos}
sudo chown -R MonUser: /srv/{stacks,repos}

Une fois le fichier de config renseigné et les répertoires créés (repos et stacks) :

Activation de l'agent
# Toujours en tant que votre user
systemctl --user restart periphery

systemctl --user status periphery

* periphery.service - Agent to connect with Komodo Core
     Loaded: loaded (/home/MonUser/.config/systemd/user/periphery.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-04-25 13:53:05 UTC; 11min ago
   Main PID: 1929846 (sh)
      Tasks: 10 (limit: 37715)
     Memory: 7.1M
        CPU: 7.562s
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/periphery.service
             |-1929846 /bin/sh -lc "/home/MonUser/.local/bin/periphery --config-path /home/MonUser/.config/komodo/periphery.config.toml"
             `-1929849 /home/MonUser/.local/bin/periphery --config-path /home/MonUser/.config/komodo/periphery.config.toml

Apr 25 13:53:05 srv-docker systemd[3808493]: Started periphery.service - Agent to connect with Komodo Core.
Apr 25 13:53:05 srv-docker sh[1929849]: 2025-04-25T13:53:05.060883Z  INFO periphery: Komodo Periphery version: v1.17.2
Apr 25 13:53:05 srv-docker sh[1929849]: 2025-04-25T13:53:05.060910Z  INFO periphery: PeripheryConfig { port: 8120, bind_ip: "[::]", root_directory: "/home/MonUser/.config/komodo", repo_dir: Some("/srv/repos"), stack_dir: Some("/srv/s (...)"
Apr 25 13:53:05 srv-docker sh[1929849]: 2025-04-25T13:53:05.061001Z  INFO periphery: <F0><9F><94><92> Periphery SSL Enabled
Apr 25 13:53:05 srv-docker sh[1929849]: 2025-04-25T13:53:05.061034Z  INFO periphery: Komodo Periphery starting on https://[::]:8120

systemctl --user enable periphery

sudo loginctl enable-linger $USER # Afin d'éviter l'arrêt du service lors de la déconnexion du user

🚀 Connexion du serveur à Komodo Core

L'agent maintenant installé, connectez-vous sur l'interface web de Komodo, puis rendez-vous sur Servers.

server01

Cliquez sur New server et renseignez un nom :

alt text

Renseignez ensuite son adresse IP dans Address (ex. : https://IP:8120), cochez la case Enabled puis cliquez sur Save :

alt text

Le serveur doit alors passer en statut OK.

alt text

Il nous reste plus qu'à déployer des conteneurs.