Contents
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
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
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
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
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/*/main/postgresql.conf
ip add | grep docker
echo "host all all 172.18.0.0/16 md5" | tee -a /etc/postgresql/*/main/pg_hba.conf
systemctl restart postgresql
systemctl enable postgresql
systemctl status postgresql
sudo -i -u postgres
psql
CREATE DATABASE [database_name];
CREATE USER [user_name] WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE [database_name] TO [user_name];
\q
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
cd n8n
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
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]
docker compose up -d
docker ps
Cài đặt nginx
apt -y install nginx
systemctl start nginx
systemctl enable nginx
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;
}
}
apt install certbot python3-certbot-nginx -y
certbot --nginx -d [n8n_domain]