การติดตั้ง
คู่มือติดตั้งเซิร์ฟเวอร์ TH-Tunnel ทีละขั้นตอน
การติดตั้ง
คู่มือนี้ครอบคลุมการติดตั้งเซิร์ฟเวอร์ TH-Tunnel สำหรับ Self-hosting สำหรับการใช้ CLI Client อย่างเดียว ดูที่ การติดตั้ง CLI
สิ่งที่ต้องเตรียม
ก่อนติดตั้ง ตรวจสอบให้แน่ใจว่าคุณมี:
- เซิร์ฟเวอร์ (VPS) ที่ใช้ Ubuntu 22.04+ หรือ Debian 12+
- ชื่อโดเมนที่สามารถจัดการ DNS ได้
- ความรู้พื้นฐานเกี่ยวกับ Command Line
ขั้นตอนที่ 1: ติดตั้ง Dependencies
อัพเดทระบบและติดตั้งแพ็คเกจที่จำเป็น:
# อัพเดทแพ็คเกจ
sudo apt update && sudo apt upgrade -y
# ติดตั้งเครื่องมือพื้นฐาน
sudo apt install -y curl git unzip build-essential
# ติดตั้ง Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
# ติดตั้ง Node.js v20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
ขั้นตอนที่ 2: Clone โปรเจกต์
git clone https://github.com/YOUR_ORG/th-tunnel.git
cd th-tunnel
ขั้นตอนที่ 3: ตั้งค่า Environment
สร้างไฟล์ .env พร้อมการตั้งค่าของคุณ:
cp .env.example .env
nano .env
ตัวแปรที่จำเป็น
| ตัวแปร | คำอธิบาย | ตัวอย่าง |
|---|---|---|
NODE_ENV | โหมดการทำงาน | production |
JWT_SECRET | กุญแจลับสำหรับ Token (สุ่มมา 32+ ตัวอักษร) | a1b2c3d4e5f6... |
INTERNAL_SERVICE_TOKEN | กุญแจลับสำหรับสื่อสารระหว่าง Service | internal-abc123... |
DB_PASSWORD | รหัสผ่านฐานข้อมูล PostgreSQL | MySecureDbPass! |
การตั้งค่าโดเมน
| ตัวแปร | คำอธิบาย | ตัวอย่าง |
|---|---|---|
ROOT_DOMAIN | โดเมนหลักของระบบ | tunnel.example.com |
DASHBOARD_URL | URL ของ Dashboard | https://dashboard.example.com |
CONTROL_API_URL | URL ของ Control API | https://api.example.com |
การเชื่อมต่อฐานข้อมูล
| ตัวแปร | คำอธิบาย | ตัวอย่าง |
|---|---|---|
DATABASE_URL | Connection String ของ PostgreSQL | postgres://tunnel:pass@localhost:5432/tunnel |
REDIS_URL | Connection String ของ Redis | redis://localhost:6379 |
ตัวอย่างไฟล์ .env แบบเต็ม
# =============================================
# TH-Tunnel Configuration
# =============================================
# ระบบ
NODE_ENV=production
JWT_SECRET=your-super-secret-jwt-key-minimum-32-characters
INTERNAL_SERVICE_TOKEN=internal-service-key-change-me
DB_PASSWORD=MySecurePostgresPassword123
# โดเมน
ROOT_DOMAIN=tunnel.example.com
DASHBOARD_URL=https://dashboard.tunnel.example.com
CONTROL_API_URL=https://api.tunnel.example.com
# ฐานข้อมูล
DATABASE_URL=postgres://tunnel:MySecurePostgresPassword123@postgres:5432/tunnel
REDIS_URL=redis://redis:6379
# Edge Server (ถ้าแยก Server)
EDGE_HOST=edge.tunnel.example.com
EDGE_REGION=default
TCP_PORT_MIN=10000
TCP_PORT_MAX=20000
เปลี่ยน Secret ทั้งหมดจากค่าตัวอย่าง! ใช้ openssl rand -hex 32 เพื่อสร้างกุญแจลับที่ปลอดภัย
ขั้นตอนที่ 4: เตรียมฐานข้อมูล
เริ่ม Database และ Import Schema:
# เริ่ม PostgreSQL
docker-compose up -d postgres
# รอให้ Database พร้อม (10 วินาที)
sleep 10
# Import Schema
cat database.sql | docker-compose exec -T postgres psql -U tunnel -d tunnel
คุณจะเห็นข้อความ CREATE TABLE และ INSERT ยืนยันความสำเร็จ
ขั้นตอนที่ 5: เริ่มบริการ
รันบริการทั้งหมด:
# ติดตั้ง Dependencies
npm install
npm run build:css
# เริ่มด้วย Docker Compose
docker-compose up -d --build
ตรวจสอบว่าทุกอย่างทำงาน:
docker-compose ps
# ทุกบริการควรแสดงสถานะ 'Up'
ขั้นตอนที่ 6: ตั้งค่า Reverse Proxy
TH-Tunnel ต้องการ Reverse Proxy สำหรับ HTTPS เราแนะนำ Caddy:
{
email admin@your-domain.com
on_demand_tls {
ask http://localhost:4173/check-domain
}
}
dashboard.your-domain.com {
reverse_proxy localhost:4173
}
api.your-domain.com {
reverse_proxy localhost:3001
}
*.your-domain.com {
tls {
on_demand
}
reverse_proxy localhost:3002
}
การตรวจสอบ
หลังการติดตั้ง ตรวจสอบ:
- Dashboard เข้าถึงได้ที่
https://dashboard.your-domain.com - API ตอบสนองที่
https://api.your-domain.com/health - Tunnel Subdomain ทำงาน
การแก้ไขปัญหา
502 Bad Gateway
ตรวจสอบว่า Docker Container กำลังทำงาน: docker-compose ps
Database Connection Error
ตรวจสอบ DATABASE_URL ใน .env ตรงกับข้อมูล PostgreSQL
ปัญหา SSL Certificate
ตรวจสอบให้แน่ใจว่า DNS ของโดเมนชี้ไปยัง IP ของเซิร์ฟเวอร์
สำหรับการ Deploy หลายภูมิภาค ดูที่ Multi-Edge Setup