Catégorie : Guides d’installation

  • Installer un serveur n8n

    Installer un serveur n8n

    Dans ce tutoriel, nous verrons comment installer une instance n8n avec docker compose.

    Qu’est ce que n8n ?

    n8n est une plateforme d’automatisation de workflow « no-code » qui permet de connecter facilement différentes applications et services entre eux. n8n est l’abréviation de « node node », un jeu de mots qui fait référence à la nature de la plateforme qui consiste à connecter des « nœuds » (nodes) représentant différentes applications et services pour créer des workflows automatisés.

    Avec une interface visuelle intuitive, n8n permet aux utilisateurs de créer des workflows complexes sans nécessiter de compétences en programmation approfondies, automatisant ainsi des tâches répétitives et optimisant des processus métier. Son architecture flexible et extensible en fait un outil puissant pour l’intégration d’applications et l’automatisation des flux de données.

    Installation

    Installez docker.io

    sudo apt update && sudo apt install docker.io -y

    Installez docker compose v2

    mkdir -p ~/.docker/cli-plugins/
    curl -SL https://github.com/docker/compose-cli/releases/download/v2.0.0-rc.1/docker-compose-linux-amd64 -o ~/.docker/cli-plugins/docker-compose
    chmod +x ~/.docker/cli-plugins/docker-compose

    Créez le dossier n8n

    mkdir n8n
    cd n8n

    Créez un fichier docker-compose.yml

    nano docker-compose.yml

    Collez ce contenu

    version: "3.9"
    
    services:
      n8n:
        image: docker.n8n.io/n8nio/n8n
        restart: always
        ports:
          - "${N8N_PORT:-5678}:${N8N_PORT:-5678}"
        environment:
          - N8N_HOST=${N8N_HOST}
          - N8N_PORT=${N8N_PORT:-5678}
          - N8N_PROTOCOL=${N8N_PROTOCOL:-http}
          - N8N_EMAIL_MODE=${N8N_EMAIL_MODE:-smtp}
          - N8N_EMAIL_SMTP_HOST=${N8N_EMAIL_SMTP_HOST}
          - N8N_EMAIL_SMTP_PORT=${N8N_EMAIL_SMTP_PORT}
          - N8N_EMAIL_SMTP_USER=${N8N_EMAIL_SMTP_USER}
          - N8N_EMAIL_SMTP_PASS=${N8N_EMAIL_SMTP_PASS}
          - DB_TYPE=${DB_TYPE:-postgresdb}
          - DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST}
          - DB_POSTGRESDB_PORT=${DB_POSTGRESDB_PORT:-5432}
          - DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE}
          - DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER}
          - DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD}
          - QUEUE_BULL_REDIS_HOST=${QUEUE_BULL_REDIS_HOST}
          - QUEUE_BULL_REDIS_PORT=${QUEUE_BULL_REDIS_PORT:-6379}
          - GENERIC_SUBDOMAIN=${GENERIC_SUBDOMAIN}
          - WEBHOOK_URL=${WEBHOOK_URL}
        volumes:
          - n8n_data:/home/node/.n8n
    
      postgres:
        image: postgres:${POSTGRES_VERSION:-15}
        restart: always
        ports:
          - "${POSTGRES_PORT:-5432}:5432"
        environment:
          - POSTGRES_USER=${POSTGRES_USER}
          - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
          - POSTGRES_DB=${POSTGRES_DB}
        volumes:
          - postgres_data:/var/lib/postgresql/data
    
      redis:
        image: redis:${REDIS_VERSION:-latest}
        restart: always
        ports:
          - "${REDIS_PORT:-6379}:6379"
        volumes:
          - redis_data:/data
    
    volumes:
      n8n_data:
      postgres_data:
      redis_data:

    Créez le fichier d’environnement

    nano .env

    Collez ce contenu et personnalisez les champs

    # Configuration n8n
    N8N_VERSION=latest
    N8N_HOST=localhost
    N8N_PORT=5678
    N8N_PROTOCOL=http # Changez en https si vous utilisez un proxy inversé avec SSL
    N8N_EMAIL_MODE=smtp # Changer en 'sendmail' ou 'disabled'
    N8N_EMAIL_SMTP_HOST=smtp.example.com
    N8N_EMAIL_SMTP_PORT=587
    N8N_EMAIL_SMTP_USER=your_email@example.com
    N8N_EMAIL_SMTP_PASS=your_password
    GENERIC_SUBDOMAIN=n8n
    WEBHOOK_URL=https://example.com/
    
    # Configuration PostgreSQL
    DB_TYPE=postgresdb
    DB_POSTGRESDB_HOST=postgres
    DB_POSTGRESDB_PORT=5432
    DB_POSTGRESDB_DATABASE=n8n
    DB_POSTGRESDB_USER=n8n
    DB_POSTGRESDB_PASSWORD=your_postgres_password
    
    POSTGRES_VERSION=15
    POSTGRES_PORT=5432
    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=your_postgres_password
    POSTGRES_DB=n8n
    
    # Configuration Redis
    QUEUE_BULL_REDIS_HOST=redis
    QUEUE_BULL_REDIS_PORT=6379
    
    REDIS_VERSION=latest
    REDIS_PORT=6379

    Lancez n8n

    sudo docker compose up -d

    Facultatif : Configurer un proxy nginx

    Créez un nouveau site

    sudo nano /etc/nginx/sites-available/n8n.conf

    Collez ce contenu et personnalisez les champs

    server {
        listen 443 ssl;
        server_name n8n.example.com;
    
        ssl_certificate /path/to/your/cert.pem
        ssl_certificate_key /path/to/your/key.pem
    
        location / {
            proxy_pass http://127.0.0.1:5678;
    
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
    
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_buffering off;
        }
    }

    Mettre à jour n8n

    Téléchargez la nouvelle image de n8n

    sudo docker pull docker.n8n.io/n8nio/n8n

    Si docker vous dit que vous avez déjà la dernière version alors que ce n’est pas le cas, vous pouvez forcer la version

    Exemple pour la version 1.84.2

    sudo docker pull docker.n8n.io/n8nio/n8n:1.84.2

    Spécifiez la version dans docker-compose.yml

    services:
      n8n:
        image: docker.n8n.io/n8nio/n8n:1.84.2

    Redémarrez votre instance n8n

    cd ~/n8n
    sudo docker compose down
    sudo docker compose up -d

  • Installer un serveur Matrix

    Installer un serveur Matrix

    Qu’est ce que Matrix ?

    Le protocole Matrix est un standard ouvert pour la communication en temps réel, conçu pour permettre l’interopérabilité entre diverses plateformes de messagerie et de communication. Il a été développé par la société matrix.org et est particulièrement axé sur la décentralisation, ce qui signifie qu’il permet à des utilisateurs d’héberger leurs propres serveurs et de communiquer avec des utilisateurs d’autres serveurs.

    Composants

    Le protocole Matrix se compose de plusieurs composants clés qui collaborent pour permettre aux clients de communiquer entre eux.

    Voici une liste de ses principaux éléments

    • Serveurs (homeservers) :
      • Connus aussi sous le nom de homeservers, les serveurs Matrix hébergent les données des utilisateurs, les historiques de conversation et facilitent la communication entre les utilisateurs. Chaque serveur peut interragir avec d’autres serveurs, permettant aux utilisateurs de différents serveurs de communiquer entre eux.
    • Clients :
      • Il existe divers clients, les plus connus sont Element (anciennement Riot), Cinny et FluffyChat. Elles peuvent s’installer sur PC, sur mobile ou peuvent être accédées directement dans un navigateur.
    • Serveurs d’identité :
      • Le rôle d’un serveur d’identité est de stocker les informations sur l’identité des utilisateurs. Il stocke les associations des identifiants d’un utilisateur présent sur différents serveurs Matrix.
    • Serveurs d’application
      • Les serveurs d’application, sont des modules qui interagissent avec les serveurs Matrix pour apporter des fonctionnalités supplémentaires.

    Voici une architecture globale de l’environnement Matrix.

    Installer un serveur Matrix Synapse

    Ressources hardware

    Configuration minimale :

    • 1 vCPU
    • 1 Gb de RAM
    • 16Go de SSD

    Sous vous prévoyez d’utiliser votre serveur de manière intense avec beaucoup d’utilisateurs, je vous conseille d’augmenter ces ressources.

    Voici les specs du serveur Matrix Synapse qui tourne actuellement chez moi :

    • 2 vCPU
    • 2 Gb de RAM
    • 32 Go de SSD

    Installation

    Mettez à jour votre dépot

    $ sudo apt update && sudo apt upgrade -y

    Installez lsb-release et apt-transport-https

    $ sudo apt install -y lsb-release wget apt-transport-https

    Ajoutez le dépôt Matrix

    $ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
    
    $ echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |
        sudo tee /etc/apt/sources.list.d/matrix-org.list
    
    $ sudo apt update

    Installez Matrix Synapse

    $ sudo apt install matrix-synapse-py3

    Editez la configuration de Matrix

    $ sudo nano /etc/matrix-synapse/homeserver.yaml

    Changez bind-addresses par ‘0.0.0.0’

    bind_addresses: ['0.0.0.0']

    Relancez matrix synapse

    $ sudo systemctl restart matrix-synapse

    Vérifiez que votre instance tourne bien en accédant à http://<ip matrix>:8008 sur un navigateur

    Création de comptes

    Vous pouvez créer un compte utilisateur directement depuis le terminal.

    register_new_matrix_user --user admin --password P@ssw0rd --config /etc/matrix-synapse/homeserver.yaml

    Vous pouvez aussi autoriser la création de comptes en générant une paire de clés API sur la console recaptcha puis en ajoutant ces lignes dans homeserver.yaml.

    recaptcha_public_key: <Clé publique>
    recaptcha_private_key: <Clé privée>
    enable_registration_captcha: true

    Installer Element Web (facultatif)

    Si vous le souhaitez, vous pouvez aussi installer le client Element Web sur votre serveur.

    Installez apache2

    $ sudo apt install apache2

    Ajoutez le dépôt element

    $ sudo wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg
    
    $ echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
    
    $ sudo apt update

    Installez element-web

    sudo apt install element-web

    Editez la configuration

    sudo nano /etc/element-web/config.json

    Remplacez les balises <domaine> par le domaine de votre instance

    Créez un nouveau site apache2

    $ sudo nano /etc/apache2/sites-available/element.conf

    Collez ce contenu et remplacez <url> par le domaine sur lequel vous souhaitez accéder à element. Vous pouvez mettre le même domaine que matrix ou un domaine différent.

    <VirtualHost *:80>
        ServerName <url>
        DocumentRoot /usr/share/element-web
    
        ErrorLog ${APACHE_LOG_DIR}/error-element.log
        CustomLog ${APACHE_LOG_DIR}/access-element.log combined
    </VirtualHost>

    Activez le site

    sudo a2ensite element.conf

    Relancez apache2

    sudo systemctl reload apache2

    Activer le SSL

    Avant d’activer le SSL assurez-vous que votre serveur est accessible sur internet et que votre domaine est publique.

    Installez certbot

    $ sudo apt install certbot

    Pour obtenir un certificat SSL et passer le site en HTTPS

    $ sudo certbot --apache

    Séléctionnez votre domaine puis appuyez sur entrée.

    Vous pouvez vérifier que votre serveur element tourne bien en accédant à https://<url>

    Essayez de vous connecter avec un compte matrix créé précédemment.