th คืออะไร
th คือ command line ของ ThailandHosting ทำงานผ่าน API เดียวกับ Console โดยทำงานในนามบัญชีของคุณ (หลัง th auth login) หรือในนาม API Key (ใน CI) คำสั่งแบ่งกลุ่มตามบริการ: th <group> <command> [arguments] [parameters]
th auth login
th container deploy api --source .
th static-site deploy docs ./dist
th object-storage cp -r ./backups th://my-bucket/backups
th database connect app-db
th queue tail jobsth help แสดงทุกคำสั่ง ใส่ --help ต่อท้ายคำสั่งใดก็ได้ (หรือรัน th help container deploy) เพื่อดูพารามิเตอร์ของคำสั่งนั้น ถ้าพิมพ์แค่ชื่อกลุ่ม เช่น th container จะแสดงคำสั่งทั้งหมดในกลุ่ม
ใส่พารามิเตอร์และอาร์กิวเมนต์สลับลำดับได้: th container deploy api --port 3000 กับ th container deploy --port 3000 api ให้ผลเหมือนกัน แฟล็กที่เปิดอยู่โดยค่าเริ่มต้นปิดได้ด้วย --no- เช่น --no-ack
ติดตั้ง
สคริปต์ติดตั้งจะดาวน์โหลด Release ล่าสุดจาก GitHub และตรวจกับไฟล์ SHA256SUMS ของ Release นั้นก่อนติดตั้งทุกครั้ง
# Linux, macOS
curl -fsSL https://raw.githubusercontent.com/mrzack99s/thailandhosting-cli/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/mrzack99s/thailandhosting-cli/main/install.ps1 | iex| ระบบ | ตำแหน่งที่ติดตั้ง th | ตัวเลือก |
|---|---|---|
| Linux, macOS | /usr/local/bin หรือ ~/.local/bin ถ้าเขียนโฟลเดอร์แรกไม่ได้ | TH_VERSION=0.1.0 เลือกเวอร์ชัน TH_INSTALL_DIR เลือกโฟลเดอร์ |
| Windows | %LOCALAPPDATA%\Programs\th และเพิ่มลงใน PATH ของผู้ใช้ (เปิด terminal ใหม่หลังติดตั้ง) | $env:TH_VERSION เลือกเวอร์ชัน |
หรือดาวน์โหลดไฟล์บีบอัดสำหรับระบบของคุณจาก GitHub Releases หรือ build เองด้วย Go 1.23 ขึ้นไป:
go install github.com/mrzack99s/thailandhosting-cli/cmd/th@latestตรวจเวอร์ชันที่ติดตั้งด้วย th version
เข้าสู่ระบบ
- รัน
th auth loginCLI จะแสดงลิงก์และรหัส แล้วเปิด Console ในเบราว์เซอร์ (ถ้าใส่--no-browserจะแสดงแค่ลิงก์ เหมาะกับเซิร์ฟเวอร์ที่ไม่มีหน้าจอ) - ใน Console ตรวจว่ารหัสตรงกับใน terminal แล้วกด อนุญาต
- terminal จะแสดงว่าคุณเข้าสู่ระบบเป็นใคร ถ้ายังไม่ได้ตั้ง Project ไว้ Project แรกของคุณจะถูกใช้เป็น Project ปัจจุบัน
การเข้าสู่ระบบใช้ได้ 90 วัน และบันทึกไว้ในไฟล์ config ของ th (th/config.json ในโฟลเดอร์ config ของผู้ใช้ อ่านได้เฉพาะคุณ) และแสดงใน Console ที่ บัญชี → อุปกรณ์ที่เข้าสู่ระบบ ซึ่งคุณสั่งออกจากระบบได้จากทุกที่
th auth status # ดูว่า CLI ทำงานในนามใคร (หรือ th whoami)
th auth logout # ออกจากระบบ token นี้และลบออกจากไฟล์ configใน CI ไม่ต้องเข้าสู่ระบบ ให้ตั้ง API Key ใน TH_API_KEY แทน (ดู ใช้ใน CI) เมื่อตั้ง TH_API_KEY ไว้ ค่านี้จะมาก่อนการเข้าสู่ระบบที่บันทึกไว้
เลือก Project และ Region
คำสั่งส่วนใหญ่ทำงานกับ Project เดียว บริการที่สร้างใหม่ต้องมี Region ด้วย ตั้งครั้งเดียวด้วย th config หรือระบุในแต่ละคำสั่งก็ได้:
th projects list
th config set project acme # ID หรือ slug
th regions list
th config set region bkk
th config listแต่ละค่าจะใช้จากแหล่งแรกที่มีค่านั้น ตามลำดับนี้:
- พารามิเตอร์ในคำสั่ง:
--project,--region,--endpoint - ตัวแปรสภาพแวดล้อม:
TH_PROJECT,TH_REGION,TH_ENDPOINT - ไฟล์ config ที่ตั้งด้วย
th config set
ถ้าไม่ได้ตั้ง Region คำสั่งที่สร้างบริการจะใช้ Region เริ่มต้นของแพลตฟอร์มและแจ้งให้ทราบ API Key ผูกกับ Project เดียว ดังนั้นเมื่อใช้ TH_API_KEY Project จะมาจาก Key
พารามิเตอร์ส่วนกลาง
ทุกคำสั่งรับพารามิเตอร์เหล่านี้ นอกเหนือจากพารามิเตอร์ของตัวเอง
| ชื่อ | ชนิด | คำอธิบาย |
|---|---|---|
--project | ข้อความ | Project ID or slug (default: config / TH_PROJECT) |
--region | ข้อความ | Region ID (default: config / TH_REGION) |
--endpoint | ข้อความ | API endpoint (default: config / TH_ENDPOINT, else https://cloud.thailandhosting.com) |
--format | ข้อความ | Output format: text or json |
--quiet | แฟล็ก | Do not prompt; assume yes |
--help (หรือ -h) แสดงวิธีใช้และพารามิเตอร์ของคำสั่งแทนการรันคำสั่ง
รูปแบบผลลัพธ์
โดยค่าเริ่มต้น คำสั่งจะแสดงผลเป็นข้อความสำหรับคนอ่าน: ตารางที่มีแถวหัวตาราง หรือประโยคสั้น ๆ บอกสิ่งที่ทำไป ถ้าใส่ --format json จะแสดง JSON จาก API แทน สำหรับสคริปต์และเครื่องมืออย่าง jq
th container services list
th container services list --format json | jq -r '.[].name'- Standard output มีเฉพาะผลลัพธ์: ตาราง JSON ไฟล์ที่ขอ (
th object-storage cat) หรือข้อความใน Queue (th queue receive) - Standard error มีความคืบหน้าและคำแนะนำ: “Packing sources…”, log ของ Build, ความคืบหน้าการอัปโหลด คำถามยืนยัน และข้อผิดพลาด การ redirect standard output ลงไฟล์จึงได้ข้อมูลที่สะอาด
- ข้อผิดพลาดมีรูปแบบ
ERROR: (th.container.deploy) …พร้อมชื่อคำสั่งที่ล้มเหลว
คำสั่งที่ลบหรือแทนที่ข้อมูลจะถาม Do you want to continue (Y/n)? ก่อน --quiet จะตอบ yes ให้ ถ้าไม่ใส่และคำสั่งถามไม่ได้ (standard input ไม่ใช่ terminal) คำสั่งจะหยุดพร้อมข้อผิดพลาดแทนการเดาคำตอบ
ตัวแปรสภาพแวดล้อม
| ตัวแปร | หน้าที่ |
|---|---|
TH_API_KEY | API Key จาก Console (Integrations → API keys) ใช้แทนการเข้าสู่ระบบที่บันทึกไว้ สิทธิ์ (scope) ของ Key กำหนดว่า th ทำอะไรได้บ้าง |
TH_TOKEN | token ที่ส่งแทนการเข้าสู่ระบบที่บันทึกไว้ (ค่าที่ขึ้นต้นด้วย thk_ จะถือเป็น API Key) th auth print-access-token แสดง token ที่ใช้อยู่ |
TH_ENDPOINT | ที่อยู่ API ที่ CLI เรียก ค่าเริ่มต้น: https://cloud.thailandhosting.com |
TH_PROJECT | Project ระบุด้วย ID หรือ slug |
TH_REGION | Region สำหรับบริการที่สร้างใหม่ |
TH_OBJECT_STORAGE_KEY_ID, TH_OBJECT_STORAGE_SECRET | Access key ของ Object Storage สำหรับคำสั่งจัดการไฟล์ของ th object-storage ต้องตั้งทั้งคู่หรือไม่ตั้งเลย |
TH_QUEUE_KEY_ID, TH_QUEUE_SECRET | Access key ของ Queue Service สำหรับการส่ง รับ และคำสั่งอื่นที่ทำงานกับข้อความ ต้องตั้งทั้งคู่หรือไม่ตั้งเลย |
Object Storage และ Queue Service ใช้ Access key ของตัวเอง ไม่ใช่การเข้าสู่ระบบของ CLI เมื่อเข้าสู่ระบบบนเครื่องของคุณเองก็ไม่ต้องสร้าง Key: th จะขอ Key ชั่วคราวของ Project จาก Console (ใช้ได้ 12 ชั่วโมง ตามสิทธิ์ของ role คุณ) และเก็บไว้ข้างไฟล์ config จนใกล้หมดอายุ ถ้าใช้ TH_API_KEY หรือต้องการใช้ Key ที่ระบุเอง ให้ตั้งตัวแปรด้านบน
ใช้ใน CI
สร้าง Key ใน Console เก็บเป็น secret ใน CI แล้วส่งผ่านตัวแปรสภาพแวดล้อม ใส่ --quiet เพื่อไม่ให้มีขั้นตอนไหนรอคำตอบ
| งาน | Key | ตัวแปร |
|---|---|---|
| Deploy Container | API Key ที่มีสิทธิ์ Containers: deploy (run:write) | TH_API_KEY |
| Deploy Static Web | API Key ที่มีสิทธิ์ Static Web: deploy (static:write) | TH_API_KEY |
| อ่านข้อมูล Container หรือ Static Web อย่างเดียว | API Key ที่มีสิทธิ์ run:read หรือ static:read | TH_API_KEY |
| Object Storage | Access key ของ Object Storage | TH_OBJECT_STORAGE_KEY_ID, TH_OBJECT_STORAGE_SECRET |
| Queue Service | Access key ของ Queue Service | TH_QUEUE_KEY_ID, TH_QUEUE_SECRET |
API Key ใช้ได้เฉพาะกับ Project ของตัวเอง ตัวอย่างสำหรับ GitHub Actions:
# .github/workflows/deploy.yml
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
curl -fsSL https://raw.githubusercontent.com/mrzack99s/thailandhosting-cli/main/install.sh | TH_INSTALL_DIR="$HOME/.local/bin" sh
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- run: th container deploy api --source . --quiet
env:
TH_API_KEY: ${{ secrets.TH_API_KEY }}ให้แต่ละ pipeline มี Key ของตัวเองที่มีเฉพาะสิทธิ์ที่จำเป็น ถ้า Key ไหนหลุดก็ยกเลิกแค่ Key นั้น
Exit code
| Code | ความหมาย |
|---|---|
0 | คำสั่งสำเร็จ (รวมถึง --help และ th queue tail ที่หยุดด้วย Ctrl+C) |
1 | เกิดข้อผิดพลาด หรือคุณตอบ no ในการยืนยัน (“Aborted.”) สาเหตุแสดงใน standard error |
130 | คุณกด Ctrl+C ขณะ th กำลังแสดง log ของ Build (th container deploy --source, th builds log --follow, th static-site builds log --follow) Build ยังทำงานต่อบนเซิร์ฟเวอร์ ติดตามต่อได้ด้วยคำสั่งที่ th แสดง |
| อื่น ๆ | th database connect และ th cache connect จบด้วย exit code ของไคลเอนต์ที่เปิด (psql, mysql, redis-cli ฯลฯ) |
กลุ่มคำสั่ง
| คำสั่ง | คำอธิบาย |
|---|---|
th auth | เข้าสู่ระบบและออกจากระบบ CLI ดูว่า CLI ทำงานในนามใคร และให้ Docker เข้าสู่ระบบ container registry ของ Project (5) |
th config | ตั้ง Project, Region และ endpoint ของ Console ที่ CLI ใช้ ดูรายการ Project และ Region ของคุณ และแสดงเวอร์ชันของ CLI (7) |
th container | Deploy Container จากโฟลเดอร์หรือ image ย้อนกลับไป Revision ก่อนหน้า อ่าน log และดูแล Registry ของ Project ให้เป็นระเบียบ (13) |
th registry | สร้าง Registry ติด tag คัดลอก และลบ image ให้ docker และ CI เข้าสู่ระบบด้วย Access token และคุมพื้นที่ด้วย Cleanup policy (13) |
th functions | Deploy Function ภาษา Python, Node.js (TypeScript) และ Go จากโฟลเดอร์ ดึงโค้ดที่แก้ใน Console ลงเครื่อง และเรียกใช้งาน (10) |
th triggers | เรียก Container หรือ Function ตามเวลา (Cron) หรือทุกข้อความที่เข้า Queue (7) |
th static-site | Deploy โฟลเดอร์ที่ build แล้วเป็นเว็บไซต์ Static Web ย้อนกลับไป Release ก่อนหน้า เชื่อมโดเมนของคุณเอง และติดตาม Build จาก Git (13) |
th object-storage | สร้าง Bucket คัดลอกและซิงก์ไฟล์ด้วย path แบบ th:// เปิดโฟลเดอร์เป็นสาธารณะ และแชร์ไฟล์เดี่ยวด้วยลิงก์ที่หมดอายุ (12) |
th database | สร้าง Database PostgreSQL, MySQL และ MariaDB เชื่อมต่อจากเครื่องของคุณด้วยคำสั่งเดียว สำรองและกู้คืนข้อมูล และเพิ่ม read replica (20) |
th cache | สร้าง Cache แบบ ThailandHosting Cache (ใช้กับ Redis client ได้) และ Valkey เชื่อมต่อด้วย redis-cli หรือ valkey-cli ปรับขนาด และจัดการ Backup (17) |
th queue | สร้าง Queue ส่งข้อความ รับและยืนยันข้อความ และติดตาม Queue แบบ consumer อย่างง่าย (11) |