การติดตั้ง

คู่มือติดตั้งเซิร์ฟเวอร์ 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กุญแจลับสำหรับสื่อสารระหว่าง Serviceinternal-abc123...
DB_PASSWORDรหัสผ่านฐานข้อมูล PostgreSQLMySecureDbPass!

การตั้งค่าโดเมน

ตัวแปรคำอธิบายตัวอย่าง
ROOT_DOMAINโดเมนหลักของระบบtunnel.example.com
DASHBOARD_URLURL ของ Dashboardhttps://dashboard.example.com
CONTROL_API_URLURL ของ Control APIhttps://api.example.com

การเชื่อมต่อฐานข้อมูล

ตัวแปรคำอธิบายตัวอย่าง
DATABASE_URLConnection String ของ PostgreSQLpostgres://tunnel:pass@localhost:5432/tunnel
REDIS_URLConnection String ของ Redisredis://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
}

การตรวจสอบ

หลังการติดตั้ง ตรวจสอบ:

  1. Dashboard เข้าถึงได้ที่ https://dashboard.your-domain.com
  2. API ตอบสนองที่ https://api.your-domain.com/health
  3. 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