#37 - ติดตั้ง Apache Guacamole สำหรับการเข้าถึงคอมพิวเตอร์จากระยะไกล
Apache Guacamole เป็นแอพ Remote Desktop ระยะไกลที่ไม่ต้องใช้ Client ที่อนุญาตให้ผู้ใช้สามารถเข้าถึงและควบคุมคอมพิวเตอร์จากระยะไกลผ่านหน้าเว็บเบราวเซอร์ โดยผ่านโปรโตคอลมาตรฐานอย่าง SSH, VNC และ RDP [1] ที่ไม่ต้องติดตั้ง Plugin หรือแอพใด ๆ ลงบนคอมพิวเตอร์ของ Client เลย ด้วยการใช้เทคโนโลยีเว็บอย่าง HTML5 และ JavaScript
เมื่อทราบชื่อของแอพนี้แล้ว ทำไมเราต้องใช้ล่ะ?
ทำไมต้องใช้ Apache Guacamole
โดยปกติเวลาที่เครื่อง Client จะเข้าถึงยังคอมพิวเตอร์ที่ต้องการจากระยะไกลนั้น เราจำเป็นต้องลงแอพ Remote Desktop ก่อนที่จะใช้งาน อย่างไรก็ดีมันติดปัญหาตรงนี้
- คอมนั้นลงแอพไม่ได้ เนื่องมาจากใช้ระบบปฏิบัติการที่รันผ่านเว็บเบราวเซอร์แบบ Chrome OS หรือคอมนั้นไม่ได้รับอนุญาตให้ลงแอพเพิ่ม
- ทางองค์กรนั้น ๆ ไม่ได้รับอนุญาตให้ใช้งานพอร์ตอื่นนอกจาก HTTP กับ HTTPS
- เจอ Firewall
จุดนี้เป็นที่มาของแอพอย่าง Apache Guacamole ที่มีหลักการอยู่ที่สามารถใช้งานรีโหมดจากระยะไกลได้ทั่วโลก โดยที่ไม่ต้องลงแอพ Client แต่ใช้งานผ่านหน้าเว็บเบราวเซอร์เท่านั้น จุดนี้อนุญาตให้ใช้งานจากอุปกรณ์อะไรก็ได้ ไม่จำกัดว่าจะต้องใช้งานผ่านคอมพิวเตอร์เท่านั้น เรายังใช้โทรศัพท์หรือแท็บเล็ตก็รีโหมดเข้ามายังคอมพิวเตอร์จากระยะไกลได้อีกด้วย
นอกจากนี้ตัว Apache Guacamole ยังใช้งานผ่านโปรโตคอล HTTP หรือ HTTPS เท่านั้น จุดนี้ทำให้เราสามารถใช้งานได้เลยโดยที่ไม่ขัดต่อ Policy ของที่ทำงานนั้น ๆ แถมยังไม่เจอปัญหาเรื่อง Firewall อีกด้วย (ถ้าไม่ได้ไปบล็อกโปรโตคอล HTTP กับ HTTPS)
ต่อมาเรามากล่าวถึงโครงสร้างของแอพนี้เสียก่อน
โครงสร้างของ Apache Guacamole
ตัว Apache Guacamole มีโครงสร้างแบบง่าย ๆ ที่ประกอบไปด้วย
- เว็บเบราวเซอร์ที่รองรับ HTML5
- Guacamole Server ทีป่ระกอบไปด้วยตัว Guacamole ที่ทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ที่ใช้งานผ่าน Apache Tomcat ที่ทำหน้าที่ติดต่อกับตัวคอมพิวเตอร์ที่เราจะรีโหมดโดยผ่าน SSH, VNC, RDP และโปรโตคอลอื่นด้วยตัวกลางอย่าง guacd
- คอมพิวเตอร์เป้าหมายที่เราต้องการให้รีโหมด
เมื่อทราบโครงสร้างนี้แล้ว ต่อมาเราจะมาติดตั้ง Apache Guacamole
การติดตั้ง
การติดตั้ง Apache Guacamole สามารถติดตั้งได้สองวิธี ได้แก่
- ติดตั้งลงไปในคอมพิวเตอร์นั้น ๆ เลย - วิธีนี้เราจำเป็นต้องติดตั้ง Apache Tomcat และติดตั้งเครื่องมือที่จำเป็น ร่วมกับต้องคอมไฟล์ Apache Guacamole ซึ่งยุ่งยาก
- ติดตั้งโดยใช้งานผ่าน Docker - วิธีนี้ทำง่ายกว่า แถมไม่จำเป็นต้องไปนั่งติดตั้งเครื่องมือและคอมไพล์ให้ยุ่งยาก แถม Apache Guacamole ยังมี Container มาให้แบบ Official มาให้อยู่แล้ว
ในบทความนี้เราจะกล่าวถึงการติดตั้งโดยผ่าน Docker ส่วนอันแรกผู้อ่านสามารถอ่านได้ในหน้าเว็บของผู้ทำแอพได้ครับ
ติดตั้งผ่าน Docker
การติดตั้งผ่าน Docker [2] เป็นวิธีที่ทำได้ง่าย ไม่จำเป็นต้องติดตั้งและคอนไพล์ให้ยุ่งยาก โดยมี Container ที่จำเป็นทั้งหมด 3 Container ได้แก่
- guacamole/guacd ที่เป็น Container สำหรับ guacd ที่ทำหน้าที่เป็นตัวอย่างระหว่างตัวเว็บเซิร์ฟเวอร์กับโปรโตคอลที่แตกต่างอย่าง SSH, VNC, RDP และอื่น ๆ
- guacamole/guacamole เป็นตัวเว็บเซิร์ฟเวอร์ที่รันผ่าน Apache Tomcat ที่ติดต่อกับ guacd และฐานข้อมูล MySQL, PostgreSQL, Mariadb โดยอ่านการตั้งค่าจาก Environment Variables
- mysql หรือ mariadb หรือ postgresql เป็นฐานข้อมูลสำหรับการเก็บข้อมูลการล็อคอิน และเก็บการตั้งค่าการเชื่อมต่อกับคอมพิวเตอร์ผ่านโปรโตคอลต่าง ๆ ในบทความนี้เราจะใช้ MariaDB
เมื่อทราบชื่อ Container ที่จำเป็นแล้ว ก่อนอื่นเราดาวน์โหลดตัว Container ที่กล่าวมาข้างต้นเสียก่อนโดยพิมพ์คำสั่งตามด้านล่างนี้ โดยเวอร์ชันที่ใช้ของ Apache Guacamole ในบทความนี้เราจะใช้รุ่น 1.6.0 ส่วน MariaDB เราจะใช้ lts-ubi
docker pull guacamole/guacamole:1.6.0
docker pull guacamole/guacd:1.6.0
docker pull mariadb:lts-ubi
นำเข้าฐานข้อมูลของ Apache Guacamole
เมื่อดาวน์โหลด Container เสร็จแล้วเราจำเป็นต้องมีไฟล์ SQL ที่เก็บรายละเอียดฐานข้อมูลที่เกี่ยวข้องกับ Apache Guacamole เสียก่อน ทำได้โดย
docker run --rm guacamole/guacamole:1.6.0 /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
ต่อมาเริ่มต้น Container ของ MariaDB เพื่อนำเข้าไฟล์ SQL ที่สร้างไว้ในขั้นตอนก่อนหน้าสำหรับการสร้างฐานข้อมูลที่จำเป็นต่อการรัน Apache Guacamole ด้วยการสร้างไฟล์ docker-compose.yml
version: '3'
services:
guacdb:
container_name: guacamoledb
image: mariadb:lts-ubi
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: '< รหัสผ่าน root >'
MYSQL_DATABASE: 'guacamole_db'
MYSQL_USER: 'guacamole_user'
MYSQL_PASSWORD: '< รหัสผ่านผู้ใช้ guacamole_user >'
volumes:
- './db-data:/var/lib/mysql'
volumes:
db-data:
จากนั้นให้เริ่มต้นการทำงานของ Docker ด้วยการพิมพ์คำสั่ง docker-compose up -d แล้วก็นำเข้าไฟล์ SQL ลงไปใน Container นั้นด้วยการพิมพ์คำสั่งตามด้านล่างนี้
docker cp initdb.sql guacamoledb:/initdb.sql
docker exec -it guacamoledb bash
cat /initdb.sql | mysql -u root -p guacamole_db
exit
เมื่อพิมพ์คำสั่งในบรรทัดที่ 3 แล้ว ตัว MariaDB จะสอบถามรหัสผ่านของ root ให้ผู้อ่านพิมพ์รหัสผ่านที่กล่าวถึงแล้วในขั้นตอนก่อนหน้า
ส่วนกรณีที่พิมพ์คำสั่ง mysql ในบรรทัดที่ 3 ไม่ได้เพราะว่ามันไม่มีคำสั่งนี้ ให้ผู้อ่านเปลี่ยนจาก mysql -> mariadb แทนครับ
หลังจากที่พิมพ์คำสั่ง exit แล้ว ให้ผู้อ่านพิมพ์ docker-compose down เพื่อปิดการทำงานของ Container เสียก่อน
รัน Apache Guacamole
เมื่อนำเข้าฐานข้อมูลเสร็จเรียบร้อยแล้ว ให้ผู้อ่านแก้ที่ไฟล์ docker-compose.yml ครับ
version: '3'
services:
guacdb:
container_name: guacamoledb
image: mariadb:lts-ubi
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: '< รหัสผ่าน root >'
MYSQL_DATABASE: 'guacamole_db'
MYSQL_USER: 'guacamole_user'
MYSQL_PASSWORD: '< รหัสผ่านผู้ใช้ guacamole_user >'
volumes:
- './db-data:/var/lib/mysql'
guacd:
container_name: guacd
image: guacamole/guacd:1.6.0
restart: unless-stopped
guacamole:
container_name: guacamole
image: guacamole/guacamole:1.6.0
restart: unless-stopped
ports:
- 8080:8080
environment:
GUACD_HOSTNAME: "guacd"
MYSQL_HOSTNAME: "guacdb"
MYSQL_DATABASE: "guacamole_db"
MYSQL_USER: "guacamole_user"
MYSQL_PASSWORD: '< รหัสผ่านผู้ใช้ guacamole_user >'
TOTP_ENABLED: "true"
depends_on:
- guacdb
- guacd
volumes:
db-data:
แก้เสร็จแล้ว ให้รัน Container ขึ้นมาด้วยคำสั่ง docker-compose up -d
การเข้าถึง Apache Guacamole
เมื่อรันเสร็จแล้วให้ผู้ใช้เข้าไปที่ Apache Guacamole ผ่านหน้าเว็บเบราวเซอร์ด้วยการพิมพ์
http://< ตำแหน่ง IP ของคอมที่ติดตั้ง Apache Guacamole >:8080/guacamole
โดยตัว /guacamole อันนี้มีต่อไว้เนื่องจากตัว Apache Guacamole ไม่สามารถเข้าถึงจาก Root directory จำเป็นต้องพิมพ์ข้อความต่อด้านล่างเพิ่มเติมมาครับ
เมื่อเข้าถึง Apache Guacamole ผ่านหน้าเว็บแล้วจะปรากฏหน้าจอตามด้านล่างนี้

