Jellyfin เป็นเซิร์ฟเวอร์สื่ออเลข (media server) โปรแกรมอิสระและเปิดรหัสต้นฉบับ ที่อนุญาตให้คุณสตรีมหนัง เพลง รูปภาพ วิดีโอส่วนตัวของคุณไปยังอุปกรณ์ต่างๆ ทั่วโลก Jellyfin มีความคล้ายคลึงกับ Plex แต่มีข้อดีสำคัญ: ไม่ต้องสมัครสมาชิก ไม่มีการติดตามข้อมูลส่วนตัว ไม่มีโฆษณา และคุณควบคุมเซิร์ฟเวอร์ของคุณเองอย่างสมบูรณ์ บทความนี้สอนวิธีติดตั้ง Jellyfin บน Ubuntu 22.04 VPS ตั้งค่า Nginx reverse proxy พร้อม HTTPS อย่างปลอดภัย และรักษาความปลอดภัยการเข้าถึงระยะไกล
สรุปสั้น: Jellyfin เป็นโปรแกรมเซิร์ฟเวอร์สื่อเปิดต้นฉบับที่ปลอดภัยไม่มีค่าใช้จ่ายและไม่ติดตามข้อมูล บทความนี้ครอบคลุมการติดตั้งบน Ubuntu 22.04 VPS การตั้งค่า Nginx reverse proxy พร้อม HTTPS Let's Encrypt การเพิ่มไลบรารี่สื่อและการรักษาความปลอดภัยระยะไกล สำหรับ VPS ที่ไม่มี GPU ให้จำกัดสตรีมพร้อมกันและ bitrate เพื่อหลีกเลี่ยงการใช้ CPU มากเกินไป
Jellyfin คืออะไร และแตกต่างจาก Plex อย่างไร
Jellyfin เป็นโปรแกรมบริการสื่อที่ช่วยให้คุณรวบรวมไฟล์มีเดีย (ภาพยนตร์ ทีวี เพลง ภาพถ่าย พอดแคสต์ และหนังสือ) ไว้ในที่เดียว จากนั้นสตรีมไปยังสมาร์ทโฟน คอมพิวเตอร์ สมาร์ททีวี แท็บเล็ต หรืออุปกรณ์อื่นๆ ผ่านเครือข่าย
ความแตกต่างหลักจาก Plex: Jellyfin เป็นโปรแกรมอิสระอย่างแท้จริง ไม่มีบัญชีบนระบบออนไลน์ของบริษัท ไม่มีการติดตามการใช้งาน ไม่มีโฆษณาแอบซ่อน และคุณเป็นเจ้าของเซิร์ฟเวอร์ทั้งหมด Plex เป็นบริการเชิงพาณิชย์ที่อาจขอค่าสมาชิก Emby ก็เป็นบริษัทพาณิชย์เช่นกัน แต่ Jellyfin ถูกพัฒนาโดยชุมชนและไม่มีแรงจูงใจทางการตลาดใดๆ
เหตุใดจึงควรใช้ Jellyfin บน VPS
- ความเป็นส่วนตัว: หนังและเพลงของคุณไม่ได้ถูกส่งผ่านเซิร์ฟเวอร์ของบริษัยอื่น ทั้งหมดอยู่บน VPS ของคุณเอง
- ไม่มีค่าใช้จ่าย: ไม่ต้องจ่ายค่าสมัครสมาชิกรายเดือน ไม่มีพรีเมียมหรือข้อจำกัด
- การควบคุมทั้งหมด: คุณตัดสินใจว่าอะไรจะให้เข้าถึงได้ ใครจะใช้งาน และเซิร์ฟเวอร์อยู่บน VPS ของคุณเองโดยมีสิทธิ์เต็มที่
- ติดตั้งได้ทุกที่: บน VPS ในประเทศไทย สิงคโปร์ หรือมุมไหนของโลก ได้ตามที่คุณต้องการ
- เข้าถึงจากระยะไกล: สตรีม 4K ของคุณไปยังอุปกรณ์ใดก็ได้พร้อม HTTPS ที่ปลอดภัย
เงื่อนไขเบื้องต้นและข้อกำหนดเฉพาะ
เพื่อให้ Jellyfin ทำงานได้ดี คุณต้อง:
- VPS ที่ใช้ Ubuntu 22.04 LTS: พร้อมสิทธิ์ root หรือการเข้าถึง sudo
- ที่เก็บข้อมูล SSD: อย่างน้อย 500 GB ขึ้นไป (ขึ้นอยู่กับจำนวนสื่อของคุณ) ห้ามใช้ drive ที่ช้า
- CPU multi-core: อย่างน้อย 2 cores เพื่อจัดการสตรีมพร้อมกัน 4+ cores ดีกว่า เพราะ VPS ส่วนใหญ่ไม่มี GPU
- RAM: 2-4 GB แนะนำขึ้นต้นอย่างน้อย 2 GB
- แบนด์วิดท์: อย่างน้อย 10 Mbps ขึ้นไป VPS จากผู้ให้บริการเช่น AsiaGB ที่ใช้ SSD สามารถจัดการได้ดี
- ชื่อโดเมน: สำหรับเข้าถึง HTTPS ระยะไกลอย่างปลอดภัย (เช่น media.example.com)
| ลักษณะ | ข้อกำหนดขั้นต่ำ | แนะนำ |
|---|---|---|
| CPU cores | 2 | 4 ขึ้นไป |
| RAM | 2 GB | 4 GB |
| SSD Storage | 500 GB | 1-2 TB |
| Bandwidth | 10 Mbps | 50 Mbps ขึ้นไป |
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
การติดตั้ง Jellyfin บน Ubuntu 22.04
ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้ง Jellyfin จากที่เก็บ Ubuntu อย่างเป็นทางการ
ขั้นที่ 1: อัปเดตแพคเกจระบบ
ก่อนติดตั้งอะไรใหม่ ให้อัปเดตรายชื่อแพคเกจและ upgrade แพคเกจที่มีอยู่:
sudo apt update sudo apt upgrade -y
ขั้นที่ 2: เพิ่ม Jellyfin Repository อย่างเป็นทางการ
Jellyfin มี repository Ubuntu อย่างเป็นทางการ ซึ่งจะทำให้การอัปเดตในอนาคตดำเนินการโดยอัตโนมัติ:
sudo apt install curl gnupg2 -y curl https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add - echo "deb https://repo.jellyfin.org/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/jellyfin.list sudo apt update
ขั้นที่ 3: ติดตั้ง Jellyfin
ตอนนี้ติดตั้ง Jellyfin และบริการ systemd ที่เกี่ยวข้อง:
sudo apt install jellyfin -y
ขั้นที่ 4: เริ่มต้น Jellyfin Service
เปิดใช้งาน Jellyfin เพื่อให้เริ่มต้นโดยอัตโนมัติเมื่อ VPS รีบูต จากนั้นเริ่มต้นบริการ:
sudo systemctl enable jellyfin sudo systemctl start jellyfin
ตรวจสอบว่า Jellyfin กำลังทำงาน:
sudo systemctl status jellyfin
ค้นหาบรรทัดที่บอก "active (running)" ถ้าเป็นเช่นนั้น Jellyfin ก็เริ่มต้นสำเร็จ
การตั้งค่า Jellyfin ผ่าน Web GUI
เมื่อ Jellyfin เริ่มต้น ให้เปิดเว็บเบราว์เซอร์บนเครื่องลูกค้า (เดสก์ท็อป แล็ปท็อป หรือสมาร์ทโฟน) และไปยัง:
http://your-vps-ip:8096
แทนที่ "your-vps-ip" ด้วยที่อยู่ IP จริงของ VPS ของคุณ (เช่น 192.0.2.123) หรือ localhost หากเปิดจาก VPS เอง
คุณจะเห็นหน้าการตั้งค่าเซิร์ฟเวอร์ Jellyfin ที่สวยงาม ทำตามขั้นตอน:
- เลือกภาษา: เลือก Thai (ไทย) หรือ English ตามที่ต้องการ
- สร้างบัญชีผู้ดูแลระบบ: ตั้งชื่อผู้ใช้และรหัสผ่านแรก ใช้รหัสผ่านแข็งแกร่งที่มี UPPERCASE lowercase ตัวเลข และสัญลักษณ์
- ตั้งค่าภาษา/สถานที่: เลือกประเทศและมูลค่าเงินให้ถูกต้อง
- ตั้งค่าไลบรารี่สื่อ: Jellyfin จะถามว่าคุณต้องการเพิ่มไลบรารี่สื่อหรือไม่ คุณสามารถข้ามไปได้สำหรับตอนนี้ - เราจะเพิ่มในขั้นตอนต่อไป
เคล็ดลับ: อย่าลืมรหัสผ่านผู้ดูแลระบบแรก บันทึกไว้ในที่ปลอดภัย เนื่องจากรหัสผ่านนี้จะให้การเข้าถึงไลบรารี่เพลงและหนังส่วนตัวของคุณ
การเพิ่มไลบรารี่สื่อ
ตอนนี้คุณต้องสร้างโฟลเดอร์บน VPS เพื่อเก็บไฟล์สื่อและบอก Jellyfin ตำแหน่ง
ขั้นที่ 1: สร้างโฟลเดอร์สื่อบน VPS
เข้าถึง VPS ของคุณผ่าน SSH และสร้างโครงสร้างโฟลเดอร์:
sudo mkdir -p /mnt/media/{movies,tv,music,photos}
sudo chown -R jellyfin:jellyfin /mnt/media
sudo chmod -R 755 /mnt/media
คำสั่งนี้สร้าง: /mnt/media/movies, /mnt/media/tv, /mnt/media/music, และ /mnt/media/photos ทั้งหมดเป็นเจ้าของโดย jellyfin user
ขั้นที่ 2: เพิ่มไลบรารี่ใน Jellyfin Web UI
กลับไปที่หน้า Jellyfin บนเว็บ คลิก "Libraries" ที่ด้านข้าง
- คลิก "Add Library"
- เลือกประเภทสื่อ: Movies, TV Shows, Music, Photos ฯลฯ
- คลิก "Next"
- ตั้งเส้นทาง: /mnt/media/movies (สำหรับหนัง) หรือ /mnt/media/tv (สำหรับซีรี่ส์ทีวี) ฯลฯ
- คลิก "Add" เมื่อเสร็จแล้ว
Jellyfin จะสแกนโฟลเดอร์โดยอัตโนมัติและค้นหาข้อมูล metadata (ชื่อเรื่อง ปีที่ออกมา โปสเตอร์ การให้คะแนน เป็นต้น) จากฐานข้อมูลออนไลน์
เคล็ดลับ: จัดระเบียบไฟล์วิดีโอในโฟลเดอร์ย่อยตามชื่อภาพยนตร์ เช่น /mnt/media/movies/The-Matrix/ หรือ /mnt/media/tv/Breaking-Bad/Season-1/ Jellyfin ใช้ชื่อไฟล์และชื่อโฟลเดอร์เพื่อค้นหา metadata ตัวอย่าง The.Matrix.1999.1080p.x264.mkv จะจับคู่กับภาพยนตร์เรื่องนั้นบน TMDB ได้ดี
การพิจารณาการเข้ารหัส (Transcoding) สำหรับ VPS
การเข้ารหัสคือการแปลงวิดีโอจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่งหรือลดคุณภาพลง (เช่น 4K เป็น 1080p) เพื่อให้สตรีมข้อมูลน้อยลง VPS ส่วนใหญ่ไม่มี GPU (บัตรกราฟิก) ดังนั้นการเข้ารหัสจึงเป็นเรื่องของซอฟต์แวร์ที่ใช้ CPU มากและอาจทำให้ระบบช้าลง
ความท้าทายของการเข้ารหัสบน VPS
- CPU-intensive: วิดีโอ 4K อาจต้องใช้ 80-100% CPU เพื่อเข้ารหัสในเวลาจริง
- สตรีมพร้อมกัน: ถ้า VPS ของคุณมี 4 cores คุณสามารถเข้ารหัส 1-2 สตรีมพร้อมกันเท่านั้น ไม่ใช่ 10 สตรีม
- Bitrate: วิดีโอ 4K อาจต้องการ 15-25 Mbps แต่ VPS อาจไม่สามารถจัดการได้
การแก้ปัญหา
- จำกัดสตรีมพร้อมกัน: ตั้งค่า Jellyfin ให้อนุญาตเฉพาะ 1-2 สตรีมพร้อมกัน ไปที่ Admin > Policies > Maximum concurrent streams
- ขอให้ผู้ใช้ลดบิตเรท: ในแอปพลิเคชัน Jellyfin บนอุปกรณ์ ขอให้ผู้ใช้เลือก "Remote" ตั้ง bitrate ให้ต่ำลง (1-5 Mbps แทน 8-20 Mbps)
- เข้ารหัสล่วงหน้า: ถ้า VPS ของคุณมีสิทธิ์สูงสุด ให้พิจารณาเข้ารหัสไฟล์สื่อล่วงหน้าจนกว่าจะมีอุปกรณ์ที่หลากหลาย (แต่นี่ต้องใช้เวลาและพื้นที่มากมาย)
- ปิดใช้งาน Hardware Acceleration: ถ้า VPS ไม่มี GPU ให้ปล่อยให้ Hardware Acceleration ปิดใช้งาน
ข้อควรระวัง: อย่ากำหนด transcoding bitrate ให้สูงเกินไป หากลูกค้าของคุณพยายามสตรีม 4K และ VPS พยายามเข้ารหัสลง 1080p @ 10 Mbps VPS อาจเกิด CPU spike และหยุดทำงาน
ตั้งค่า Nginx Reverse Proxy พร้อม HTTPS
Jellyfin ฟังที่ localhost:8096 ตามค่าเริ่มต้น สำหรับการเข้าถึงจากระยะไกลอย่างปลอดภัย ใช้ Nginx reverse proxy ด้านหน้า Jellyfin พร้อม HTTPS
ขั้นที่ 1: ติดตั้ง Nginx และ Certbot
ติดตั้ง Nginx web server และ certbot เพื่อจัดการใบรับรอง Let's Encrypt:
sudo apt install nginx certbot python3-certbot-nginx -y
ขั้นที่ 2: ตั้งค่า Nginx Configuration
สร้างไฟล์การตั้งค่า Nginx สำหรับ Jellyfin:
sudo nano /etc/nginx/sites-available/jellyfin
วาง configuration ต่อไปนี้ (แทนที่ media.example.com ด้วยโดเมนของคุณ):
server {
listen 80;
server_name media.example.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name media.example.com;
ssl_certificate /etc/letsencrypt/live/media.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 20M;
location / {
proxy_pass http://127.0.0.1:8096;
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_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
}
}
กด Ctrl+X จากนั้น Y เพื่อบันทึก
ขั้นที่ 3: เปิดใช้ Nginx site
สร้างลิงก์สัญลักษณ์จาก sites-available ไปยัง sites-enabled:
sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
คำสั่ง nginx -t ตรวจสอบไวยากรณ์ configuration ถ้าเห็น "syntax is ok" ก็เรียบร้อย
ขั้นที่ 4: ขอใบรับรอง Let's Encrypt
ใช้ certbot เพื่อให้ได้ใบรับรอง HTTPS ฟรี:
sudo certbot certonly --nginx -d media.example.com
ตอบคำถามของ certbot (ที่อยู่อีเมล ยอมรับ ToS ฯลฯ) ใบรับรองจะถูกเก็บไว้ที่ /etc/letsencrypt/live/media.example.com/
ขั้นที่ 5: ตั้งค่า Jellyfin เพื่อรู้เกี่ยวกับ HTTPS
ใน Jellyfin web UI ไปที่ Admin > Networking:
- ตั้ง "Public HTTPS Port" เป็น 443
- ตั้ง "HTTPS Certificate Path" เป็น /etc/letsencrypt/live/media.example.com/fullchain.pem
- ตั้ง "HTTPS Key Path" เป็น /etc/letsencrypt/live/media.example.com/privkey.pem
- บันทึก
ตอนนี้ Jellyfin สามารถเข้าถึงได้จาก https://media.example.com ด้วย HTTPS ที่ปลอดภัย
ข้อควรระวัง: อย่าเปลี่ยน port เริ่มต้น 8096 ใน Jellyfin เอง Nginx จะทำการกำหนดเส้นทาง port 80 และ 443 ไปยังเซิร์ฟเวอร์ Jellyfin บน 8096 โดยอัตโนมัติ
ความปลอดภัยสำหรับการเข้าถึงระยะไกล
เนื่องจากคุณสตรีมเนื้อหาส่วนตัวของคุณผ่าน HTTPS ให้แน่ใจว่ามีการปลอดภัยที่ดี
การป้องกันการเข้าถึงที่ไม่ได้รับอนุญาต
- รหัสผ่านแข็งแกร่ง: ใช้รหัสผ่านยาวมีตัวพิมพ์ใหญ่ตัวเล็ก ตัวเลข และสัญลักษณ์ ตัวอย่าง MyJelly9@2024!Secure
- ปิดใช้งานการลงทะเบียนสาธารณะ: ไปที่ Admin > Policies > Allow user registration ตั้งเป็น Off เพื่อไม่ให้ใครสมัครสมาชิกได้เอง
- เพิ่มผู้ใช้ด้วยตนเอง: เมื่อต้องการให้ใครเข้าถึงได้ ให้สร้างบัญชีด้วยตนเองและแจ้งรหัสผ่านแก่ผู้นั้นอย่างปลอดภัย
- ตรวจสอบการเข้าถึง: ไปที่ Admin > Logs เป็นครั้งคราวเพื่อดูว่าใครเข้าถึงและเมื่อไร
การเพิ่มความปลอดภัยด้วย VPN (ไม่บังคับ)
ถ้าคุณต้องการความเป็นส่วนตัวมากขึ้น ให้พิจารณาให้เข้าถึง Jellyfin ผ่าน VPN เท่านั้น (เช่น WireGuard หรือ OpenVPN บน VPS) แทนการเปิดให้สาธารณะเข้าถึงได้ อย่างไรก็ตาม นี่ต้องการการตั้งค่าเพิ่มเติม
เคล็ดลับด้านความปลอดภัย: Cloudflare Tunnel (ฟรี) เป็นทางเลือกอื่น: สร้างช่องสัญญาณเข้ารหัสจาก VPS ของคุณไปยัง Cloudflare และเข้าถึง Jellyfin ผ่านโดเมน Cloudflare หากไม่เลิกเปิด port ใดๆ บน VPS นอกสำหรับ SSH โดยตรง
ตั้งค่า Firewall ด้วย UFW
ป้องกัน VPS ของคุณโดยอนุญาตเฉพาะ port ที่จำเป็น:
เปิดใช้งาน UFW
sudo ufw enable sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp
ถ้าต้องการเข้าถึง Jellyfin บนเครือข่าย LAN โดยตรง (ไม่ผ่าน Nginx) ก็เพิ่มได้:
sudo ufw allow 8096/tcp
แต่ถ้าคุณใช้ Nginx reverse proxy (แนะนำ) คุณไม่จำเป็นต้องเปิด 8096 สำหรับอินเทอร์เน็ต Nginx จัดการจากภายนอก
ตรวจสอบสถานะ Firewall
sudo ufw status
ควรแสดง port 22, 80, และ 443 เป็น "ALLOW"
สรุป
คุณได้ติดตั้ง Jellyfin สำเร็จบน Ubuntu VPS ตั้งค่า Nginx reverse proxy พร้อม HTTPS ปลอดภัย เพิ่มไลบรารี่สื่อ และรักษาความปลอดภัยการเข้าถึงระยะไกล ตอนนี้ Jellyfin พร้อมสตรีมหนังเพลงรูปภาพส่วนตัวของคุณไปยังอุปกรณ์ใดก็ได้บนโลก
ข้อควรจำสำคัญ:
- VPS ส่วนใหญ่ไม่มี GPU ดังนั้นการเข้ารหัส CPU-intensive จึงจำกัด - จำกัดสตรีมพร้อมกันและบิตเรท
- ใช้ HTTPS เสมอและรหัสผ่านแข็งแกร่ง
- ปิดการลงทะเบียนสาธารณะและจัดการผู้ใช้ด้วยตนเอง
- พิจารณา VPN หรือ Cloudflare Tunnel เพิ่มเติมสำหรับความปลอดภัยมากขึ้น
- ตรวจสอบ logs เป็นครั้งคราว
คำถามที่พบบ่อย (FAQ)
Jellyfin ต่างจาก Plex อย่างไร?
Jellyfin เป็นโปรแกรมอิสระและเปิดรหัสต้นฉบับ ไม่มีการติดตามข้อมูล ไม่มีค่าสมัครสมาชิก ไม่มีโฆษณา และคุณเป็นเจ้าของเซิร์ฟเวอร์ทั้งหมด Plex เป็นบริการเชิงพาณิชย์ที่อาจขอค่าสมาชิกและติดตามข้อมูลการใช้งาน
จะเพิ่มหนังลงใน Jellyfin ได้อย่างไร?
สร้างโฟลเดอร์ /mnt/media/movies บน VPS คัดลอกไฟล์วิดีโอ (.mkv .mp4 ฯลฯ) เข้าไป ในเว็บ UI ของ Jellyfin ไปที่ Libraries > Add Library เลือก Movies ตั้งเส้นทาง /mnt/media/movies บันทึก Jellyfin จะสแกนโฟลเดอร์โดยอัตโนมัติ
VPS ไม่มี GPU ได้อย่างไรทำการเข้ารหัส?
VPS ส่วนใหญ่ใช้การเข้ารหัสซอฟต์แวร์ (CPU) ซึ่งใช้ CPU มาก ให้จำกัดสตรีมพร้อมกัน 1-2 สตรีม ขอให้ผู้ใช้เลือก bitrate ต่ำลง (1-5 Mbps) และวิดีโอต่ำกว่า 4K เพื่อหลีกเลี่ยงการใช้ CPU มากเกินไป
ทำให้ Jellyfin ปลอดภัยบนอินเทอร์เน็ตได้อย่างไร?
ใช้ HTTPS ที่มีใบรับรองที่ถูกต้อง (Let's Encrypt) ตั้งรหัสผ่านแข็งแกร่ง ปิดการลงทะเบียนสาธารณะ ตรวจสอบ logs เป็นครั้งคราว และพิจารณา VPN หรือ Cloudflare Tunnel เพื่อเพิ่มความปลอดภัย
เริ่มต้นใช้งาน VPS AsiaGB วันนี้
VPS AsiaGB ใช้ SSD Storage ทุก Plan เลือก Datacenter ไทยหรือสิงคโปร์ได้ พร้อม Root Access เต็มรูปแบบ เริ่มต้น 500 บาท/เดือน (Linux) พร้อมทีมซัพพอร์ตภาษาไทย
ดูแพ็กเกจ VPS