ngrok - เปิด Port แบบง่ายๆ
เคยไหมครับ… สร้างเว็บเสร็จแล้ว อยากให้เพื่อนลองดู แต่มันอยู่แค่ใน localhost 😭
หรือทำ Line Bot เสร็จแล้ว แต่ต้องการ URL สำหรับ Webhook…
ngrok ช่วยได้ครับ!
ngrok คืออะไร?
ngrok เป็นเครื่องมือที่สร้าง secure tunnel จากเครื่องของเราไปยัง ngrok server ครับ
พูดง่ายๆ คือมันจะเอา localhost ของเรา ไปสร้าง URL ให้คนอื่นเข้าถึงได้
┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ Your App │─────▶│ ngrok │─────▶│ Internet ││ localhost │ │ Tunnel │ │ Users │└─────────────┘ └─────────────┘ └─────────────┘ :8080 abc123.ngrok.ioข้อดีของ ngrok
- ✅ ไม่ต้อง forward port ผ่าน router
- ✅ ได้ HTTPS URL ฟรี
- ✅ เหมาะสำหรับทดสอบ webhook, Line Bot, Discord Bot
- ✅ ใช้งานง่ายมากครับ!
สิ่งที่ต้องมี
- บัญชี ngrok — สมัครฟรีได้ที่ dashboard.ngrok.com/signup
- Auth Token — จะได้หลังจากสมัครบัญชีเรียบร้อยครับ
ขั้นตอนที่ 1: ติดตั้ง ngrok
Windows
วิธีที่ 1 — ติดตั้งผ่าน Microsoft Store:
- เปิด Microsoft Store
- ค้นหา “ngrok”
- กด Install
วิธีที่ 2 — ดาวน์โหลดโดยตรง:
- ไปที่ download.ngrok.com
- ดาวน์โหลด ngrok สำหรับ Windows
- แตกไฟล์ไปยังโฟลเดอร์ที่ต้องการ (เช่น
C:\ngrok) - เพิ่ม path ไปยัง Environment Variables (optional)
macOS
brew install ngrokLinux (Debian/Ubuntu)
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \ | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \ && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \ | sudo tee /etc/apt/sources.list.d/ngrok.list \ && sudo apt update \ && sudo apt install ngrokยาวหน่อย แต่ copy paste ทีเดียวจบครับ
ตรวจสอบการติดตั้ง
ngrok helpถ้าเห็น help menu แสดงว่าติดตั้งสำเร็จแล้วครับ ✅
ขั้นตอนที่ 2: เชื่อมต่อบัญชี
หลังจากสมัครบัญชีที่ ngrok.com ให้ทำตามนี้ครับ:
- เข้าสู่ระบบที่ dashboard.ngrok.com
- ไปที่ “Your Authtoken” ในเมนูซ้าย
- คัดลอก Auth Token ของคุณ
จากนั้นรันคำสั่งนี้ใน terminal:
ngrok config add-authtoken YOUR_TOKEN_HEREตัวอย่าง:
ngrok config add-authtoken 2abc123def456ghi789jkl💡 หมายเหตุ: ทำขั้นตอนนี้แค่ครั้งเดียวครับ! Token จะถูกบันทึกไว้ในเครื่องให้เอง
ขั้นตอนที่ 3: เปิด Port!
กรณีที่ 1: เปิด Port สำหรับ Web Server (HTTP)
สมมติว่าเรามีเว็บรันอยู่ที่ localhost:3000:
ngrok http 3000จะได้หน้าจอแบบนี้ครับ:
ngrok (Ctrl+C to quit)
Session Status onlineAccount your-email@example.com (Plan: Free)Version 3.x.xRegion Asia Pacific (ap)Latency 25msWeb Interface http://127.0.0.1:4040Forwarding https://abc123.ngrok-free.app -> http://localhost:3000
Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00🎉 URL ที่ใช้แชร์คือ: https://abc123.ngrok-free.app
กรณีที่ 2: เปิด Port อื่นๆ
# Port 8080ngrok http 8080
# Port 5000 (Flask default)ngrok http 5000
# Port 5173 (Vite default)ngrok http 5173
# Port 4200 (Angular default)ngrok http 4200กรณีที่ 3: TCP Port (ไม่ใช่ HTTP)
สำหรับ SSH, Database, หรือ port อื่นๆ ครับ:
# SSH (port 22)ngrok tcp 22
# MySQL (port 3306)ngrok tcp 3306
# Minecraft Server (port 25565)ngrok tcp 25565จะได้ address แบบ 0.tcp.ngrok.io:12345 ให้เพื่อนใช้เชื่อมต่อครับ
ขั้นตอนที่ 4: ดู Web Interface
ngrok มี dashboard ในตัวครับ! ลองเปิด browser แล้วไปที่:
http://127.0.0.1:4040ที่นี่จะเห็น:
- 📊 สถิติการเชื่อมต่อ
- 📝 Request logs (HTTP requests ทั้งหมด)
- 🔄 Replay requests (ส่ง request ซ้ำได้)
เหมาะมากตอน debug webhook ครับ!
ตัวอย่างการใช้งานจริง
เปิดเว็บ React/Vue/Next.js
# React (default port 3000)ngrok http 3000
# Vue (default port 5173)ngrok http 5173
# Next.js devngrok http 3000เปิด Python Flask/FastAPI
# Flask default portngrok http 5000
# FastAPI with uvicornngrok http 8000ทำ Line Bot / Discord Bot Webhook
ngrok http 3000เอา URL ที่ได้ (เช่น https://abc123.ngrok-free.app) ไปใส่ใน:
- Line Developer Console → Messaging API → Webhook URL
- Discord Developer Portal → Bot → Interactions Endpoint URL
เปิด Minecraft Server ให้เพื่อนเข้า
ngrok tcp 25565จะได้ address แบบ 0.tcp.ngrok.io:12345 ให้เพื่อนใช้เชื่อมต่อครับ
เทคนิคเพิ่มเติม
1. ใส่รหัสผ่านป้องกัน
กันคนแปลกหน้าเข้ามาครับ:
ngrok http 3000 --basic-auth="username:password"ตอนเข้าเว็บจะต้องใส่ username/password ก่อน
2. ดู Logs แบบ Real-time
ngrok http 3000 --log=stdout3. เปิดหลาย Port พร้อมกัน
สร้างไฟล์ ngrok.yml:
version: "2"authtoken: YOUR_TOKEN
tunnels: frontend: addr: 3000 proto: http backend: addr: 8080 proto: http database: addr: 5432 proto: tcpจากนั้นรัน:
ngrok start --all4. แก้ไข Config
ngrok config editจะเปิด config file ขึ้นมาให้แก้ไขครับ
เพิ่มความปลอดภัย
Basic Authentication
ngrok http 3000 --basic-auth="user:pass123"ตอนเข้าเว็บจะขอ username/password ก่อนครับ
OAuth (Google Login)
สำหรับความปลอดภัยขั้นสูง สามารถตั้งค่าให้ login ด้วย Google ก่อนเข้าได้ครับ
แก้ไขไฟล์ ngrok.yml:
endpoints: - name: my-app url: YOUR_DOMAIN traffic_policy: on_http_request: - actions: - type: oauth config: provider: google upstream: url: 8080 protocol: http1ปัญหาที่เจอบ่อย
1. “Too many connections”
สาเหตุ: Free tier มี connection limit ครับ
แก้ไข: รอสักครู่แล้วลองใหม่ หรืออัปเกรดแผน
2. “Session expired”
สาเหตุ: Free tier session หมดอายุ
แก้ไข: รัน ngrok http ใหม่อีกครั้งครับ
3. ngrok ทำงานแต่เข้าเว็บไม่ได้
สาเหตุ: App ไม่ได้รันหรือรันผิด port
แก้ไข: ตรวจสอบว่า app รันอยู่จริงที่ port ที่ระบุ
# Windows - ดูว่า port ถูกใช้งานหรือไม่netstat -an | findstr 3000
# Linux/Macnetstat -an | grep 30004. URL เปลี่ยนทุกครั้งที่รัน
ใช่ครับ Free plan เป็นแบบนี้ 😅
ถ้าอยากได้ URL คงที่ ต้องอัปเกรดแผน หรือใช้ custom domain ครับ
สรุปคำสั่งที่ใช้บ่อย
| ทำอะไร | คำสั่ง |
|---|---|
| เปิด HTTP port | ngrok http 3000 |
| เปิด TCP port | ngrok tcp 22 |
| เพิ่ม auth token | ngrok config add-authtoken TOKEN |
| ใส่รหัสผ่าน | ngrok http 3000 --basic-auth="user:pass" |
| เปิดทุก tunnel | ngrok start --all |
| แก้ไข config | ngrok config edit |
| ดู dashboard | เข้า http://localhost:4040 |
Links ที่มีประโยชน์
- ngrok Dashboard — จัดการบัญชีและดู token
- ngrok Documentation — เอกสารทางการ
- ngrok Pricing — ดูราคาแผนต่างๆ
- ngrok Download — ดาวน์โหลด
ทำไมถึงชอบใช้
- ง่ายมาก — คำสั่งเดียวจบ
- ได้ HTTPS ฟรี — ไม่ต้องทำ certificate เอง
- Debug ได้ — เห็น request ทุกอันที่เข้ามา
- ไม่ต้องยุ่งกับ router — ใครก็ทำได้
บอกเลยว่า ngrok นี่ใช้บ่อยมากครับ โดยเฉพาะตอนทำ bot หรือ demo งานให้คนอื่นดู
ไม่ว่าจะทดสอบ webhook, demo ให้ลูกค้าดู, หรือแชร์งานกับเพื่อน — ngrok ทำให้ทุกอย่างง่ายขึ้นมากเลยครับ
ลองใช้ดูนะครับ!
ngrok http 3000🚀