🎬
VPS

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

เงื่อนไขเบื้องต้นและข้อกำหนดเฉพาะ

เพื่อให้ Jellyfin ทำงานได้ดี คุณต้อง:

ลักษณะ ข้อกำหนดขั้นต่ำ แนะนำ
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 ที่สวยงาม ทำตามขั้นตอน:

  1. เลือกภาษา: เลือก Thai (ไทย) หรือ English ตามที่ต้องการ
  2. สร้างบัญชีผู้ดูแลระบบ: ตั้งชื่อผู้ใช้และรหัสผ่านแรก ใช้รหัสผ่านแข็งแกร่งที่มี UPPERCASE lowercase ตัวเลข และสัญลักษณ์
  3. ตั้งค่าภาษา/สถานที่: เลือกประเทศและมูลค่าเงินให้ถูกต้อง
  4. ตั้งค่าไลบรารี่สื่อ: 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" ที่ด้านข้าง

  1. คลิก "Add Library"
  2. เลือกประเภทสื่อ: Movies, TV Shows, Music, Photos ฯลฯ
  3. คลิก "Next"
  4. ตั้งเส้นทาง: /mnt/media/movies (สำหรับหนัง) หรือ /mnt/media/tv (สำหรับซีรี่ส์ทีวี) ฯลฯ
  5. คลิก "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

การแก้ปัญหา

  1. จำกัดสตรีมพร้อมกัน: ตั้งค่า Jellyfin ให้อนุญาตเฉพาะ 1-2 สตรีมพร้อมกัน ไปที่ Admin > Policies > Maximum concurrent streams
  2. ขอให้ผู้ใช้ลดบิตเรท: ในแอปพลิเคชัน Jellyfin บนอุปกรณ์ ขอให้ผู้ใช้เลือก "Remote" ตั้ง bitrate ให้ต่ำลง (1-5 Mbps แทน 8-20 Mbps)
  3. เข้ารหัสล่วงหน้า: ถ้า VPS ของคุณมีสิทธิ์สูงสุด ให้พิจารณาเข้ารหัสไฟล์สื่อล่วงหน้าจนกว่าจะมีอุปกรณ์ที่หลากหลาย (แต่นี่ต้องใช้เวลาและพื้นที่มากมาย)
  4. ปิดใช้งาน 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:

  1. ตั้ง "Public HTTPS Port" เป็น 443
  2. ตั้ง "HTTPS Certificate Path" เป็น /etc/letsencrypt/live/media.example.com/fullchain.pem
  3. ตั้ง "HTTPS Key Path" เป็น /etc/letsencrypt/live/media.example.com/privkey.pem
  4. บันทึก

ตอนนี้ Jellyfin สามารถเข้าถึงได้จาก https://media.example.com ด้วย HTTPS ที่ปลอดภัย

ข้อควรระวัง: อย่าเปลี่ยน port เริ่มต้น 8096 ใน Jellyfin เอง Nginx จะทำการกำหนดเส้นทาง port 80 และ 443 ไปยังเซิร์ฟเวอร์ Jellyfin บน 8096 โดยอัตโนมัติ

ความปลอดภัยสำหรับการเข้าถึงระยะไกล

เนื่องจากคุณสตรีมเนื้อหาส่วนตัวของคุณผ่าน HTTPS ให้แน่ใจว่ามีการปลอดภัยที่ดี

การป้องกันการเข้าถึงที่ไม่ได้รับอนุญาต

  1. รหัสผ่านแข็งแกร่ง: ใช้รหัสผ่านยาวมีตัวพิมพ์ใหญ่ตัวเล็ก ตัวเลข และสัญลักษณ์ ตัวอย่าง MyJelly9@2024!Secure
  2. ปิดใช้งานการลงทะเบียนสาธารณะ: ไปที่ Admin > Policies > Allow user registration ตั้งเป็น Off เพื่อไม่ให้ใครสมัครสมาชิกได้เอง
  3. เพิ่มผู้ใช้ด้วยตนเอง: เมื่อต้องการให้ใครเข้าถึงได้ ให้สร้างบัญชีด้วยตนเองและแจ้งรหัสผ่านแก่ผู้นั้นอย่างปลอดภัย
  4. ตรวจสอบการเข้าถึง: ไปที่ 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 พร้อมสตรีมหนังเพลงรูปภาพส่วนตัวของคุณไปยังอุปกรณ์ใดก็ได้บนโลก

ข้อควรจำสำคัญ:

คำถามที่พบบ่อย (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