Hướng dẫn cài đặt N8N trên Ubuntu

Giới thiệu

Bài viết này sẽ hướng dẫn cách cài đặt N8N trên VPS hệ điều hành Ubuntu tại 123HOST.

Hướng dẫn các bước cài đặt N8N

Mua VPS tại 123HOST

Để có thể cài đặt N8N trước hết chúng ta cần thực hiện mua 1 VPS, để cho workflow ổn định chúng ta cần sử dụng VPS cấu hình tối thiểu như sau:

CPU: 2 core

RAM: 4 GB

DISK: 40GB trở lên

Bạn có thể truy cập mua VPS tại

Đối với VPS tại 123HOST bạn có thể sử dụng VPS Pro hoặc NVME VPS:

Bạn có thể mua VPS chọn Đăng ký ngay:

Tiến hành chọn hệ điều hành Ubuntu 22.04 chọn Tiếp tục để tiến hành mua VPS:

Tại đây nếu bạn đã có tài khoản khách hàng tại 123HOST thì tiến hành đăng nhập, nếu chưa có tài khoản tại 123HOST, bạn có thể tạo tài khoản tại bước này rồi bấm Hoàn tất để mua VPS.

Tiến hành thanh toán VPS để VPS được kích hoạt.

VPS được kích hoạt ngay sau khi thanh toán:

Trỏ tên miền để truy cập N8N về VPS tại 123HOST

Trong hướng dẫn này chúng ta sẽ tiến hành trỏ domain n8n.123host.asia về IP 61.14.233.150. Bạn cần thay đổi sang tên miền để truy cập N8N của bạn, và trỏ về IP VPS của bạn.

Cài đặt N8N

Sau khi đã hoàn tất việc mua VPS và trỏ domain về IP VPS, chúng ta sẽ tiến hành cài đặt N8N trên VPS.

Cài đặt docker

Thực hiện các lệnh sau để cài đặt docker trên VPS Ubuntu 22.04.

Đầu tiên chúng ta sẽ tiến hành update hệ thống.

apt-get update -y
Thêm các GPG key để có thể cài đặt Docker.
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

Tiến hành thêm repository của docker

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/nul
Sau khi thêm repository chúng ta sẽ tiến hành update hệ thống.
apt-get update -y

Cài đặt docker

apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Sau khi đã cài đặt thành công docker chúng ta có thể kiểm tra bằng lệnh sau:
docker -v

Cài đặt PostgreSQL

Tiếp theo chúng ta sẽ tiến hành cài đặt PostgreSQL bằng cách thực thi lệnh sau:

apt install -y postgresql postgresql-contrib
Để PostgreSQL để listen port cả trên local và IPv4 public chúng ta thực thi lệnh sau:
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/*/main/postgresql.conf
Tiến hành kiểm tra IP của docker, để chúng ta có thể cấu hình cho phép dãy địa chỉ IP của docker kết nối đến database.
ip add | grep docker
Sau khi có IP của docker chúng ta sẽ thực hiện cấu hình cho phép dãy địa chỉ IP của docker kết nối đến database PostgreSQL.
echo "host all all 172.18.0.0/16 md5" | tee -a /etc/postgresql/*/main/pg_hba.conf
Sau khi đã thực hiện các bước cấu hình trên tiến hành khởi động lại PostgreSQL để áp dụng cấu hình mới. Và cấu hình cho PostgreSQL chạy cùng hệ thống khi khởi động lại VPS.
systemctl restart postgresql
systemctl enable postgresql
Tiến hành kiểm tra lại trạng thái PostgreSQL:
systemctl status postgresql
Tiến hành tạo User and Database để cấu hình kết nối cho N8N bằng cách thực thi lệnh sau:
sudo -i -u postgres
Truy cập vào psql bằng lệnh sau:
psql
Sau khi kết nối postgres chúng ta sẽ thực hiện tạo User and Database
CREATE DATABASE [database_name];
CREATE USER [user_name] WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE [database_name] TO [user_name];
\q
Bạn vui lòng đổi sang thông tin User and Database phù hợp.
Sau khi tạo hoàn tất chúng ta có thể kiểm tra lại thông tin đã đúng chưa bằng cách thực thi lệnh sau:
psql -h localhost -U[user_name] -d[database_name]

