ตั้งค่า SSL และ Domain สำหรับ n8n
คู่มือตั้งค่า SSL certificate และ custom domain สำหรับ n8n self-hosted ด้วย Nginx reverse proxy และ Let's Encrypt
การรัน n8n ด้วย HTTPS และ custom domain เป็นสิ่งจำเป็นสำหรับ production เพราะ Webhook ของหลายบริการเช่น LINE, Shopee, และ Stripe ต้องการ HTTPS เท่านั้น คู่มือนี้จะพาคุณตั้งค่าตั้งแต่ต้นจนจบ
บทความนี้สมมติว่าคุณมี n8n รันอยู่บน VPS (Ubuntu/Debian) แล้ว ถ้ายังไม่ได้ติดตั้ง ดูก่อนได้ที่ ติดตั้ง n8n ด้วย Docker หรือ คู่มือ Self-Host n8n ฉบับสมบูรณ์
สิ่งที่ต้องเตรียม
- VPS ที่รัน n8n อยู่แล้วบน port 5678
- Domain name ที่ชี้มายัง IP ของ VPS แล้ว (A record)
- Ubuntu 20.04/22.04 หรือ Debian 11/12
- สิทธิ์ root หรือ sudo
ตรวจสอบว่า domain ชี้มายัง VPS ถูกต้องแล้ว:
dig +short your-domain.com
# ควรแสดง IP ของ VPS คุณ
ขั้นตอนที่ 1: ติดตั้ง Nginx
sudo apt update
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
ตรวจสอบว่า Nginx รันอยู่:
sudo systemctl status nginx
ขั้นตอนที่ 2: ติดตั้ง Certbot
Certbot คือ tool สำหรับออกและต่ออายุ SSL certificate จาก Let’s Encrypt โดยอัตโนมัติ
sudo apt install -y certbot python3-certbot-nginx
ขั้นตอนที่ 3: สร้าง Nginx Config สำหรับ n8n
สร้างไฟล์ config ใหม่สำหรับ domain ของคุณ:
sudo nano /etc/nginx/sites-available/n8n
วางเนื้อหานี้ลงไป (แทนที่ your-domain.com ด้วย domain จริงของคุณ):
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# Timeout settings สำหรับ long-running workflows
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
เปิดใช้งาน config:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
ขั้นตอนที่ 4: ออก SSL Certificate
sudo certbot --nginx -d your-domain.com
Certbot จะถามข้อมูลบางอย่าง:
- Email address — สำหรับรับแจ้งเตือนเมื่อ cert ใกล้หมดอายุ
- Agree to terms — พิมพ์
Y - Share email with EFF — พิมพ์
Nได้ - Redirect HTTP to HTTPS — เลือก
2เพื่อ redirect อัตโนมัติ
Certbot จะแก้ไข Nginx config ให้อัตโนมัติและ reload
ขั้นตอนที่ 5: ตั้งค่า n8n ให้รู้จัก URL ใหม่
n8n ต้องรู้ว่าตัวเองทำงานอยู่บน domain อะไรเพื่อสร้าง Webhook URL ที่ถูกต้อง
เปิดไฟล์ .env หรือ docker-compose.yml ของ n8n แล้วเพิ่ม:
WEBHOOK_URL=https://your-domain.com
N8N_PROTOCOL=https
N8N_HOST=your-domain.com
จากนั้น restart n8n:
# สำหรับ Docker
docker restart n8n
# สำหรับ Docker Compose
docker compose restart n8n
ขั้นตอนที่ 6: ตรวจสอบ SSL
เปิดเบราว์เซอร์แล้วเข้า https://your-domain.com ควรเห็น:
- ไอคอนแม่กุญแจสีเขียว (หรือสีเทา) ในแถบ address
- n8n login page โหลดขึ้นมาปกติ
ตรวจสอบ certificate เพิ่มเติมด้วย:
sudo certbot certificates
SSL certificate จาก Let’s Encrypt มีอายุ 90 วัน Certbot จะต่ออายุให้อัตโนมัติผ่าน cron job ที่ติดตั้งมาพร้อมกัน
ตั้งค่า Firewall
เปิด port ที่จำเป็นและปิด port 5678 จากภายนอก:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw deny 5678/tcp # ปิด n8n direct access จากภายนอก
sudo ufw enable
หลังจากนี้ n8n จะเข้าถึงได้ผ่าน HTTPS เท่านั้น ไม่สามารถเข้าถึง port 5678 โดยตรงจากภายนอกได้
แก้ปัญหาที่พบบ่อย
Certbot ออก certificate ไม่ได้: “Could not bind to IPv4”
sudo systemctl stop nginx
sudo certbot certonly --standalone -d your-domain.com
sudo systemctl start nginx
Webhook URL ไม่ถูกต้องใน n8n
ตรวจสอบว่าตั้งค่า WEBHOOK_URL ใน environment ของ n8n เป็น https://your-domain.com (ไม่มี trailing slash) แล้ว restart n8n ใหม่
502 Bad Gateway
แสดงว่า Nginx ติดต่อกับ n8n ไม่ได้ ตรวจสอบว่า n8n รันอยู่:
docker ps | grep n8n
curl http://localhost:5678
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
n8n Advanced: 10 เทคนิคขั้นสูงสำหรับมืออาชีพ
รวม 10 เทคนิค n8n ขั้นสูงที่มืออาชีพใช้จริง ตั้งแต่ Error Handling, Sub-Workflow, Code Node ไปจนถึง API Pagination
สร้าง AI Agent ด้วย n8n: ให้ AI ทำงานแทนคุณ
วิธีสร้าง AI Agent ใน n8n ที่วางแผนและใช้ Tools เองได้ ตั้งแต่ตั้งค่าจนถึง Agent หลายขั้นตอนขั้นสูง
จัดการ API Pagination ใน n8n: ดึงข้อมูลครบทุกหน้า
เรียนรู้วิธีจัดการ API Pagination ทุกรูปแบบใน n8n ตั้งแต่ Page-based, Cursor-based จนถึง Link Header เพื่อดึงข้อมูลครบทุก Record