Giới thiệu
n8n là nền tảng tự động hóa mã nguồn mở mạnh mẽ, giúp người dùng kết nối và tự động hóa công việc của các quy trình một cách dễ dàng mà không cần kiến thức sâu về cài đặt. Với giao diện kéo trực tiếp, n8n cho phép bạn tích hợp hàng trăm ứng dụng như Google Sheets, Slack, hay Trello, tạo các tùy chọn điều chỉnh luồng công việc (quy trình làm việc) để tối ưu hóa hiệu suất. Điểm nổi bật của n8n là tính linh hoạt, khả năng tự động lưu trữ trên máy chủ riêng và cộng đồng hỗ trợ sôi nổi, nó trở thành lựa chọn lý tưởng cho cá nhân hỗn doanh nghiệp muốn tiết kiệm thời gian và tăng hiệu quả công việc

Cài đặt từ Docker
Docker cung cấp những lợi thế sau:
- Cài đặt n8n trong môi trường sạch.
- Thiết lập dễ dàng hơn cho cơ sở dữ liệu bạn ưa thích.
- Có thể tránh các vấn đề do các hệ điều hành khác nhau gây ra vì Docker cung cấp một hệ thống thống nhất.
- Có thể tránh các vấn đề về khả năng tương thích do sự khác biệt giữa hệ điều hành và công cụ.
- Giúp việc di chuyển sang máy chủ hoặc môi trường mới trở nên đơn giản hơn.
Bạn cũng có thể sử dụng n8n trong Docker với Docker Compose . Bạn có thể tìm thấy cấu hình Docker Compose cho nhiều kiến trúc khác nhau trong kho lưu trữ n8n-hosting .
Điều kiện tiên quyết
Trước khi tiếp tục, hãy cài đặt Docker
Bắt đầu n8n
Từ thiết bị đầu cuối của bạn, hãy chạy:
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
Lệnh này tạo một ổ đĩa để lưu trữ dữ liệu liên tục, tải xuống hình ảnh n8n cần thiết và khởi động container của bạn, được hiển thị trên cổng 5678. Để lưu công việc của bạn giữa các lần khởi động lại container, nó cũng gắn một ổ đĩa docker, n8n_data, để lưu trữ dữ liệu của bạn cục bộ.
Sau khi chạy, bạn có thể truy cập n8n bằng cách mở: http://localhost:5678
Sử dụng với PostgreSQL
Theo mặc định, n8n sử dụng SQLite để lưu thông tin xác thực , các lần thực thi trước và quy trình công việc. n8n cũng hỗ trợ PostgreSQL, có thể cấu hình bằng các biến môi trường như được nêu chi tiết bên dưới.
Khi sử dụng PostgreSQL, điều quan trọng là phải lưu trữ dữ liệu được lưu trữ trong /home/node/.n8n thư mục. Điều này bao gồm dữ liệu người dùng n8n và quan trọng hơn nữa là khóa mã hóa cho thông tin xác thực. Đây cũng là tên của webhook khi sử dụng đường hầm n8n .
Nếu n8n không tìm thấy /home/node/.n8n thư mục khi khởi động, nó sẽ tự động tạo một thư mục. Trong trường hợp này, tất cả thông tin xác thực hiện có mà n8n đã lưu bằng khóa mã hóa khác sẽ không còn hoạt động nữa.
Lưu ý:
Việc lưu trữ dữ liệu tại /home/node/.n8n với PostgreSQL được xem là best practice và được khuyến khích sử dụng với cách này. Bên cạnh đó, bạn có thể sử dụng biến N8N_ENCRYPTION_KEY trong lúc start docker để bật tính năng mã hoá dữ liệu.
Để sử dụng n8n với PostgreSQL, hãy thực hiện các lệnh sau, thay thế các chỗ giữ chỗ (được mô tả trong dấu ngoặc nhọn, ví dụ <POSTGRES_USER>) bằng các giá trị thực của bạn:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
-e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
-e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
-e DB_POSTGRESDB_USER=<POSTGRES_USER> \
-e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
-e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Bạn có thể tìm thấy docker-compose tệp đầy đủ cho PostgreSQL trong kho lưu trữ n8n .
Cài đặt N8N với Docker-compose
Một cách khác để cài đặt N8N là sử dụng Docker-compose, công cụ này giúp hỗ trợ việc quản lý cấu hình docker tốt hơn. Bạn chuẩn bị các nội dung cho từng file như bên dưới và thực hiện theo các bước sau:
docker-compose.yml
version: '3.8'
volumes:
db_storage:
n8n_storage:
services:
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
ports:
- 5678:5678
links:
- postgres
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
.env
POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword
init-data.sh
#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi
Start dịch vụ
Để start dịch vụ n8s với PostgreSQL, chúng ta truy cập vào folder đang lưu trữ file docker-compose.yaml và sử dụng lệnh docker-compose :
Quan trọng: Trước khi bắt đầu, bạn cần thay đổi thông tin user/password mặc địch trong file .env !
docker-compose up -d
Để stop dịch vụ ta dùng lệnh:
docker-compose stop
Cấu hình
Các thông tin trong .env liên quan tới database mặc định được lưu trữ trong .env, bên nên thay đổi cho phù hợp với môi trường của mình.
Setting timezone
Để xác định múi giờ mà n8n nên sử dụng, bạn có thể đặt biến môi trường GENERIC_TIMEZONE . Các Node hướng lịch trình, như Node Schedule Trigger sử dụng biến này để xác định múi giờ chính xác.
Bạn có thể thiết lập múi giờ hệ thống, điều khiển giá trị date trả về của một số tập lệnh và lệnh, bằng cách sử dụng TZ biến môi trường.
Ví dụ này đặt cùng một múi giờ cho cả hai biến:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Europe/Berlin" \
-e TZ="Europe/Berlin" \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Hướng dẫn cập nhật
Cập nhật với Docker
Để cập nhật n8n, trong Docker, ta chỉ cần pull images n8n mới nhất về.
Bạn cũng có thể sử dụng dòng lệnh để lấy phiên bản mới nhất hoặc phiên bản cụ thể:
# Pull latest (stable) version
docker pull docker.n8n.io/n8nio/n8n
# Pull specific version
docker pull docker.n8n.io/n8nio/n8n:1.81.0
# Pull next (unstable) version
docker pull docker.n8n.io/n8nio/n8n:next
Sau khi pull image đã cập nhật, hãy stop container n8n của bạn và khởi động lại. Bạn cũng có thể sử dụng dòng lệnh. Thay thế <container_id> trong các lệnh bên dưới bằng ID container bạn tìm thấy trong lệnh đầu tiên:
# Find your container ID
docker ps -a
# Stop the container with the `<container_id>`
docker stop <container_id>
# Remove the container with the `<container_id>`
docker rm <container_id>
# Start the container
docker run --name=<container_name> [options] -d docker.n8n.io/n8nio/n8n
Cập nhật với Docker Compose
Ta điều chỉnh image trong file docker compose và chạy lệnh sau:
# Pull latest version
docker compose pull
# Stop and remove older version
docker compose down
# Start the container
docker compose up -d
n8n chỉ có thể truy cập được bằng cách sử dụng https và không sử dụng http.
Nâng cao khả năng mở rộng và hiệu suất
Khi chạy n8n ở quy mô lớn, với số lượng người dùng, quy trình làm việc hoặc thực thi lớn, bạn cần thay đổi cấu hình n8n để đảm bảo hiệu suất tốt.
n8n có thể chạy ở nhiều chế độ khác nhau tùy theo nhu cầu của bạn. queue Chế độ này cung cấp khả năng mở rộng tốt nhất. Tham khảo chế độ Hàng đợi để biết chi tiết về cấu hình.
Bạn có thể cấu hình lưu dữ liệu và cắt tỉa để cải thiện hiệu suất cơ sở dữ liệu. Tham khảo Dữ liệu thực thi để biết chi tiết.
Dữ liệu thực hiện
Tùy thuộc vào cài đặt thực thi và khối lượng, cơ sở dữ liệu n8n của bạn có thể tăng kích thước và hết dung lượng lưu trữ.
Để tránh điều này, n8n khuyên bạn không nên lưu dữ liệu không cần thiết và bật tính năng cắt bỏ dữ liệu thực thi cũ.
Để thực hiện việc này, hãy cấu hình các biến môi trường tương ứng .
Giảm dữ liệu đã lưu
Bạn có thể chọn dữ liệu thực thi nào n8n lưu. Ví dụ, bạn chỉ có thể lưu các thực thi dẫn đến Lỗi.
# Docker Compose
n8n:
environment:
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
Bật tính năng pruning dữ liệu
Bạn có thể bật chức năng cắt tỉa dữ liệu để tự động xóa các lần thực thi đã hoàn tất sau một khoảng thời gian nhất định. Nếu bạn không đặt EXECUTIONS_DATA_MAX_AGE, 336 giờ (14 ngày) là giá trị mặc định.
Bạn có thể chọn cắt tỉa dữ liệu thực thi đã hoàn tất trước thời gian được đặt trong EXECUTIONS_DATA_MAX_AGE, bằng cách sử dụng EXECUTIONS_DATA_PRUNE_MAX_COUNT. Điều này đặt số lượng thực thi tối đa để lưu trữ trong cơ sở dữ liệu. Khi bạn đạt đến giới hạn, n8n bắt đầu xóa các bản ghi thực thi cũ nhất. Điều này có thể giúp giải quyết các vấn đề về hiệu suất cơ sở dữ liệu, đặc biệt là nếu bạn sử dụng SQLite. Kích thước cơ sở dữ liệu vẫn có thể vượt quá giới hạn bạn đặt: các thực thi cũ chưa hoàn tất sẽ không bị xóa, ngay cả khi chúng có thể bị xóa.
# Docker Compose
n8n:
environment:
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
Lưu ý:
Nếu bạn chạy n8n bằng cơ sở dữ liệu SQLite mặc định, dung lượng đĩa của bất kỳ dữ liệu nào đã cắt tỉa sẽ không tự động được giải phóng mà được sử dụng lại cho dữ liệu thực thi trong tương lai. Để giải phóng dung lượng này, hãy cấu hình biến môi trường DB_SQLITE_VACUUM_ON_STARTUP hoặc chạy thủ công thao tác VACUUM .
Kết bài
Trên đây là hướng dẫn chi tiết cách cài đặt N8N – một công cụ mạnh mẽ giúp bạn tự động hóa quy trình làm việc một cách dễ dàng. Dù bạn chọn cài đặt qua Docker, trực tiếp trên server hay sử dụng nền tảng cloud, N8N đều mang lại sự linh hoạt và hiệu suất cao. Sau khi hoàn tất cài đặt, bạn có thể bắt đầu xây dựng các workflow để kết nối ứng dụng, xử lý dữ liệu tự động và tối ưu hóa công việc. Chúc bạn thành công trong hành trình khám phá và ứng dụng N8N! 🚀
Hướng dẫn cài đặt Percona XtraDB Cluster trên Ubuntu – Debian










Add Comment