Tạo thư mục docker n8n

Tiến hành tạo thư mục n8n để chứa file docker-compose.yml.

mkdir n8n
Di chuyển vào thư mục n8n.
cd n8n
Tiến hành tạo file docker-compose.yml với nội dung như sau:
version: '3.8'
services:
n8n:
image:docker.n8n.io/n8nio/n8n
restart:always
environment:
-DB_TYPE=postgresdb
-DB_POSTGRESDB_HOST=IP_VPS
-DB_POSTGRESDB_PORT=5432
-DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
-DB_POSTGRESDB_USER=${POSTGRES_USER}
-DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
-N8N_BASIC_AUTH_ACTIVE=true
-N8N_BASIC_AUTH_USER
-N8N_BASIC_AUTH_PASSWORD
-N8N_HOST=${DOMAIN_NAME}
-N8N_PORT=5678
-N8N_PROTOCOL=https
-NODE_ENV=production
-WEBHOOK_URL=https://${DOMAIN_NAME}/
-GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
-N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
-N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-EXECUTIONS_DATA_SAVE_ON_ERROR=all
-EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
-EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
-EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true
-EXECUTIONS_DATA_PRUNE=true
-EXECUTIONS_DATA_MAX_AGE=168
-EXECUTIONS_DATA_PRUNE_MAX_COUNT=30000
ports:
-5678:5678
volumes:
-./.n8n_storage:/home/node/.n8n
Bạn cần thay IP VPS của bạn vào mục DB_POSTGRESDB_HOST.
Sau đó chúng ta sẽ tạo file .env để khai báo các biến cho file docker-compose.yml với nội dung sau:
POSTGRES_USER=[user_name]
POSTGRES_PASSWORD=[password]
POSTGRES_DB=[database_name]
# The top level domain to serve from
DOMAIN_NAME=[domain_n8n]
# The user name to use for authentication - IMPORTANT ALWAYS CHANGE!
N8N_BASIC_AUTH_USER=n8n_user
# The password to use for authentication - IMPORTANT ALWAYS CHANGE!
N8N_BASIC_AUTH_PASSWORD=[password]
# Optional timezone to set which gets used by Cron-Node by default
# If not set New York time will be used
GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
N8N_ENCRYPTION_KEY=[random]
Bạn cần thay đổi các giá trị trong [] cho phù hợp với khai báo của bạn.
Sau đó tiến hành run docker-compose để N8N có thể hoạt động.
docker compose up -d
Để kiểm tra container có run thành công không chúng ta thực thi lệnh sau:
docker ps

Cài đặt nginx

Để cấu hình proxy pass cho domain n8n dùng để truy cập N8N chúng ta cần cài đặt nginx.
apt -y install nginx
Tiến hành khởi động nginx và cấu hình nginx khởi động cùng hệ thống.
systemctl start nginx
systemctl enable nginx
Sau khi đã cài đặt nginx chúng ta tiến hành tạo file cấu hình nginx /etc/nginx/conf.d/[n8n_domain].conf cụ thể như sau:
server {
listen80;
server_name [n8n_domain];
# Proxy settings
location/{
proxy_passhttp://127.0.0.1:5678;
proxy_http_version1.1;
proxy_set_headerUpgrade$http_upgrade;
proxy_set_headerConnection"upgrade";
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-Forwarded-Proto$scheme;
proxy_set_headerX-Frame-OptionsSAMEORIGIN;
proxy_buffers1664k;
proxy_buffer_size128k;
client_max_body_size10M;
}
}
Để cấp phát SSL cho domain chúng ta cần tiến hành cài đặt certbot
apt install certbot python3-certbot-nginx -y
Thực hiện cấp phát SSL cho domain bằng cách thực thi lệnh sau:
certbot --nginx -d [n8n_domain]
Sau khi đã cấp phát SSL chúng ta đã có thể truy cập domain và sử dụng n8n.
Qua hướng dẫn này chúng ta đã tìm hiểu về cách cài đặt N8N trên Ubuntu, chúc các bạn thao tác thành công.
Tagged:

Rate This Article