ให้พิมพ์ชื่อผู้ใช้และรหัสผ่านด้วย guacadmin เมื่อพิมพ์เสร็จแล้วจะปรากฏหน้าจอ Two Factor Authentication ให้ผู้ใช้เปิดแอพ Authenticator บนมือถือเพื่อสแกน QR code แล้วพิมพ์รหัสที่ได้ลงไปในหน้านั้นแล้วก็เข้าสู่ระบบ

กรณีที่ไม่อยากเห็นหน้าจอตามด้านบนนี้ให้แก้ในไฟล์
docker-compose.ymlตรงTOTP_ENABLED: "true"ให้เป็น"false"แทนครับ
เมื่อเข้าสู่ระบบแล้วจะปรากฏหน้าจอหลักของ Apache Guacamole ตามด้านล่างนี้ แค่นี้ก็สามารถใช้งานได้แล้ว

ที่มา
- https://guacamole.apache.org/doc/gug/introduction.html
- https://krdesigns.com/articles/how-to-install-guacamole-using-docker-step-by-step
Kittisak Chotikkakamthorn
จบทั้งแพทย์ + วิศวะร่วมกับผ่านการฝึกงานทางด้าน AI ที่มหาวิทยาลัยที่ไต้หวันที่พัฒนาเทคนิค Machine Learning ที่เป็น state-of-the-art (SOTA) สำหรบัการแก้ปัญหาทางการแพทย์ ปัจจุบันเขียนบล็อกโดยสนใจเกี่ยวกับทางด้าน Coding, AI, Data รวมถึงเขียนเป็นไดอารี่เป็นหลัก
ผู้อ่านสามารถส่งอีเมลมาทาง contact[at]nickuntitled.com
© 2025 Nick Untitled is licensed under CC BY 4.0 / Privacy Policy