Chào bạn, Bình từ MeCode! Hôm nay, chúng ta sẽ cùng nhau tìm hiểu cách khắc phục lỗi DNS trong n8n khi chạy trên môi trường Docker. Đây là một trong những vấn đề thỉnh thoảng nó lại bị, và bạn chẳng biết nó tại sao? chỉ biết là nó làm cho thực thi workflow bị lỗi.

Chú ý: tùy vào cách cài N8N mà chỉnh sửa khác nhau. Nếu bạn dùng script cài n8n theo MeCode chia sẻ vui lòng tham khảo mẫu file docker compose bên dưới
Video hướng dẫn chi tiết Fix N8N DNS Error
Nguyên nhân
Lỗi DNS trong Docker thường xuất phát từ một số nguyên nhân chính:
DNS mặc định không ổn định: Docker có thể sử dụng DNS mặc định không đáng tin cậy.
Cấu hình mạng không phù hợp: Chế độ mạng mặc định của Docker có thể không cho phép container kết nối đúng cách
Firewall hoặc proxy: Chính sách bảo mật có thể chặn phân giải DNS.
Cách khắc phục
Với file cấu hình docker-compose.yml
thường nằm trong thư mục cài đặt của n8n, như theo script cài tự động của Bình: /home/n8n/docker-compose.yml
.
Bước 1: Tìm file docker-compose.yml
Bước 2: Điều chỉnh file docker-compose.yml
Mở file này bằng trình soạn thảo:
Lệnh:
nano docker-compose.yml
Bước 3: Thêm cấu hình DNS và Network
3.1 Nếu bạn dùng N8N qua Nginx proxy thì dùng cách sau
Chèn vào cấu hình như sau:
Chỉnh file docker-compose.yml:
Thêm mục dns và network mode như file dưới này.
Chú ý khoảng cách nhé
services:
n8n:
image: n8nio/n8n
container_name: n8n
dns:
- 8.8.8.8 # Google DNS
- 8.8.4.4 # Google DNS backup
network_mode: "bridge"
Giải thích
8.8.8.8 và 8.8.4.4 là DNS công cộng của Google, được tin cậy và nhanh chóng.
bridge là loại mạng Docker cho phép các container giao tiếp linh hoạt.
3.2 Nếu bạn dùng N8N qua Caddy (Theo script cài đặt của Mecode) thì dùng cách này
version: "3"
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=domain_cua_ban
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://domain_cua_ban
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
volumes:
- /home/n8n:/home/node/.n8n
networks:
- n8n_network
dns:
- 8.8.8.8
- 1.1.1.1
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /home/n8n/Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- n8n
networks:
- n8n_network
dns:
- 8.8.8.8
- 1.1.1.1
networks:
n8n_network:
driver: bridge
volumes:
caddy_data:
caddy_config:
Bước 4: Lưu file và khởi động lại Docker
Lưu thay đổi: Ctrl+O, Enter, Ctrl+X.
Khởi động lại:
docker-compose down
docker-compose up -d
Bước 5: Kiểm tra kết quả
Bạn chạy và kiểm tra lỗi còn xuất hiện nữa không nhé.
Kết luận
Hi vọng hướng dẫn này sẽ giúp bạn khắc phục triệt để lỗi DNS trong n8n chạy trên Docker, để hệ thống của bạn hoạt động ổn định