SNTalkBot
รุ่นปัจจุบัน: 5.1.44
ดาวน์โหลด SNTalkBot 5.1.44 (.zip)
ดาวน์โหลด SNTalkBot รุ่นล่าสุด (ลิงก์คงที่)
เลือกใช้งานได้แบบ Full Bot, Player Bot หรือ Server Manager ตามหน้าที่ของ instance
บอต TeamTalk สำหรับเล่นสื่อและจัดการเซิร์ฟเวอร์บน Linux/Docker
รุ่นปัจจุบัน: 5.1.44
ดาวน์โหลด SNTalkBot 5.1.44 (.zip)
ดาวน์โหลด SNTalkBot รุ่นล่าสุด (ลิงก์คงที่)
เลือกใช้งานได้แบบ Full Bot, Player Bot หรือ Server Manager ตามหน้าที่ของ instance
รุ่นปัจจุบัน: 1.5.10
ดาวน์โหลด TTUHelper 1.5.10 (.zip)
ดาวน์โหลด TTUHelper รุ่นล่าสุด (ลิงก์คงที่)
ตัวช่วยติดตั้ง อัปเดต และจัดการหลาย instance บน Linux/Docker
รุ่นปัจจุบัน: 1.1.29
ดาวน์โหลด SNTalkBot Web Manager 1.1.29 (.zip)
ดาวน์โหลด Web Manager รุ่นล่าสุด (ลิงก์คงที่)
เว็บแดชบอร์ด self-hosted สำหรับจัดการ SNTalkBot/TTUHelper หลาย instance; ใช้หรือไม่ใช้ก็ได้
ดูว่ารุ่นต่าง ๆ เปลี่ยนอะไร: เปิดหน้าการเปลี่ยนแปลง ซึ่งแยกหน้าและแบ่งหน้าอัตโนมัติเมื่อประวัติมากขึ้น
SNTalkBot SHA-256: f672b0f22ff17c0353eb3936e44846c89f39059237652e08134581bbb695820b — ไฟล์ .sha256
TTUHelper SHA-256: 0a90ae8b1a9b30c73a3f1c2514a3872eb993698511da28e77e33f1dc0f4cb8b4 — ไฟล์ .sha256
Web Manager SHA-256: ddb3b3512d136f285275c092b3d1f22f8008b9d3a71d284ef3e2ea19b6498246 — ไฟล์ .sha256
ขนาด ZIP จริง; เก็บไฟล์ดาวน์โหลดไม่เกิน 2 รุ่นต่อโปรเจกต์ และคงประวัติการเปลี่ยนแปลงเดิม
| โปรเจกต์และเวอร์ชัน | ขนาดไฟล์ |
|---|---|
| TTUHelper 1.5.10 | 102,617 bytes (0.10 MiB) |
| SNTalkBot-Web-Manager 1.1.29 | 185,123 bytes (0.18 MiB) |
| SNTalkBot-Web-Manager 1.1.26 | 173,330 bytes (0.17 MiB) |
| SNTalkBot 5.1.44 | 590,032 bytes (0.56 MiB) |
| SNTalkBot 5.1.43 | 586,850 bytes (0.56 MiB) |
| SNTalkBot 5.1.41 (เก็บเฉพาะประวัติ) | 578,791 bytes (0.55 MiB) |
| SNTalkBot 5.1.40 (เก็บเฉพาะประวัติ) | 576,089 bytes (0.55 MiB) |
| SNTalkBot 5.1.39 (เก็บเฉพาะประวัติ) | 574,333 bytes (0.55 MiB) |
| SNTalkBot 5.1.38 (เก็บเฉพาะประวัติ) | 571,357 bytes (0.54 MiB) |
| SNTalkBot 5.1.37 (เก็บเฉพาะประวัติ) | 568,735 bytes (0.54 MiB) |
| SNTalkBot 5.1.36 (เก็บเฉพาะประวัติ) | 562,231 bytes (0.54 MiB) |
| SNTalkBot 5.1.35 (เก็บเฉพาะประวัติ) | 558,390 bytes (0.53 MiB) |
| SNTalkBot 5.1.34 (เก็บเฉพาะประวัติ) | 551,811 bytes (0.53 MiB) |
| SNTalkBot 5.1.31 (เก็บเฉพาะประวัติ) | 539,122 bytes (0.51 MiB) |
| SNTalkBot 5.1.28 (เก็บเฉพาะประวัติ) | 535,904 bytes (0.51 MiB) |
| SNTalkBot 5.1.27 (เก็บเฉพาะประวัติ) | 535,196 bytes (0.51 MiB) |
ติดตั้ง SNTalkBot + TTUHelper เป็นชุดหลัก และติดตั้ง Web Manager เพิ่มเมื่อคุณต้องการจัดการระบบผ่านเว็บ
u เปิด playlist แรก และ pp <playlist_link> ต่อ playlist ชุดถัดไปโดยไม่หยุดเพลงปัจจุบัน; Queue Mode จะต่อทั้ง playlist แบบ FIFO พร้อมบอกช่วงหมายเลขคิวc 56 เป็น shorthand เดียวของ select 56 เพื่อกระโดดไปลำดับที่ 56 ใน Queue/playlist/session/ผลค้นหา; ถ้าเป็น Queue จะข้ามรายการก่อนหน้าและเล่นต่อจากตำแหน่งนั้น, ,/. เลื่อนผลค้นหา, ใช้ , 34/. 34 เพื่อเปลี่ยนผลค้นหาของคิวหมายเลข 34 โดยตรง และ b/n ย้อน/เดินหน้า Related Radio ในโหมดปกติh, s, p เพลง; เครื่องหมาย / ยังใช้ได้เพื่อ compatibility แต่ไม่จำเป็นic on|off|status (Manager/Full) ควบคุมการดักข้อความจากทุก Channel, ci on|off|status ควบคุมการตอบสนองปกติต่อ Channel โดยไม่ปิด moderation และ cm on|off|status ควบคุมข้อความ Player ที่ประกาศออก Channelแบ่งเป็น 3 กลุ่ม: Common 21 คำสั่ง, Player 51 คำสั่ง และ Server Manager 49 คำสั่ง
ถ้ามีคำสั่งย่อ จะแสดงข้างชื่อคำสั่งเพียงครั้งเดียว ป้าย [ผู้ดูแล] หมายถึงต้องมีสิทธิ์ผู้ดูแล
ทั้งข้อความส่วนตัวและ Channel/Broadcast พิมพ์ตรง ๆ เช่น h, p เพลง, ap on, rs ได้เหมือนกันโดยไม่ต้องใส่ /; รูปแบบ /h และ /p เพลง ยังรับได้เพื่อ compatibility
ic on|off|status (Manager/Full) เปิด/ปิดการดักข้อความจากผู้ใช้ในทุก Channel ของเซิร์ฟเวอร์ ส่วน ci off ปิดเฉพาะ command/TTS/Player/translation ที่ตอบสนองต่อ Channel แต่ moderation ที่เปิดด้วย filter on ยังตรวจข้อความที่บอตได้รับอยู่ และ cm off ปิดเฉพาะข้อความ Player ที่ประกาศลง Channel
ถ้าต้องการให้บอตเฝ้าคำหยาบทั่วเซิร์ฟเวอร์แต่ไม่ตอบคำสั่งปกติใน Channel ให้ใช้ ic on, filter on, ci off; คำสั่งชุดนี้พิมพ์รูปแบบเดียวกันได้ทั้ง Private และ Channel
h = help
rs = restart
sd = shutdown
w = weather
wb = welcomebroadcast
ap = autoplay
ch = channel
pf = playfav
c = select (เช่น c 56)
ci = channelinput
ic = intercept
คำสั่งย่อรับค่าต่อท้ายเหมือนคำสั่งหลัก เช่น ap on, ap off, wb on, wb off
แยกหน้าที่จริง: Player Bot = Common + Player เท่านั้น, Server Manager = Common + Server Manager เท่านั้น และ Full Bot เท่านั้นที่รวมทั้งสองฝ่าย คำสั่งย่อก็ลงทะเบียนตาม role เดียวกัน
h เป็นคำสั่งย่อของ help และใช้ได้เหมือนกันทั้ง Private และ Channel/Broadcast เมื่อ Channel Input เปิดอยู่ โดยจะแสดงเฉพาะคำสั่งที่มีจริงในโหมดของบอตนั้น ถ้าข้อความ Private ไม่ตรงกับคำสั่งหรือ workflow ที่รองรับ บอตจะตอบให้พิมพ์ h เพื่อดูวิธีใช้ ส่วนบทสนทนาธรรมดาใน Channel จะไม่โดน fallback นี้
dr <ข้อความ> ใช้แจ้งบั๊ก รายงานปัญหา ขอฟีเจอร์ หรือเสนอแนะฟีเจอร์โดยตรงถึงผู้พัฒนา SNTalkBot ส่วน report <ข้อความ> ใช้ได้ทุกโหมดสำหรับส่งข้อความหาแอดมิน TeamTalk ที่ออนไลน์
filter on|off|status เป็น master switch ของตัวกรองคำทุกภาษา โดย blacklist.txt รวมภาษาอังกฤษ อาหรับ ไทย และรายการเดิมไว้ฝ่ายเดียวกันแล้ว; OFF ปิดทั้งข้อความ ชื่อผู้ใช้ และชื่อ/หัวข้อ Channel พร้อมกัน และ ON เปิดกลับทั้งหมด พร้อม matcher ลด false positive ของคำสั้น
about หรือคำสั่งย่อ a แสดงเวอร์ชัน ประเภทบอต และข้อมูลติดต่อผู้พัฒนา nuttawat จาก SN Family พร้อมบอกให้ใช้ dr <ข้อความของคุณ> สำหรับแจ้งบั๊ก/ขอฟีเจอร์ โดยไม่พาไปหน้า support URL ที่ไม่มีแบบฟอร์ม
สถานะเริ่มต้นระบุประเภท Player / Server Manager / Full และบอกสั้นว่า พิมพ์ h เพื่อดูวิธีใช้ ถ้าตั้งข้อความเองด้วย cs <ข้อความ> จะใช้ข้อความนั้น และ cs auto ใช้กลับสู่สถานะตามประเภทบอต
about ย่อ: aadmins ย่อ: adchannelinput on|off|status ย่อ: cidr <message>gcid [channel path] ย่อ: cidhelp [command] ย่อ: hmyinfo ย่อ: mirestart ย่อ: rssearch ย่อ: srstatusreport <message> ย่อ: repshutdown ย่อ: sdlockblockcmd [+|-]<command> ย่อ: bclanguage <code> ย่อ: lgclearlog ย่อ: clcn <new name>cs <status>cg modesave ย่อ: scvoicetx on|off ย่อ: vt+ ย่อ: sf, [queue_position]- ย่อ: sb. [queue_position]3d on|off3d2 on|offautoplay on|off ย่อ: apbbass on|offccchannel ย่อ: chcm [on|off|status]cqcsize ย่อ: czddelfav ย่อ: dfdl <link>dq <index|ชื่อเพลง>ffavfavorites ย่อ: flhidel ย่อ: glmm1m2m3np <query>pgplayfav ย่อ: pfpm <query>pp <playlist_link>ptts [on|off|status]pttsmode microsoft|google ย่อ: ptmpttsrate <-100..100> ย่อ: ptrpttsspeed <0.25..4.0> ย่อ: ptspvoice <voice_or_language> ย่อ: pvopvoices [langcode] ย่อ: pvlq on|offqcql [page]rsselect <index> ย่อ: cshuffle ย่อ: shsp <speed>t <time>u <link>v <volume>xaccount ย่อ: acaccounts on|off ย่อ: acsbm messageclear argumentdb name durationdk name durationevents [1-25]execfilter on|off|status ย่อ: ftget_voices langcode ย่อ: gvglobalbroadcast on|off|status|interval <minutes>|tts on|off ย่อ: gbintercept on|off|status ย่อ: icjail <name>jailsjoin <channel> ย่อ: jk <nickname>ks <nickname>ldmessages ย่อ: msgsmoveall <channel> ย่อ: mamsg <username> <message>new <username> <password> [rights]noname ย่อ: nnnotify <nickname> <telegram_chat_id> ย่อ: ntpitch valueprivate <name> ย่อ: prvptrate valuereboot ย่อ: rbtsayspeed valuesttrtts on|offttsmode microsoft|google ย่อ: tmudb name durationudk <username> <duration>unjail <name>unotify <username> <telegram_chat_id> ย่อ: untusers ย่อ: usvoice voiceOrLanguage ย่อ: vcvolume valuevpnweather ย่อ: wwelcome ย่อ: wcwelcomebroadcast [on|off|status] ย่อ: wbwhowhoall ย่อ: wawt <source_lang> <target_lang>เลือกได้ทั้งดาวน์โหลด ZIP จากหน้านี้หรือ clone source จาก GitHub แล้วแต่สะดวก ทั้งสองวิธีติดตั้งคำสั่ง ttuhelper เหมือนกัน
sudo apt-get update
sudo apt-get install -y curl unzip
sudo mkdir -p /opt/ttuhelper
sudo curl -fL https://ttdl.nuttawat.ddnsfree.com/downloads/TTUHelper-latest.zip -o /tmp/TTUHelper.zip
sudo unzip -o /tmp/TTUHelper.zip -d /opt/ttuhelper
cd /opt/ttuhelper
sudo chmod +x install.sh ttuhelper.sh
sudo ./install.sh
sudo ttuhelper doctor
sudo apt-get update
sudo apt-get install -y git
cd /opt
sudo git clone https://github.com/nuttawat-arch/ttuhelper.git
cd /opt/ttuhelper
sudo chmod +x install.sh ttuhelper.sh
sudo ./install.sh
sudo ttuhelper doctor
ถ้า clone ไว้แล้วและต้องการอัปเดต source ของ helper:
cd /opt/ttuhelper
sudo git pull --ff-only
sudo ./install.sh
sudo ttuhelper doctor
git pull คืออัปเดต TTUHelper source ส่วน ttuhelper update คืออัปเดต SNTalkBot Docker image/instance
สำรอง source/diff ก่อน แล้ว reset เฉพาะ /opt/ttuhelper ให้ตรง origin/main; ขั้นตอนนี้ไม่ลบ /etc/default/ttuhelper หรือ instance ใต้ /opt/sntalkbot-bots
cd /opt/ttuhelper
sudo git status --short
sudo git diff -- install.sh ttuhelper.sh | sudo tee /root/ttuhelper-local-before-reset.diff >/dev/null
sudo cp -a /opt/ttuhelper /root/ttuhelper-source-backup-$(date +%Y%m%d-%H%M%S)
sudo git fetch origin
sudo git reset --hard origin/main
sudo ./install.sh
sudo ttuhelper doctor
sudo ttuhelper new
sudo ttuhelper run <ชื่อบอต>
sudo ttuhelper update
อัปเดตเฉพาะ instance ที่กำลังรัน และเก็บ config/data เดิมไว้
ใช้วิธีนี้เมื่อไม่ต้องการ TTUHelper
docker pull nuttawat0295/sntalkbot:latest
sudo mkdir -p /opt/sntalkbot-bots/mybot
sudo docker run --rm --entrypoint cat nuttawat0295/sntalkbot:latest /app/config_default.ini | sudo tee /opt/sntalkbot-bots/mybot/config.ini >/dev/null
sudo chown -R 10001:10001 /opt/sntalkbot-bots/mybot
sudo nano /opt/sntalkbot-bots/mybot/config.ini
docker run -d \
--name sntalkbot-mybot \
--network host \
--restart unless-stopped \
-v /opt/sntalkbot-bots/mybot:/app/data \
-e TTUTIL_CONFIG=/app/data/config.ini \
-e TTUTIL_DATA_DIR=/app/data \
-e TTUTIL_PULSE_SINK=ttu_mybot \
-e TTUTIL_MPV_AO=pulse \
nuttawat0295/sntalkbot:latest
ถ้าสร้างหลาย container ให้ใช้ชื่อ container, data directory และ TTUTIL_PULSE_SINK คนละชื่อ
เครื่องมือจัดการ SNTalkBot หลาย instance บน Linux/Docker มีทั้งหมด 22 คำสั่ง
sudo ttuhelper new
sudo ttuhelper run <ชื่อบอต>
new ใช้สร้าง instance และเลือก Full / Player / Server Manager ส่วน run ใช้เปิดบอตจาก config/data เดิมของ instance นั้น
sudo ttuhelper ls
sudo ttuhelper ps
sudo ttuhelper logs <ชื่อบอต>
ls ใช้ดู instance ทั้งหมด, ps ใช้ดู container ที่กำลังถูกจัดการ และ logs ใช้ดู log แบบสด กด Ctrl+C เพื่อออกจากหน้าดู log
sudo ttuhelper edit <ชื่อบอต>
sudo ttuhelper restart <ชื่อบอต>
ข้อมูลแต่ละ instance เก็บแยกกันใต้ /opt/sntalkbot-bots/<ชื่อบอต>/ การ restart หรือ update จะไม่ลบ config/data ถาวร
sudo ttuhelper update
คำสั่งนี้ pull image ใหม่และสร้างใหม่เฉพาะ instance ที่กำลังรัน โดยใช้ข้อมูลเดิมต่อไป
sudo ttuhelper cks <ชื่อบอต> /root/cookies.txt
sudo ttuhelper cks-check <ชื่อบอต>
sudo ttuhelper restart <ชื่อบอต>
ใช้กับ Player/Full ที่ต้องเข้าถึงเนื้อหาซึ่งต้องล็อกอิน ตัว helper ตรวจรูปแบบโดยไม่แสดงค่า secret ดูขั้นตอนเต็มได้ที่หัวข้อ “YouTube / YouTube Music Cookies”
ใช้ ttuhelper migrate-ttmediabot เฉพาะ TTMediaBot Docker Helper ที่มี config.json v1 ขั้นตอนพร้อมตัวอย่างอยู่ในหัวข้อ “ย้ายจาก TTMediaBot Docker Helper เก่า” บนหน้านี้
| คำสั่ง | ใช้ทำอะไร |
|---|---|
ttuhelper new | สร้าง instance ใหม่และเลือกโหมด Full / Player / Server Manager |
ttuhelper run <name> | เริ่มบอตจาก config/data ของ instance นั้น |
ttuhelper stop <name> | หยุดและลบ container แต่เก็บ config/data ไว้ |
ttuhelper restart <name> | รีสตาร์ตบอตหนึ่งตัวโดยสร้าง container ใหม่ |
ttuhelper delete <name> | ลบ instance หลังยืนยันชื่อ โดยสำรอง config/data ก่อนลบ |
ttuhelper logs <name> | ดูบันทึกการทำงานแบบสด; กด Ctrl+C เพื่อออก |
ttuhelper ls | ดูรายชื่อ instance ทั้งหมดพร้อมสถานะ running/stopped |
ttuhelper ps | ดู container ที่ TTUHelper จัดการ พร้อมสถานะและ image |
ttuhelper start-all | เริ่มทุก instance ที่มี config.ini |
ttuhelper stop-all | หยุด container ทุกตัวที่ TTUHelper จัดการ โดยไม่ลบข้อมูลถาวร |
ttuhelper pull | ดาวน์โหลด Docker image/tag ที่ตั้งไว้ |
ttuhelper update | pull image ใหม่ แล้วอัปเดตเฉพาะ instance ที่กำลังรัน โดยรักษาข้อมูลเดิม |
ttuhelper migrate-ttmediabot [path] (หรือ import-ttmediabot) | ย้ายเฉพาะ TTMediaBot Docker Helper config.json v1 ไป SNTalkBot ใหม่; เลือกโหมดทั้งชุดหรือทีละบอตได้ |
ttuhelper cks <name> [file] | แทนที่ cookies.txt ของ Player/Full instance หนึ่งตัวจากไฟล์หรือ paste |
ttuhelper cks-all [file] | ใส่ cookies ชุดเดียวให้ Player/Full ทุก instance และข้าม Server Manager อัตโนมัติ |
ttuhelper cks-check <name> | ตรวจ Netscape format/จำนวน cookie ของ Player/Full โดยไม่แสดงค่า secret |
ttuhelper limit <name> | ตั้งข้อจำกัด CPU/RAM ของ instance มีผลหลัง restart |
ttuhelper edit <name> | เปิด config.ini ของ instance ค่าเริ่มต้นใช้ nano |
ttuhelper path <name> | แสดงตำแหน่งโฟลเดอร์ config/data ของ instance |
ttuhelper doctor | ตรวจ Docker daemon, image, data root และค่าหลักของ helper |
ttuhelper version | แสดงเวอร์ชัน TTUHelper |
ttuhelper help | แสดงคำอธิบายคำสั่งทั้งหมด |
รองรับเฉพาะ TTMediaBot Docker Helper ที่แต่ละบอตมี config.json แบบ config_version: 1 ไม่ใช่ตัวนำเข้าสำหรับโปรเจกต์บอตเก่าทุกแบบ
TTUHelper จะค้นหาบอตในโฟลเดอร์ต้นทาง แปลงเป็น config.ini รุ่นใหม่ คัดลอก cookies.txt ถ้ามี และให้เลือกว่าจะย้ายเป็น Player, Server Manager หรือ Full Bot
ตัวอย่างนี้สมมติว่า TTMediaBot เก่าอยู่ที่ /opt/ttmediabot-docker-helper และมีหลายบอตอยู่ข้างใน:
/opt/ttmediabot-docker-helper/
MusicRoom/
config.json
cookies.txt
RadioBot/
config.json
cookies.txt
LoungePlayer/
config.json
ชื่อ MusicRoom, RadioBot และ LoungePlayer เป็นเพียงตัวอย่าง ผู้ใช้ใช้ชื่อโฟลเดอร์เดิมของตนเองได้
sudo ttuhelper migrate-ttmediabot /opt/ttmediabot-docker-helper --dry-run
ตรวจว่ารายชื่อบอตที่พบตรงกับของจริงก่อน ถ้าเก็บ TTMediaBot ไว้ที่อื่น ให้เปลี่ยนเฉพาะ path เช่น:
sudo ttuhelper migrate-ttmediabot /srv/legacy-media-bots --dry-run
sudo ttuhelper migrate-ttmediabot /opt/ttmediabot-docker-helper
หรือถ้าใช้ตำแหน่งค่าเริ่มต้น สามารถพิมพ์:
sudo ttuhelper migrate-ttmediabot
แล้วกรอก path เมื่อโปรแกรมถาม
1) Player Bot ทุกตัว
2) Server Manager ทุกตัว
3) Full Bot ทุกตัว
4) เลือกประเภททีละตัว
ถ้าบอตเก่าทั้งหมดเป็นบอตเพลง ให้เลือก 1 ได้เลย ถ้ามีหน้าที่ต่างกัน ให้เลือก 4 แล้ว TTUHelper จะถามทีละตัว เช่น:
MusicRoom ทำงานประเภทไหน?
1) Player Bot
2) Server Manager
3) Full Bot
config.jsoncookies.txt เดิม ถ้ามีconfig.ini จาก template ปัจจุบันของ SNTalkBot ก่อน แล้วนำเข้าเฉพาะค่า TTMediaBot ที่มีความหมายตรงกับ field ที่ SNTalkBot รองรับจริง/opt/sntalkbot-bots/
MusicRoom/
config.ini
cookies.txt
RadioBot/
config.ini
cookies.txt
LoungePlayer/
config.ini
โฟลเดอร์ TTMediaBot ต้นทางจะไม่ถูกลบ จึงเป็น backup ของ raw config.json อยู่แล้ว ระบบไม่คัดลอก raw legacy config เข้า runtime instance ใหม่ ถ้ามี SNTalkBot ชื่อเดียวกันอยู่แล้ว TTUHelper จะถามก่อนแทนที่และสำรองของเดิมไว้ก่อน
TTUHelper 1.5.4+ จะตรวจ instance ที่เคย migrate แล้วตอนติดตั้ง/อัปเดต helper และก่อน start/restart ด้วย หาก config มี key ขาด ค่า boolean/ตัวเลขผิดชนิด หรือมี key legacy ค้าง ระบบจะ backup config เดิมแล้วซ่อมให้ตรง template ปัจจุบันอัตโนมัติ; ค่าที่ซ่อมไม่ได้จะกลับไปใช้ default ที่ปลอดภัยโดยไม่เขียนรหัสผ่านลง report
เมื่อแปลงครบ TTUHelper จะถามว่าจะเริ่ม/รีสตาร์ตบอตที่นำเข้าด้วย image ล่าสุดหรือไม่ หลังจากนั้นตรวจสถานะได้ด้วย:
sudo ttuhelper ls
sudo ttuhelper ps
sudo ttuhelper logs MusicRoom
เปลี่ยน MusicRoom เป็นชื่อบอตจริงที่ต้องการดู log
Web Manager เป็นโปรเจกต์เสริมที่ผู้ใช้โฮสต์เองได้บนเครื่องเดียวกับ SNTalkBot/TTUHelper ใช้หรือไม่ใช้ก็ได้ หากใช้ Reverse Proxy ให้ส่ง upstream ไปที่ http://127.0.0.1:28765; ผู้ใช้ทั่วไปไม่จำเป็นต้องตั้งค่าหรือรู้รายละเอียดบริการภายในอื่น
เหมาะกับ Ubuntu/Debian เครื่องใหม่ สคริปต์จะตรวจ bootstrap tools ก่อน ติดตั้งเฉพาะสิ่งที่ขาด ดาวน์โหลดไฟล์ latest และตรวจ SHA-256 ก่อนแตก/ติดตั้ง:
curl -fsSL https://ttdl.nuttawat.ddnsfree.com/install_web_manager.sh | sudo bash
ถ้าเครื่องมี wget แต่ไม่มี curl:
wget -qO- https://ttdl.nuttawat.ddnsfree.com/install_web_manager.sh | sudo bash
ถ้าต้องการตรวจสคริปต์ก่อนรัน:
curl -fL https://ttdl.nuttawat.ddnsfree.com/install_web_manager.sh -o /tmp/install_web_manager.sh
less /tmp/install_web_manager.sh
sudo bash /tmp/install_web_manager.sh
หลังติดตั้ง Web Manager รับงานภายในเครื่องที่ http://127.0.0.1:28765 ถ้าใช้งานผ่านโดเมนให้ Reverse Proxy/HTTPS มาที่ address นี้
sudo mkdir -p /opt/sntalkbot-web-manager
sudo unzip -o SNTalkBot-Web-Manager-1.1.29.zip -d /opt/sntalkbot-web-manager
cd /opt/sntalkbot-web-manager
sudo chmod +x install.sh install_remote.sh
sudo ./install.sh
sudo systemctl status sntalkbot-web-manager --no-pager
curl -fsS http://127.0.0.1:28765/healthz
ตัวติดตั้งตรวจ Python, Git, Curl, venv, CA certificates และ Docker ก่อน ติดตั้งเฉพาะสิ่งที่ขาด จากนั้นสร้าง system user sntalkweb, virtualenv, systemd service, session secret และ privileged allowlist bridge
เปิดเว็บครั้งแรกแล้วสร้าง Super Admin คนแรก จากนั้น Super Admin ใช้เมนูบัญชีผู้ใช้สร้างบัญชีลูกค้าได้
cd /opt
sudo git clone https://github.com/nuttawat-arch/sntalkbot-web-manager.git
cd /opt/sntalkbot-web-manager
sudo chmod +x install.sh install_remote.sh
sudo ./install.sh
ถ้าติดตั้งอยู่แล้ว ให้ใช้ updater แบบ staged/backup/rollback ซึ่งไม่ติด local changes:
sudo bash /opt/sntalkbot-web-manager/install_remote.sh
ตัว updater clone รุ่นใหม่ให้สำเร็จก่อนแตะ live source, สำรอง source เดิมทั้งโฟลเดอร์ และ restore รุ่นเดิมถ้า installer ล้ม
หมายเหตุ GitHub: วิธี Git clone, ปุ่ม Self-update และ Release Automation -SyncWebManager ต้องมี repository https://github.com/nuttawat-arch/sntalkbot-web-manager.git ก่อน แต่การติดตั้งด้วย ZIP/Download Site ไม่ต้องมี repository นี้
ค่า default ปลอดภัยคือ localhost เท่านั้น ถ้าต้องการเปิดด้วย IP โดยตรงต้องเลือก bind ทุก interface เอง:
cd /opt/sntalkbot-web-manager
sudo env SNWEB_BIND=0.0.0.0 SNWEB_PORT=28765 ./install.sh
จากนั้นเปิด http://SERVER_IP:28765/ ถ้ามี Firewall ควรอนุญาตพอร์ตนี้เฉพาะ IP ผู้ดูแลเท่านั้น และอย่าเปิดพอร์ต API ภายในของบอตสู่ Internet
sudo ss -ltnp | grep ':28765 '
curl -fsS http://127.0.0.1:28765/healthz
Standalone HTTP ใช้ SNWEB_COOKIE_SECURE=false; ถ้าเปิดผ่าน Internet แนะนำ Reverse Proxy + HTTPS
botmgr.example.com มาที่ IP Serverbotmgr.example.com — ห้ามใส่ https://, path หรือ :28765http://127.0.0.1:28765 (ตรงนี้จึงค่อยใส่ scheme และ port)proxy_pass http://127.0.0.1:28765;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off สำคัญกับสถานะ/Job แบบ realtime SSE เมื่อ HTTPS ใช้งานแล้วให้:
sudo sed -i 's/^SNWEB_COOKIE_SECURE=.*/SNWEB_COOKIE_SECURE="true"/' /etc/default/sntalkbot-web-manager
sudo systemctl restart sntalkbot-web-manager
CloudPanel CLI ก็สร้าง Reverse Proxy ได้:
sudo clpctl site:add:reverse-proxy --domainName=botmgr.example.com --reverseProxyUrl='http://127.0.0.1:28765' --siteUser=botmgr --siteUserPassword='CHANGE_THIS_PASSWORD'
server {
listen 80;
server_name botmgr.example.com;
location / {
proxy_pass http://127.0.0.1:28765;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
sudo nginx -t
sudo systemctl reload nginx
หลังเปิด HTTPS ให้ตั้ง SNWEB_COOKIE_SECURE=true แล้ว restart Web Manager
botmgr.example.com {
reverse_proxy 127.0.0.1:28765
}
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
เมื่อโดเมนใช้ HTTPS แล้วให้ตั้ง SNWEB_COOKIE_SECURE=true
sudo a2enmod proxy proxy_http headers
<VirtualHost *:80>
ServerName botmgr.example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:28765/ timeout=3600
ProxyPassReverse / http://127.0.0.1:28765/
RequestHeader set X-Forwarded-Proto "http"
</VirtualHost>
sudo apachectl configtest
sudo systemctl reload apache2
VirtualHost HTTPS ให้ส่ง X-Forwarded-Proto "https" และเปิด Secure Cookie
ถ้าใช้แผงหรือบริการอื่น ให้ตั้ง Backend/Upstream เป็น http://127.0.0.1:28765 เมื่อ proxy อยู่เครื่องเดียวกับ Web Manager, preserve Host และส่ง X-Forwarded-For/X-Forwarded-Proto
สำหรับ realtime SSE ให้ปิด response buffering/cache และตั้ง read timeout ยาว เช่น 3600 วินาที เมื่อเปิด HTTPS แล้วให้ตั้ง SNWEB_COOKIE_SECURE=true
Upstream: http://127.0.0.1:28765
Host: preserve original host
X-Forwarded-For: client/proxy chain
X-Forwarded-Proto: https
Response buffering: off
Proxy cache: off
Read timeout: 3600 seconds
ห้าม Reverse Proxy หรือ port-forward พอร์ต API ภายในของบอต ถ้า proxy รันอยู่ใน container ให้จำไว้ว่า 127.0.0.1 หมายถึง container นั้น ไม่ใช่ host; ต้องตั้ง host-gateway/network route ให้ถูกต้อง
สำหรับการติดตั้งมาตรฐาน ให้ Reverse Proxy ไปที่ http://127.0.0.1:28765 เท่านั้น ผู้ใช้ทั่วไปไม่ต้องตั้งค่าพอร์ตบริการภายในอื่น
sudo systemctl status sntalkbot-web-manager --no-pager
sudo ss -ltnp | grep ':28765 '
curl -v http://127.0.0.1:28765/healthz
sudo journalctl -u sntalkbot-web-manager -n 100 --no-pager
ถ้า localhost ใช้ได้แต่โดเมนไม่ได้ ให้ตรวจ DNS/SSL/Reverse Proxy ถ้า Job แสดงผลทีเดียวตอนจบ ให้ตรวจ proxy_buffering off
ขั้นตอน Web Manager และ Reverse Proxy ที่ผู้ใช้ต้องใช้จริงแสดงอยู่ในหัวข้อยุบ/ขยายด้านบนครบแล้ว ไม่ต้องเปิดไฟล์อ้างอิงแยก