คำตอบสั้น ๆ: ติดตั้ง Jitsi Meet ด้วยชุด docker-jitsi-meet ทางการ ใช้ HTTPS จาก Let's Encrypt เปิด UDP 10000 สำหรับภาพและเสียง และตั้งให้เฉพาะพนักงานเปิดห้องประชุมได้
คู่มือนี้อธิบาย Jitsi Meet ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Jitsi Meet คือระบบประชุมวิดีโอแบบโอเพนซอร์สที่ใช้งานผ่านเบราว์เซอร์ได้ทันทีโดยไม่ต้องติดตั้งโปรแกรม รองรับแชร์หน้าจอ แชท ยกมือ และตั้งรหัสผ่านห้อง ผู้เข้าร่วมใช้แอปมือถือได้ด้วย เมื่อติดตั้งบนเซิร์ฟเวอร์ของตัวเอง เสียงและภาพของการประชุมจะวิ่งผ่านเครื่องขององค์กร เหมาะกับหน่วยงานที่ต้องการควบคุมข้อมูลการประชุมเองหรือใช้ประชุมภายในบ่อย
คู่มือนี้ใช้ชุด docker-jitsi-meet ทางการ ซึ่งแยกเป็นคอนเทนเนอร์ web, prosody, jicofo และ jvb เมื่อจบคุณจะมี Jitsi Meet ที่ใช้ HTTPS จาก Let's Encrypt ในตัว ส่งภาพและเสียงผ่าน UDP 10000 และเปิดระบบยืนยันตัวตน ให้เฉพาะพนักงานเปิดห้องได้ ส่วนแขกภายนอกเข้าร่วมได้หลังเจ้าของห้องมาถึง
สิ่งที่ต้องเตรียม
- Cloud Server ที่ใช้ Ubuntu 24.04 พร้อม Docker Engine และ Compose plugin แยกเครื่องสำหรับ Jitsi Meet โดยเฉพาะ เพราะชุดนี้ใช้พอร์ต 80/443 เอง และการส่งต่อวิดีโอใช้ CPU กับแบนด์วิดท์สูง
- ขนาดเริ่มต้นราว 4 vCPU / RAM 8 GB สำหรับการประชุมพร้อมกันไม่กี่ห้อง ห้องละไม่เกินราว 20 คน เป็นค่าประมาณ ให้วัดการใช้งานจริงแล้วปรับ ปัจจัยหลักคือแบนด์วิดท์ขาออกของเครื่อง
- ซับโดเมน เช่น
meet.example.comที่ทำ A record ชี้มาที่ IP สาธารณะ203.0.113.10แล้ว - ไฟร์วอลล์ระดับคลาวด์เปิด TCP 80, TCP 443 และ UDP 10000
- แพ็กเกจ
unzipและwget
ขั้นตอนที่ 1: ดาวน์โหลด release ล่าสุดของ Jitsi Meet
โครงการแนะนำให้ใช้ไฟล์ release ไม่ใช่ clone repository เพราะ release ผ่านการทดสอบเป็นชุดแล้ว คำสั่งด้านล่างดึงลิงก์ zip ของ release ล่าสุดจาก GitHub
sudo apt install -y unzip wget
sudo install -d -o $USER /opt/meet
cd /opt/meet
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep zip | cut -d\" -f4)
ls
จะได้ไฟล์ชื่อตามรุ่น เช่น stable-11248 แตกไฟล์แล้วเข้าโฟลเดอร์ที่ได้
unzip stable-11248
cd jitsi-docker-jitsi-meet-*
ขั้นตอนที่ 2: สร้าง .env รหัสผ่านภายใน และโฟลเดอร์คอนฟิก
cp env.example .env
./gen-passwords.sh
mkdir -p ~/.jitsi-meet-cfg/{web,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri,transcriber}
mkdir -p ~/.jitsi-meet-cfg/storage/{jibri,prosody,transcripts,web}
mkdir -p ~/.jitsi-meet-cfg/tmp/{web-crontabs,web-load-test}
chmod 777 ~/.jitsi-meet-cfg/storage/{jibri,prosody,transcripts,web}
chmod 777 ~/.jitsi-meet-cfg/tmp/{web-crontabs,web-load-test}
gen-passwords.sh สุ่มรหัสผ่านที่คอมโพเนนต์ใช้คุยกันลงใน .env ห้ามข้ามขั้นนี้ เพราะรหัสผ่านว่างหรือค่าตัวอย่างเป็นช่องโหว่ ส่วนโฟลเดอร์ storage และ tmp ต้องสร้างเองพร้อมสิทธิ์เขียน เพราะตั้งแต่รุ่น stable-11146 คอนเทนเนอร์รันด้วยผู้ใช้ทั่วไป (uid 1000) ถ้าปล่อยให้ระบบสร้างเอง คอนเทนเนอร์จะเขียนไม่ได้และไม่ยอมเริ่ม
ขั้นตอนที่ 3: ตั้งค่าโดเมน HTTPS และการยืนยันตัวตน
เปิด nano .env แล้วแก้หรือลบเครื่องหมาย # หน้าบรรทัดต่อไปนี้
HTTP_PORT=80
HTTPS_PORT=443
TZ=Asia/Bangkok
PUBLIC_URL=https://meet.example.com
JVB_ADVERTISE_IPS=203.0.113.10
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=meet.example.com
[email protected]
ENABLE_HTTP_REDIRECT=1
ENABLE_AUTH=1
ENABLE_GUESTS=1
AUTH_TYPE=internal
PUBLIC_URLต้องเป็นโดเมนจริง ไม่เช่นนั้นลิงก์เชิญและการเชื่อมต่อจะผิดJVB_ADVERTISE_IPSคือ IP ที่ผู้ใช้ส่งภาพและเสียงเข้ามา ต้องเป็น IP สาธารณะของเครื่องENABLE_AUTH=1คู่กับENABLE_GUESTS=1ทำให้เฉพาะผู้มีบัญชีเปิดห้องใหม่บน Jitsi Meet ได้ แต่คนนอกยังเข้าร่วมห้องที่เปิดแล้วได้ ป้องกันคนแปลกหน้าใช้เซิร์ฟเวอร์ของคุณเปิดห้องเอง