« Catégorie:N8N » : différence entre les versions
Ligne 205 : | Ligne 205 : | ||
Par exemple pour les modules web-push,axios,lodash et moment : | Par exemple pour les modules web-push,axios,lodash et moment : | ||
- NODE_FUNCTION_ALLOW_EXTERNAL=web-push,axios,lodash,moment | - NODE_FUNCTION_ALLOW_EXTERNAL=web-push,axios,lodash,moment | ||
=== Ajout de programmes au shell === | |||
docker ps | |||
docker exec -it -u root CONTAINER_NAME_OR_ID sh | |||
apk update | |||
apk add imagemagick | |||
=== Mise à jour du conteneur === | === Mise à jour du conteneur === |
Version du 28 mai 2025 à 13:36
Installation
Sur serveur Ubuntu
NODE
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash nvm install 22 nvm current
n8n
export N8N_SECURE_COOKIE="false" npx n8n
En tant que service
Premier lancement comme root
sudo nano /etc/systemd/system/n8n.service
[Unit] Description=n8n After=network.target [Service] ExecStart=/home/aeyos/.nvm/versions/node/v22.13.1/bin/n8n #WorkingDirectory=/home/aeyos Restart=always User=root Environment=PATH=/usr/bin:/usr/local/bin:/home/aeyos/.nvm/versions/node/v22.13.1/bin Environment=NODE_ENV=production Environment=N8N_SECURE_COOKIE=false # permet un access en http, utile pour tester au debut avant la mise en place de letsencrypt # Environment=N8N_PORT=6254 # 5678 par defaut Environment=N8N_PAYLOAD_SIZE_MAX=200 #16Mo par defaut , voir https://docs.n8n.io/hosting/configuration/environment-variables/endpoints/ [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl enable n8n.service sudo systemctl restart n8n.service sudo systemctl status n8n.service
Autre lancement comme aeyos
sudo nano /etc/systemd/system/n8n.service
User=aeyos
sudo systemctl daemon-reload sudo systemctl restart n8n.service sudo systemctl status n8n.service
Dans un conteneur docker
Exemple de fichier docker-compose.yml
version: "3.8" services: # ===================== N8N ===================== mysql: image: mysql:8 container_name: mysql_n8n restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: Sx6mFRTqr8YVIcdbQoOs MYSQL_DATABASE: n8n MYSQL_USER: n8n MYSQL_PASSWORD: EkwvN6ocDOAUqZxHfz2f volumes: - /opt/projects/data/n8n_mysql_data:/var/lib/mysql - /opt/projects/mysql-conf/my.cnf:/etc/mysql/conf.d/my_custom.cnf networks: - n8n ports: - "3306:3306" n8n: image: n8nio/n8n # user: root # Utiliser root pour les opérations d'installation : ATTENTION en utilisant root n8n ne fonctionnera pas , il faudra restart apres install du module en commantant cette ligne container_name: n8n environment: DB_TYPE: mysqldb DB_MYSQLDB_HOST: mysql DB_MYSQLDB_PORT: 3306 DB_MYSQLDB_DATABASE: n8n DB_MYSQLDB_USER: n8n DB_MYSQLDB_PASSWORD: EkwvN6ocDOAUqZxHfz2f N8N_BASIC_AUTH_ACTIVE: "true" N8N_BASIC_AUTH_USER: admin N8N_BASIC_AUTH_PASSWORD: dmoBqFlhnH46lRJ2V1qn N8N_HOST: webiciel.pyrostech.net WEBHOOK_URL: https://webiciel.pyrostech.net/ GENERIC_TIMEZONE: Europe/Paris N8N_DEFAULT_LOCALE: fr N8N_RUNNERS_ENABLED: "true" N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "false" NODE_PATH: "/usr/local/lib/node_modules:/home/node/.npm-global/lib/node_modules" PATH: "/home/node/.npm-global/bin:${PATH}" NODE_FUNCTION_ALLOW_EXTERNAL: "web-push" NPM_CONFIG_PREFIX: "/home/node/.npm-global" restart: unless-stopped volumes: - /opt/projects/data/n8n_config:/home/node/.n8n - /opt/projects/data/n8n_node_modules:/home/node/.npm-global - /opt/projects/data/n8n_taskrunner_node_modules:/usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner/node_modules networks: - n8n depends_on: - mysql labels: - "traefik.enable=true" - "traefik.http.routers.n8n.rule=Host(`webiciel.pyrostech.net`)" - "traefik.http.routers.n8n.entrypoints=websecure" - "traefik.http.routers.n8n.tls.certresolver=letsencrypt" - "traefik.http.services.n8n.loadbalancer.server.port=5678" # ===================== Traefik ===================== traefik: image: traefik:v2.10 restart: unless-stopped container_name: traefik command: - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true" - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencrypt.acme.email=ghyslain.daubeze@sofakom.fr" - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" - "--api.dashboard=true" ports: - "80:80" - "443:443" - "8080:8080" # interface Traefik volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "/opt/projects/data/:/letsencrypt" networks: - n8n restart: always labels: - "traefik.enable=true" - "traefik.http.routers.traefik.rule=Host(`traefik.webiciel.pyrostech.net`)" - "traefik.http.routers.traefik.entrypoints=websecure" - "traefik.http.routers.traefik.service=api@internal" - "traefik.http.routers.traefik.tls.certresolver=letsencrypt" - "traefik.http.routers.traefik.middlewares=authtraefik" - "traefik.http.middlewares.authtraefik.basicauth.users=admin:$$apr1$$HU35emVn$$dD/PEQV0wqrF.hMJni9/F/" networks: n8n:
Il conviendra de créer les dossiers locaux correspondant au montage, ici :
/opt/projects/data/n8n_config /opt/projects/data/n8n_node_modules
Exécutez les commandes suivantes sur votre système hôte pour attribuer les bonnes permissions au dossier destiné aux modules :
# Créer le dossier s'il n'existe pas sudo mkdir -p /opt/projects/data/n8n_node_modules # Définir la propriété au même UID/GID que l'utilisateur node dans le conteneur (généralement 1000:1000) sudo chown -R 1000:1000 /opt/projects/data/n8n_node_modules # Définir les permissions correctes sudo chmod -R 775 /opt/projects/data/n8n_node_modules
L'utilisateur node dans le conteneur n8n a généralement l'UID 1000 et le GID 1000. Si vous avez besoin de vérifier cela, vous pouvez exécuter :
docker exec -it nom_de_votre_conteneur_n8n id node
Ajout de module node
Il faut faire l'installation du module dans le conteneur docker après avoir reboot le dit conteneur en tant que "user: root" (voir docker-compose.yml). Après installation il faut restart en mode normal (l'user par defaut est 'n8n').
L'ajout d'un module node exploitable necessite l'usage du script fournis afin de faire tout les ajouts :
ajout_module_node_dans_conteneur_n8n.sh
#!/bin/bash # Script pour installer web-push après mise à jour de n8n # Installer web-push globalement npm install -g $1 # Installer web-push dans le répertoire du Task Runner npm install $1 --prefix /usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner # Créer un lien symbolique du module vers le répertoire racine des modules ln -sf /usr/local/lib/node_modules/$1 /usr/local/lib/node_modules/n8n/node_modules/$1 # Donner les bonnes permissions chown -R node:node /usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner/node_modules chown -R node:node /usr/local/lib/node_modules/n8n/node_modules/$1
Par exemple comme ceci (depuis l'hote) :
docker exec -u root -i n8n /bin/sh < ajout_module_node_dans_conteneur_n8n.sh web-push
Regarder les logs qui doivent indiquer que task-runner est lancer (l'erreur de task rennuer apparait lors de la déclaration du nouveau module dans NODE_FUNCTION_ALLOW_EXTERNAL alors qu'il n'est pas installé) :
docker logs -f n8n
Ne pas oublier de relancer le conteneur n8n en commentant l' "user: root" .
Dans le noeud "Code" il suffit de le déclarer ensuite pour pouvoir l'utiliser :
const webpush = require('web-push');
Il faudra également définir les variable d'environnement autorisant les modules ajoutés. Par exemple pour les modules web-push,axios,lodash et moment :
- NODE_FUNCTION_ALLOW_EXTERNAL=web-push,axios,lodash,moment
Ajout de programmes au shell
docker ps
docker exec -it -u root CONTAINER_NAME_OR_ID sh apk update apk add imagemagick
Mise à jour du conteneur
docker-compose down docker rmi n8nio/n8n cd /opt/projects docker-compose up -d
Si la version des modules installé n'est plus fonctionnelle avec les versions de modules n8n du conteneur, il suffira de les réinstaller.
Pour cela vider les dossiers :
- /opt/projects/data/n8n_taskrunner_node_modules
- /home/node/.npm-global
Puis refaire les install :
- cd /opt/projects
- down + up -d du conteneur n8n avec "user: root" dans le docker-compose.yml
- docker exec -u root -i n8n /bin/sh < ajout_module_node_dans_conteneur_n8n.sh NOM_DU_MODULE
- down + up -d du conteneur n8n en commentant "user: root" dans le docker-compose.yml
Ressources
- Markdown-Cheatsheet : https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#emphasis
- Rédaction (supporte copier coller) : https://stackedit.io/app#
- Aide AIRTABLE Formula : https://support.airtable.com/docs/formula-field-reference
- Graph explorer (microsoft) : https://developer.microsoft.com/en-us/graph/graph-explorer
Pages dans la catégorie « N8N »
Cette catégorie comprend 5 pages, dont les 5 ci-dessous.