เอกสาร
เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)
การติดตั้งและการถอนการติดตั้ง
บทความนี้อธิบายอย่างละเอียดถึงวิธีติดตั้ง, อัปเกรด และถอนการติดตั้งแผงควบคุม SSH Everywhere เน้นอธิบายให้ชัดว่า «เปลี่ยนไดเรกทอรีติดตั้งแล้วถอนการติดตั้งอย่างไร» และรายละเอียดรูปแบบในคำสั่ง (ช่องว่าง, เครื่องหมายคำพูด)
1. ติดตั้ง (คำสั่งบรรทัดเดียว)
รันบนเซิร์ฟเวอร์ Linux ที่มี IP สาธารณะ:
curl -fsSL https://ssheverywhere.com/install.sh | bash
สคริปต์จะทำเสร็จอัตโนมัติ: ตรวจระบบ → ติดตั้ง dependencies (Python3 / venv / pip / git / curl) → ดาวน์โหลดโค้ด → สร้าง virtual environment → ติดตั้ง dependencies ของ Python → ลงทะเบียนและเริ่มบริการ systemd
รองรับ Debian / Ubuntu / CentOS / Rocky / AlmaLinux / Fedora / WSL (หากไม่มี systemd จะเปลี่ยนไปรันเบื้องหลังอัตโนมัติ)
พารามิเตอร์การติดตั้ง
| พารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
--lang <รหัส> | ภาษาของข้อความแจ้งเตือน + ภาษาเริ่มต้นของแผงควบคุม (ค่าเริ่มต้นจะตรวจจาก locale ของระบบโดยอัตโนมัติ; รองรับหมายเลข 1-16 ด้วย) | --lang ja |
--dir <ไดเรกทอรี> | ไดเรกทอรีติดตั้ง (ค่าเริ่มต้น /opt/ssh-everywhere; หากเขียนไม่ได้จะถอยกลับไปใช้ ~/ssh-everywhere ให้อัตโนมัติ และแจ้งให้ทราบในผลลัพธ์) | --dir /opt/my-panel |
--port <พอร์ต> | พอร์ตของแผงควบคุม (ค่าเริ่มต้น 5501) | --port 8080 |
--ascii | บังคับให้แสดงสัญลักษณ์ ASCII ล้วน ([ok] / [..] / [!] / [x]) จะไม่เกิดตัวอักษรเพี้ยนบนเทอร์มินัลใด ๆ | --ascii |
--unicode | บังคับให้แสดงสัญลักษณ์ Unicode (✓ ⟳ ⚠️ ❌); ในสภาพแวดล้อม UTF-8 ถือเป็นค่าเริ่มต้นอยู่แล้ว | --unicode |
--yes / -y | ยืนยันอัตโนมัติเมื่ออัปเกรด ไม่ต้องโต้ตอบ | --yes |
รหัสภาษาที่รองรับ (16 ภาษา)
| รหัส | ภาษา | รหัส | ภาษา | รหัส | ภาษา | รหัส | ภาษา |
|---|---|---|---|---|---|---|---|
zh | 中文 | en | English | ja | 日本語 | ko | 한국어 |
es | Español | fr | Français | de | Deutsch | ru | Русский |
pt | Português | it | Italiano | ar | العربية | tr | Türkçe |
vi | Tiếng Việt | th | ไทย | id | Bahasa Indonesia | hi | हिन्दी |
หากไม่ส่ง --lang ระบบจะตรวจจาก locale ของระบบโดยอัตโนมัติ (เช่น LANG=ja_JP.UTF-8 → ข้อความภาษาญี่ปุ่น) เมื่อ locale ของเซิร์ฟเวอร์หรือเทอร์มินัลไม่ใช่ UTF-8 (อิมเมจแบบย่อของคลาวด์รายใหญ่พบ LANG=C ได้บ่อย) สคริปต์จะเปลี่ยนไปใช้สัญลักษณ์ ASCII ล้วน [ok] ให้อัตโนมัติ และเมื่อไม่ได้ระบุภาษาอย่างชัดเจน จะถอยกลับไปใช้ข้อความภาษาอังกฤษพร้อมอธิบายเหตุผลตอนต้น — ทั้งนี้เพื่อหลีกเลี่ยงตัวอักษรเพี้ยน หากต้องการบังคับให้แสดงภาษาของคุณ ใช้: --lang xx --unicode
การส่งพารามิเตอร์ผ่านไปป์ต้องเติม bash -s --:
# ข้อความภาษาญี่ปุ่น + แผงควบคุมภาษาญี่ปุ่น curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ja # ข้อความภาษารัสเซีย + ไดเรกทอรีและพอร์ตที่กำหนดเอง curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ru --dir /opt/my-panel --port 8080 # เทอร์มินัลเก่า / เทอร์มินัล GBK ที่กลัวตัวอักษรเพี้ยน: แสดงผล ASCII ล้วน (ข้อความภาษาจีน + สัญลักษณ์ [ok]) curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang zh --ascii # ภาษาอาหรับ (อินเทอร์เฟซ RTL) curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ar
หรือจะดาวน์โหลดก่อนแล้วค่อยรันก็ได้ (แบบโต้ตอบ จะถามภาษา ไดเรกทอรี และการยืนยันอัปเกรดทีละขั้น):
curl -fsSL https://ssheverywhere.com/install.sh -o install.sh && bash install.sh
> คลาวด์รายใหญ่ (Tencent Cloud / Alibaba Cloud) ปิดการล็อกอินด้วย root เป็นค่าเริ่มต้น --dir ที่ระบุมาอย่างชัดเจนจะได้รับความสำคัญก่อน; เฉพาะเมื่อผู้ใช้ปัจจุบันไม่มีสิทธิ์เขียนในไดเรกทอรีนั้น สคริปต์จึงจะเปลี่ยนไปใช้ไดเรกทอรี HOME ของคุณ (~/ssh-everywhere) และแจ้งอย่างชัดเจนในผลลัพธ์ว่า "คุณระบุไดเรกทอรีใด เพราะเหตุใดจึงถูกเปลี่ยน และหากต้องการติดตั้งที่นั่นให้รันด้วย root"
2. อัปเกรด
รันคำสั่งติดตั้งอีกครั้งก็ได้ สคริปต์มีการตรวจเวอร์ชันในตัว หากพบเวอร์ชันใหม่จะแนะนำให้อัปเกรด (ข้อมูลคงอยู่, อัตโนมัติเต็มรูปแบบ):
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --yes
--yes หมายถึงยืนยันอัตโนมัติตอนอัปเกรด ไม่ต้องโต้ตอบ
3. ถอนการติดตั้ง
ถอนการติดตั้งในไดเรกทอรีเริ่มต้น (แบบโต้ตอบ แนะนำ)
curl -fsSL https://ssheverywhere.com/uninstall.sh -o uninstall.sh && bash uninstall.sh
สคริปต์จะแสดงรายการที่จะถอนก่อนและถามยืนยัน ต้องพิมพ์ yes จึงจะดำเนินการ
ถอนการติดตั้งแบบไม่โต้ตอบ / ผ่านสคริปต์
เพิ่ม --yes เพื่อข้ามการยืนยัน (การตรวจสอบความปลอดภัยยังคงอยู่):
curl -fsSL https://ssheverywhere.com/uninstall.sh | bash -s -- --yes
พารามิเตอร์การถอนการติดตั้ง
| พารามิเตอร์ | คำอธิบาย |
|---|---|
--dir <directory> | ไดเรกทอรีติดตั้ง (ค่าเริ่มต้น /opt/ssh-everywhere, หากเปลี่ยนไดเรกทอรีต้องระบุ) |
--keep-data | สำรอง data (คอนฟิกเซิร์ฟเวอร์ / ฐานข้อมูล) เป็นแพ็กเกจ tar ก่อนถอนการติดตั้ง |
--yes | ยืนยันการถอนการติดตั้งในโหมดไม่โต้ตอบ |
4. เปลี่ยนไดเรกทอรีติดตั้งแล้วถอนการติดตั้งอย่างไร? (สำคัญ)
ตอนติดตั้งหากใช้ --dir เปลี่ยนไดเรกทอรี ตอนถอนการติดตั้งต้องระบุ --dir เดียวกัน มิฉะนั้นสคริปต์จะหาไดเรกทอรีติดตั้งไม่เจอและหยุดอัตโนมัติ (นี่คือการป้องกันความปลอดภัย กันลบผิด)
เส้นทางไดเรกทอรีไม่มีช่องว่าง
curl -fsSL https://ssheverywhere.com/uninstall.sh -o uninstall.sh && bash uninstall.sh --dir /opt/my-panel
แบบไปป์ (--dir วางหลัง bash -s --):
curl -fsSL https://ssheverywhere.com/uninstall.sh | bash -s -- --dir /opt/my-panel --yes
เส้นทางไดเรกทอรีมีช่องว่าง
หากชื่อไดเรกทอรีมีช่องว่าง ต้องใช้เครื่องหมายคำพูดคู่ครอบเส้นทางทั้งหมด มิฉะนั้น shell จะแยกเส้นทางเป็นสองส่วน สคริปต์จะหาไดเรกทอรีไม่เจอ:
bash uninstall.sh --dir "/opt/my panel"
แบบไปป์ก็เช่นกัน (เครื่องหมายคำพูดครอบเส้นทางทั้งหมด อย่าครอบแค่ครึ่งเดียว):
curl -fsSL https://ssheverywhere.com/uninstall.sh | bash -s -- --dir "/opt/my panel" --yes
อยากเก็บข้อมูลไว้แล้วค่อยถอนการติดตั้ง
bash uninstall.sh --dir /opt/my-panel --keep-data
data (คอนฟิกเซิร์ฟเวอร์ / ฐานข้อมูล) จะถูกสำรองไปที่ <install-dir>-data-backup-<timestamp>.tar.gz หลังถอนการติดตั้งแล้วกู้คืนได้
> 💡 คำแนะนำ: ตอนติดตั้งควรหลีกเลี่ยงการใช้ช่องว่างในชื่อไดเรกทอรี เปลี่ยนไปใช้ขีดกลางหรือขีดล่าง (เช่น my-panel, my_panel) จะประหยัดความยุ่งยากจากเครื่องหมายคำพูด
5. คำอธิบายด้านความปลอดภัย
สคริปต์ถอนการติดตั้งมีระบบป้องกันสามชั้นในตัว กันลบผิด:
1. ตรวจสอบเส้นทางสัมบูรณ์ —— ปฏิเสธเส้นทางสัมพัทธ์
2. blacklist ไดเรกทอรีสำคัญของระบบ —— ปฏิเสธ /, /root, /etc, /usr, /var ฯลฯ
3. ตรวจสอบลายนิ้วมือไดเรกทอรีติดตั้ง —— ต้องมี VERSION และ app.py อยู่พร้อมกันจึงจะลบ มิฉะนั้นจะหยุด
> การถอนการติดตั้งลบแค่ตัวแผงควบคุม Agent บนเซิร์ฟเวอร์เป้าหมาย / อุปกรณ์ไม่ได้รับผลกระทบ (หลังลบแผงควบคุมแล้วมันจะแสดงออฟไลน์)