sudo -s
Before doing anything else, update your operating system by running these two commands:
apt update && sudo apt upgrade -y
Add the NodeSource APT repository for Node 20
sudo curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash &&
apt-get install nodejs -y
NGINX server and the SSL configuration requires
apt install nginx -y
systemctl status nginx
cd /etc/nginx/sites-available/ &&
nano n8n.conf
Now insert a copy of the below example configuration and replace
server {
server_name n8n.domain.tld;
listen 80;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
}
}
Now linking the file we have just created
ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/ &&
nginx -t &&
systemctl reload nginx
npm install pm2 -g
npm install n8n -g
pm2 start n8n
pm2 startup && pm2 save
pm2 restart n8n
create pm2 config with pm2 init simple
replce with below code
module.exports = {
apps : [{
name : "n8n",
env: {
// N8N_EMAIL_MODE: "smtp",
// N8N_SMTP_HOST: "smtp.gmail.com",
// N8N_SMTP_PORT: "465",
// N8N_SMTP_USER: "[email protected]",
// N8N_SMTP_PASS: "password",
// N8N_SMTP_SSL: "true",
N8N_PROTOCOL: "https",
GENERIC_TIMEZONE: "Asia/Kolkata",
TZ: "Asia/Kolkata",
N8N_HOST: "n8n.domain.tld",
WEBHOOK_URL: "https://n8n.domain.tld/",
N8N_EDITOR_BASE_URL: "https://n8n.domain.tld/",
N8N_ENDPOINT_WEBHOOK: "prod/v1",
N8N_ENDPOINT_WEBHOOK_TEST: "test/v1",
N8N_METRICS: true,
}
}]
}
### if you do not have domain then use below config
module.exports = {
apps : [{
name : "n8n",
env: {
GENERIC_TIMEZONE: "Asia/Kolkata",
TZ: "Asia/Kolkata",
N8N_HOST: "your_server_ip_here",
WEBHOOK_URL: "your_server_ip_here:5678",
N8N_EDITOR_BASE_URL: "your_server_ip_here:5678",
N8N_ENDPOINT_WEBHOOK: "prod/v1",
N8N_ENDPOINT_WEBHOOK_TEST: "test/v1",
N8N_SECURE_COOKIE: false,
}
}]
}
If you have a Custom domain then change the below config as well. If not then you can go to http://SERVER-IP:5678
N8N_HOST: "n8n.domain.tld",
WEBHOOK_URL: "n8n.domain.tld",
N8N_EDITOR_BASE_URL: "n8n.domain.tld",
pm2 start ecosystem.config.js
pm2 restart ecosystem.config.js --update-env
We are now ready to configure UFW.
ufw app list
Now allow bothudp and tcp for Nginx Full
, OpenSSH
& 5678,443,80
to be accessed from the internet:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw allow 5678/tcp
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
ufw enable
npm update -g n8n
Please refer official docs to import or export workflows and credentials.