Giới thiệu
Tự động hóa quy trình làm việc đang trở thành xu hướng quan trọng trong thế giới công nghệ hiện đại. n8n đã nhanh chóng trở thành sự lựa chọn yêu thích của các kỹ sư DevOps và lập trình viên nhờ vào khả năng xây dựng các quy trình tự động hóa mạnh mẽ thông qua giao diện trực quan. Tuy nhiên, điều gì sẽ xảy ra nếu môi trường của bạn không kết nối internet (air-gapped)?
Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu quy trình từng bước để cài đặt và cấu hình n8n trên máy chủ RHEL không kết nối internet.
Tại Sao Chọn Môi Trường Không Kết Nối Internet?
Hệ thống không kết nối internet thường được sử dụng trong các lĩnh vực tài chính, quốc phòng, y tế và doanh nghiệp nhằm bảo mật. Mặc dù cung cấp độ bảo mật cao, nhưng việc thiết lập các ứng dụng như n8n trong môi trường này sẽ gặp nhiều khó khăn, vì bạn không thể thực hiện các lệnh như docker pull hay npm install trực tiếp.
Yêu Cầu Đầu Vào
Trước khi bắt đầu, bạn cần chuẩn bị một số điều kiện sau:
- Máy chủ RHEL 8.x hoặc 9.x đã được cài đặt
- Quyền truy cập root (sudo) đến máy chủ
- Một máy tính có kết nối internet để chuẩn bị các gói và hình ảnh
- Podman hoặc Docker đã được cài đặt trên máy chủ RHEL (chọn một tùy theo chính sách của tổ chức bạn)
- SCP hoặc phương pháp truyền tải khác để chuyển file vào môi trường không kết nối
1. Tải Hình Ảnh Docker n8n (Trên Máy Tính Kết Nối Internet)
Vì máy chủ RHEL của bạn không thể tải trực tiếp từ Docker Hub, bạn cần tải trước hình ảnh n8n:
docker pull n8nio/n8n:latest
docker save n8nio/n8n:latest -o n8n.tar
Lệnh này sẽ tạo ra một file hình ảnh n8n.tar. Tiếp theo, hãy chuyển file n8n.tar vào máy chủ RHEL của bạn bằng winscp hoặc phương pháp mà bạn ưa thích.
2. Tải Hình Ảnh Vào Máy Chủ RHEL Không Kết Nối
Sau khi file tar đã có trong môi trường của bạn, thực hiện lệnh sau:
docker load -i n8n.tar
Xác minh hình ảnh đã được tải thành công:
docker images | grep n8n
Bạn sẽ thấy n8nio/n8n:latest trong danh sách hình ảnh.
3. Thiết Lập Thư Mục Lưu Trữ Bền Vững
n8n cần có lưu trữ bền vững cho quy trình làm việc, thông tin xác thực và thực thi. Tạo các thư mục:
mkdir -p /opt/n8n/.n8n
chown -R 1000:1000 /opt/n8n/.n8n
4. Chạy n8n Với Biến Môi Trường
Sử dụng lệnh sau để chạy n8n:
docker run -d \
--name n8n \
-p 5678:5678 \
-v /opt/n8n/.n8n:/home/node/.n8n \
-e N8N_HOST=yourserver.domain.com \
-e N8N_PORT=5678 \
-e N8N_PROTOCOL=http \
-e GENERIC_TIMEZONE=Asia/Kolkata \
n8nio/n8n:latest
5. Cấu Hình Reverse Proxy (Tùy Chọn Nhưng Được Khuyến Nghị)
Đối với thiết lập sản xuất, bạn có thể muốn chạy n8n phía sau Nginx hoặc Apache để sử dụng SSL và truy cập theo tên miền. Ví dụ cấu hình Nginx:
server {
listen 80;
server_name n8n.example.com;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
}
}
Reload lại Nginx:
systemctl reload nginx
6. Thiết Lập Xác Thực
Mặc định, n8n không yêu cầu đăng nhập trừ khi được cấu hình. Để bảo mật hơn, hãy thiết lập xác thực:
docker run -d \
--name n8n \
-p 5678:5678 \
-v /opt/n8n/.n8n:/home/node/.n8n \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=StrongPassword123 \
n8nio/n8n:latest
7. Dịch Vụ Systemd (Tùy Chọn)
Nếu bạn không muốn chạy n8n thủ công mỗi lần, hãy tạo một đơn vị systemd:
# /etc/systemd/system/n8n.service
[Unit]
Description=n8n Automation
After=docker.service
Requires=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a n8n
ExecStop=/usr/bin/docker stop -t 2 n8n
[Install]
WantedBy=multi-user.target
Kích hoạt và khởi động dịch vụ:
systemctl enable n8n
systemctl start n8n
8. Kiểm Tra Cuối Cùng
Truy cập vào địa chỉ sau:
http://<yourserver>:5678
Bạn sẽ thấy trình chỉnh sửa quy trình n8n đang hoạt động an toàn trong môi trường RHEL không kết nối của bạn.
Những Cải Tiến Trong Tương Lai
- Cấu hình PostgreSQL bên ngoài cho sản xuất thay vì SQLite
- Kích hoạt TLS/SSL với Certbot hoặc chứng chỉ tùy chỉnh
- Thiết lập HA (High Availability) với nhiều phiên bản n8n
- Thêm giám sát với Prometheus + Grafana
Việc cài đặt n8n trong môi trường RHEL không kết nối yêu cầu một số công việc chuẩn bị, nhưng khi bạn đã xử lý việc truyền tải hình ảnh và cấu hình, nó sẽ hoạt động mượt mà. Với thiết lập này, bạn có thể xây dựng các quy trình làm việc mạnh mẽ một cách an toàn, ngay cả trong những mạng lưới bị hạn chế nhất.
FAQ
1. n8n có an toàn không?
Có, n8n có thể được cấu hình để sử dụng xác thực và chạy phía sau proxy ngược, giúp bảo mật hơn.
2. Tôi có thể sử dụng n8n cho những dự án nào?
Bạn có thể sử dụng n8n cho nhiều loại dự án tự động hóa khác nhau, từ việc tích hợp API, gửi email tự động, đến xây dựng quy trình làm việc phức tạp hơn.
3. Làm thế nào để nâng cấp n8n?
Để nâng cấp n8n, bạn cần tải hình ảnh mới và lặp lại quy trình tải và khởi động lại n8n bằng hình ảnh mới.
4. Có cần kiến thức lập trình để sử dụng n8n không?
Không, n8n được thiết kế để dễ sử dụng với giao diện kéo và thả, nhưng kiến thức lập trình sẽ giúp bạn tận dụng tối đa sức mạnh của nó.