KnowledgebaseSelf-Hosting › Jellyfin on a LYLIX VPS — media streaming server

Jellyfin on a LYLIX VPS — media streaming server

Jellyfin is the leading open-source media server — fork of Emby, alternative to Plex, no licensing fees, no central account requirement. Stream your own music/movies/TV library to clients on Web, iOS, Android, Roku, Apple TV. This article covers the practical setup on a LYLIX VPS, plus the sizing math you need to know before ordering.

The sizing question (read this first)

The constraints, in order of impact:

  1. Storage — your media library size. 4K movies are 40-80 GB each; 1080p TV is 1-3 GB per episode. A modest library (100 movies + a few TV seasons) is 1-2 TB. The LYLIX plans top out below that; for libraries beyond a few hundred GB, consider mounting external storage (Backblaze B2, Wasabi, or a friend's NAS via SSH/rclone).
  2. CPU for transcoding — Jellyfin transcodes on the fly when the client can't play the source format directly. Software transcode of a 1080p stream needs roughly 1-2 vCPU; 4K transcoding needs 4+ vCPU or hardware acceleration. LYLIX VPSes don't offer GPU passthrough, so plan around CPU-only transcoding.
  3. Bandwidth — for remote streaming. A 1080p stream at decent quality is 5-15 Mbps. Hosting for one viewer is fine on any LYLIX plan; for a household of 3 streaming simultaneously, you need 30-50 Mbps sustained.

If you mostly stream to clients on the same network as the server, transcoding rarely fires and bandwidth doesn't matter. If you stream from your VPS to your living-room Apple TV across the Internet, transcoding fires whenever the client wants a format Jellyfin needs to re-encode, and CPU becomes the constraint.

Install

Jellyfin packages for Debian / Ubuntu / AlmaLinux are at jellyfin.org. Quick install on Debian:

curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash

This adds the official repo and installs the package. The service runs as the jellyfin user; data lives in /var/lib/jellyfin/; media goes wherever you point Jellyfin at via the web UI.

systemctl status jellyfin
# Listens on 8096 (HTTP) and 8920 (HTTPS) by default; bind to loopback if you'll reverse-proxy

Media storage

Options:

  • Local disk on the VPS — simplest, fastest streaming, limited by the plan's disk size.
  • Rclone-mounted cloud storage (B2, Wasabi, S3) — unlimited storage, slower initial play (warm-up reads from cloud), no transcoding speed issues once buffered. Setup involves rclone mount as a systemd service.
  • NFS/SSHFS to a NAS — if you have a NAS reachable from the VPS, mount it. Latency matters; works best when the NAS is on a fast nearby network.

Once mounted, point Jellyfin at the media path via Dashboard → Libraries → Add Library.

Reverse proxy + TLS

# /etc/caddy/Caddyfile
jellyfin.example.com {
    reverse_proxy localhost:8096
}

Caddy handles WebSocket upgrade for the realtime UI. nginx works too; copy the WebSocket-proxy pattern from the reverse-proxy-ssl-patterns article.

Hardware transcoding (NOT available on LYLIX)

If you've read other Jellyfin guides talking about NVENC, QuickSync, or VAAPI hardware transcoding — none of those are available on LYLIX's VPS platform. Transcoding is software-only on your VPS's CPU cores.

What this means practically: pre-transcode your library once to a format clients can direct-play (h.264 1080p in MKV or MP4 container, AAC audio, SRT subtitles), and Jellyfin will rarely need to live-transcode. The ffmpeg-based scripts at the unofficial Jellyfin discord get circulated for this.

User accounts and access

Default install requires an admin account at first run. Add additional users (family, friends) via Dashboard → Users. Each user gets their own watch progress, library access (you can restrict libraries per-user), and playback history.

For external access, the choice is:

  • Expose Jellyfin via the reverse proxy on the public Internet, with strong passwords. Acceptable for personal use; configure fail2ban for the login endpoint.
  • Keep Jellyfin internal, access via WireGuard road-warrior VPN. Higher friction for users but no public-internet exposure.

Clients

  • Web — works in any browser, no install. Reasonable default for desktops.
  • Jellyfin Mobile (iOS / Android) — free, plays most formats, syncs progress.
  • Jellyfin Media Player (Win/Mac/Linux) — wraps mpv for better direct-play support than the web UI.
  • Roku — community-maintained channel.
  • Apple TV — community-maintained Swiftfin app.

Backups

Back up /var/lib/jellyfin/ for the metadata, watch history, user accounts. NOT the media — that lives wherever you put it and can be re-acquired. The metadata is what's painful to lose.

systemctl stop jellyfin
restic backup /var/lib/jellyfin /etc/jellyfin
systemctl start jellyfin

Stop-during-backup avoids inconsistent SQLite snapshots; if you can't tolerate the 30-second downtime, use SQLite's online backup API or accept the slight risk.

Also Read

« « Back

Powered by WHMCompleteSolution