|
|
(6 versions intermédiaires par le même utilisateur non affichées) |
Ligne 1 : |
Ligne 1 : |
| = 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').
| |
|
| |
| Exemple pour le module web_push afin qu'il soit exploitable dans un noeud "Code" de n8n :
| |
| docker exec -it nom_de_votre_conteneur_n8n /bin/sh -c "npm install -g web-push"
| |
|
| |
| 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
| |
|
| |
| Ce qui donne par exemple pour le service n8n dans le docker compose yml :
| |
| services:
| |
| n8n:
| |
| image: n8nio/n8n
| |
| user: root # Utiliser root pour les opérations d'installation
| |
| volumes:
| |
| - /opt/projects/data/n8n_config:/home/node/.n8n
| |
| - /opt/projects/data/n8n_node_modules:/usr/local/lib/node_modules
| |
| environment:
| |
| - NODE_FUNCTION_ALLOW_EXTERNAL=web-push,axios,lodash,moment
| |
| # ... autres configurations
| |
|
| |
| = 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
| |