หากคุณต้องการรัน WordPress หลายเว็บไซต์บน Cloud VPS เครื่องเดียวของ de.co.th การใช้ Traefik เป็น Reverse Proxy ร่วมกับ Docker เป็นวิธีที่มีประสิทธิภาพสูง Traefik จัดการ Routing, SSL Certificate และ Load Balancing แบบอัตโนมัติ บทความนี้จะแนะนำวิธีติดตั้งทั้งหมดแบบ Step-by-Step
ทำไมต้อง Traefik?
Traefik เป็น Modern Reverse Proxy ที่ออกแบบมาสำหรับ Container โดยเฉพาะ เมื่อเทียบกับ Nginx Reverse Proxy แบบตั้งค่าแบบ Manual แล้ว Traefik มีข้อดีคือ:
- ตรวจหา Container ใหม่แบบอัตโนมัติผ่าน Docker Labels
- ขอ SSL Certificate จาก Let’s Encrypt แบบอัตโนมัติ
- มี Dashboard สำหรับติดตามการไหลของข้อมูล
- รองรับ HTTP/2 และ WebSocket โดยไม่ต้องตั้งค่าเพิ่มเติม
สร้างโครงสร้างของโปรเจกต์
จัดโครงสร้างโปรเจกต์สำหรับ Traefik และ WordPress หลายเว็บไซต์:
mkdir -p /opt/docker-multi-wp
cd /opt/docker-multi-wp
mkdir -p traefik site1 site2
touch traefik/acme.json
chmod 600 traefik/acme.json
ตั้งค่า Traefik
สร้างไฟล์ docker-compose.yml สำหรับ Traefik:
# traefik/docker-compose.yml
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: always
command:
- --api.dashboard=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
- --certificatesresolvers.letsencrypt.acme.email=admin@yourdomain.com
- --certificatesresolvers.letsencrypt.acme.storage=/acme.json
- --entrypoints.web.http.redirections.entrypoint.to=websecure
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./acme.json:/acme.json
networks:
- traefik_network
labels:
- traefik.enable=true
- traefik.http.routers.dashboard.rule=Host(`traefik.yourdomain.com`)
- traefik.http.routers.dashboard.service=api@internal
- traefik.http.routers.dashboard.middlewares=auth
- traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$xyz$$hashedpassword
networks:
traefik_network:
external: true
สร้าง Docker Network
สร้าง Shared Network สำหรับให้ Traefik เชื่อมต่อกับ WordPress Container ทุกตัว:
docker network create traefik_network
ตั้งค่า WordPress เว็บแรก
สร้างไฟล์ docker-compose.yml สำหรับ WordPress เว็บแรก พร้อม Labels สำหรับ Traefik:
# site1/docker-compose.yml
version: '3.8'
services:
db:
image: mariadb:10.11
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: ${DB_PASS}
volumes:
- db_data:/var/lib/mysql
networks:
- internal
wordpress:
image: wordpress:6-apache
restart: always
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: ${DB_PASS}
volumes:
- wp_data:/var/www/html
networks:
- internal
- traefik_network
labels:
- traefik.enable=true
- traefik.http.routers.site1.rule=Host(`site1.yourdomain.com`)
- traefik.http.routers.site1.entrypoints=websecure
- traefik.http.routers.site1.tls.certresolver=letsencrypt
volumes:
db_data:
wp_data:
networks:
internal:
traefik_network:
external: true
เพิ่ม WordPress เว็บที่สอง
คัดลอกโครงสร้างเดียวกันสำหรับ WordPress เว็บที่สอง เปลี่ยนเฉพาะ Domain และชื่อ Service:
# site2/docker-compose.yml - เปลี่ยนเฉพาะส่วนนี้
labels:
- traefik.enable=true
- traefik.http.routers.site2.rule=Host(`site2.yourdomain.com`)
- traefik.http.routers.site2.entrypoints=websecure
- traefik.http.routers.site2.tls.certresolver=letsencrypt
รัน Service ทั้งหมดพร้อมกัน
เริ่มรัน Traefik ก่อน แล้วตามด้วย WordPress แต่ละเว็บไซต์:
# รัน Traefik
cd /opt/docker-multi-wp/traefik
docker-compose up -d
# รัน Site 1
cd /opt/docker-multi-wp/site1
docker-compose up -d
# รัน Site 2
cd /opt/docker-multi-wp/site2
docker-compose up -d
# ตรวจสอบทุก Container
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
เพิ่มเว็บไซต์ใหม่ได้ง่าย
ข้อดีของ Traefik คือเมื่อต้องการเพิ่มเว็บไซต์ใหม่ คุณเพียงแค่:
- คัดลอกโครงสร้างของโปรเจกต์
- เปลี่ยน Domain ใน Labels
- รัน docker-compose up -d
Traefik จะตรวจหา Container ใหม่โดยอัตโนมัติ ขอ SSL Certificate อัตโนมัติ โดยไม่ต้องแก้ไขตั้งค่า Traefik เลย
สรุป
การใช้ Traefik Reverse Proxy ร่วมกับ Docker บน Cloud VPS ของ de.co.th ช่วยให้คุณรัน WordPress หลายเว็บไซต์ได้อย่างมีประสิทธิภาพสูง โดย Traefik จัดการ Routing และ SSL แบบอัตโนมัติ ทำให้การเพิ่มเว็บไซต์ใหม่ทำได้ง่ายและสามารถดูแลเว็บหลายแห่งบน VPS เครื่องเดียวได้อย่างมีประสิทธิภาพ เหมาะสมสำหรับผู้ที่ต้องดูแลเว็บไซต์หลายแห่งบน VPS เครื่องเดียว

