Installer n8n
n8n avec Docker Compose en mode rootless sur Debian 12
n8n est un outil d'automatisation low-code. Avec plus de 220 intégrations prédéfinies et un connecteur général pour tout ce qui possède une API, n8n vous permet de connecter n'importe quoi à tout. Avec n8n, vous pouvez aller au-delà de simples intégrations en une étape pour créer des flux de travail en plusieurs étapes qui intègrent vos outils exactement comme vous le souhaitez, y compris l'ajout de fonctionnalités d'IA. Grâce à son modèle de distribution de code équitable, n8n aura toujours un code source visible, sera disponible pour s'auto-héberger, disposera d'une édition communautaire gratuite et vous permettra d'ajouter vos propres fonctions, logiques et applications personnalisées.
A faire avant de commencer
- Docker & Docker-compose installés en mode rootless (cf ici)
Installation par Docker-compose
Fichiers utilisés
3 fichiers sont nécessaires afin de mettre en place le conteneur n8n :
version: '3.8'
services:
postgres:
image: postgres:16
restart: always
container_name: n8n_postgresql
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
networks:
- web
redis:
image: redis:6-alpine
restart: always
container_name: n8n_redis
volumes:
- redis_storage:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10
networks:
- web
n8n:
restart: always
image: docker.n8n.io/n8nio/n8n:1.46.0
container_name: n8n
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_PROTOCOL=http
- N8N_ENCRYPTION_KEY
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=user
- N8N_BASIC_AUTH_PASSWORD=password
- GENERIC_TIMEZONE=Europe/Paris
- NODE_ENV=production
- EXECUTIONS_MODE=regular
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
- WEBHOOK_URL=http://localhost
links:
- postgres
- redis
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
healthcheck:
test: ['CMD', 'wget', '--spider', 'http://127.0.0.1:5678']
interval: 30s
timeout: 10s
retries: 5
networks:
- web
- internet
volumes:
n8n_storage:
db_storage:
redis_storage:
networks:
web:
driver: bridge
internet:
#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi
Danger
Il serait idéal de changer les mots de passe du fichier .env
Mise en oeuvre
Copie des fichiers directement depuis git
Lancement de la pile docker-compose
Vérification du bon lancement de la pile docker compose
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ba8b84c73f9 docker.n8n.io/n8nio/n8n:1.46.0 "tini -- /docker-ent…" 56 seconds ago Up 52 seconds (healthy) 0.0.0.0:5678->5678/tcp n8n
9fe340751345 postgres:16 "docker-entrypoint.s…" 2 hours ago Up 2 hours (healthy) 5432/tcp n8n_postgresql
11d9c65b9015 redis:6-alpine "docker-entrypoint.s…" 2 hours ago Up 2 hours (healthy) 6379/tcp n8n_redis
Lancement d'une requete HTTP
# curl http://localhost:5678
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="/favicon.ico" />
<script type="text/javascript">
window.BASE_PATH = '/'
....
Ressources
Plan des services et ressources utilisés
flowchart TD
C[docker-compose.yml] --> D[n8n_postgresql]
C --> E[n8n_redis]
C --> F[n8n]
D -->|Volumes| G[db_storage:/var/lib/postgresql/data]
E -->|Volumes| H[redis_storage:/data]
F -->|Volumes| I[n8n_storage:/home/node/.n8n]
D -->|Networks| J[web]
E -->|Networks| J
F -->|Networks| J
F -->|Networks| K[internet]
style C fill:#bbf,stroke:#333,stroke-width:2px
style D fill:#cfc,stroke:#333,stroke-width:2px
style E fill:#cfc,stroke:#333,stroke-width:2px
style F fill:#cfc,stroke:#333,stroke-width:2px
style G fill:#ffc,stroke:#333,stroke-width:1px
style H fill:#ffc,stroke:#333,stroke-width:1px
style I fill:#ffc,stroke:#333,stroke-width:1px
style J fill:#fcc,stroke:#333,stroke-width:1px
style K fill:#fcc,stroke:#333,stroke-width:1px
Configuration de n8n
1 - Lancer la connexion locale vers l'interface de connexion
2 - Personnaliser votre version de n8n
3 - Vous pouvez commencer à utiliser n8n pour faire votre premier "workflow" !