Hướng dẫn tự host n8n trên AWS EC2 với Docker (Từng bước)
Bạn có bao giờ muốn tự mình chạy một máy chủ tự động hóa mà không cần phụ thuộc vào các dịch vụ SaaS bên thứ ba? n8n chính là một trong những giải pháp linh hoạt và tiết kiệm chi phí để thực hiện điều này. Trong bài viết này, tôi sẽ hướng dẫn bạn cách tự host n8n trên một phiên bản EC2 của AWS bằng Docker.
Mục lục
- Tại sao chọn EC2 cho n8n?
- Quy trình triển khai (Phiên bản ngắn)
- Thực hành: Từng bước cài đặt n8n
- Cách bảo mật với HTTPS
- Mẹo và Thực tiễn tốt nhất
- Những cạm bẫy phổ biến
- Hỏi đáp
- Kết luận
Tại sao chọn EC2 cho n8n?
EC2 là dịch vụ tính toán chính của Amazon. Dưới đây là một số lợi ích khi sử dụng EC2 cho n8n:
- Kiểm soát hoàn toàn: Bạn có toàn quyền kiểm soát phiên bản (hệ điều hành, lưu trữ, mạng).
- Linh hoạt trong việc mở rộng: Có thể mở rộng hoặc thu hẹp tùy thuộc vào khối lượng công việc.
- Tích hợp với các dịch vụ AWS khác: Nếu bạn muốn mở rộng hơn sau này.
Và vì n8n chạy tốt trong môi trường Docker, nên EC2 là lựa chọn tự nhiên.
Quy trình triển khai (Phiên bản ngắn)
Dưới đây là cái nhìn tổng quan về quy trình triển khai:
-
Khởi động một phiên bản EC2
Bắt đầu với Ubuntu 22.04 LTS. Ngay cả phiên bảnt3.microcũng đủ cho việc thử nghiệm. -
Cấu hình nhóm bảo mật
Mở các cổng vào: 22 (SSH), 80, và 443 (HTTP/HTTPS). Nếu bạn đang thử nghiệm mà không có SSL, bạn có thể mở cổng 5678 trực tiếp, nhưng điều này không an toàn. -
Cài đặt Docker & Docker Compose
bashsudo apt update && sudo apt upgrade -y sudo apt install docker.io docker-compose -y -
Cài đặt n8n với Docker Compose
Tạo một tệpdocker-compose.ymlđơn giản ánh xạ cổng 5678 (hoặc sử dụng một reverse proxy như Nginx/Caddy cho SSL). -
Bảo mật với HTTPS
Trỏ một tên miền tới Elastic IP của EC2, sau đó sử dụng Let’s Encrypt (Certbot) hoặc Caddy để tự động tạo chứng chỉ. -
Cấu hình biến môi trường
Ví dụ:bashN8N_HOST=n8n.example.com N8N_PROTOCOL=https WEBHOOK_URL=https://n8n.example.com/ N8N_ENCRYPTION_KEY=$(openssl rand -base64 24)Khởi động lại Docker Compose sau khi chỉnh sửa.
Thực hành: Từng bước cài đặt n8n
Bây giờ, hãy xem chi tiết từng bước trong việc cài đặt n8n trên EC2.
Bước 1: Khởi động EC2 Instance
- Đăng nhập vào AWS Management Console và chọn EC2.
- Nhấn vào “Launch Instance” và chọn Ubuntu 22.04 LTS.
- Chọn kích thước phiên bản, ví dụ như
t3.microđể thử nghiệm. - Cấu hình nhóm bảo mật với các cổng đã đề cập ở trên.
Bước 2: Kết nối với EC2 Instance
- Sử dụng SSH để kết nối với phiên bản EC2 của bạn:
bash
ssh -i your-key.pem ubuntu@your-elastic-ip
Bước 3: Cài đặt Docker và Docker Compose
Như đã đề cập ở trên, chạy lệnh để cài đặt Docker và Docker Compose.
Bước 4: Tạo tệp docker-compose.yml
Tạo tệp docker-compose.yml với nội dung:
yaml
version: '3'
services:
n8n:
image: n8nio/n8n
ports:
- '5678:5678'
environment:
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- N8N_ENCRYPTION_KEY=$(openssl rand -base64 24)
volumes:
- ./n8n_data:/home/node/.n8n
Bước 5: Khởi động n8n
- Chạy lệnh sau để khởi động n8n:
bash
docker-compose up -d
Cách bảo mật với HTTPS
Để bảo mật, bạn cần thiết lập HTTPS cho n8n. Sử dụng Let’s Encrypt hoặc Caddy là cách dễ nhất:
- Trỏ tên miền của bạn tới Elastic IP của EC2.
- Sử dụng Certbot hoặc Caddy để tạo chứng chỉ SSL.
- Cập nhật cấu hình trong
docker-compose.ymlđể bổ sung các thông tin về SSL.
Mẹo và Thực tiễn tốt nhất
- Luôn sử dụng HTTPS: Đảm bảo rằng bạn luôn chạy n8n qua HTTPS để bảo vệ dữ liệu.
- Sao lưu thường xuyên: Đảm bảo rằng bạn có một phương pháp sao lưu cho workflows của mình.
- Giám sát: Sử dụng các công cụ giám sát để theo dõi hiệu suất của EC2.
Những cạm bẫy phổ biến
Dưới đây là một số vấn đề thường gặp mà bạn nên chú ý:
- Trình duyệt báo trang web không an toàn: Điều này xảy ra nếu không có SSL. Thêm HTTPS.
- Container liên tục khởi động lại: Kiểm tra tệp
.envcủa bạn để đảm bảo rằng không thiếu các khóa nhưN8N_ENCRYPTION_KEY. - Không thể SSH vào EC2: Đảm bảo rằng bạn sử dụng đúng tên người dùng (
ubuntu@cho Ubuntu) và cặp khóa của bạn đã được thêm vào. - Workflows biến mất sau khi khởi động lại: Sử dụng Docker volume hoặc kết nối n8n với PostgreSQL thay vì dựa vào SQLite.
Hỏi đáp
Q1: Tôi cần phải làm gì nếu không thể truy cập vào n8n?
A1: Kiểm tra cấu hình nhóm bảo mật và đảm bảo rằng cổng 5678 đã được mở.
Q2: Có cách nào để tăng cường bảo mật không?
A2: Sử dụng VPN hoặc SSH tunneling để truy cập vào n8n một cách an toàn hơn.
Kết luận
Bài viết này đã cung cấp cho bạn hướng dẫn chi tiết để tự host n8n trên AWS EC2 bằng Docker. Nếu bạn thử nghiệm thành công, hãy cho tôi biết kết quả của bạn hoặc chia sẻ về các nhà cung cấp đám mây khác mà bạn đã triển khai n8n.
👉 Để tìm hiểu chi tiết hơn, bạn có thể tham khảo bài viết đầy đủ trên blog của tôi: Tự host n8n trên AWS EC2 với Docker.