Should You Expose Jellyfin Directly or Require VPN Access?

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

Do not expose Jellyfin's raw application port directly to the public Internet as your default remote-access design. For a small trusted user group, a VPN or private tunnel is usually the simplest security boundary; for broader client access, use a properly configured HTTPS reverse proxy instead.

The choice is therefore not “open port 8096 or use VPN.” First eliminate direct application-port exposure, then decide whether every remote client can join a private network. If yes, VPN/tunnel access minimizes the public application surface. If not, an HTTPS reverse proxy can provide public access while keeping the Jellyfin backend private and preserving client identity correctly.

Treat Direct Application-Port Exposure as the Failure Case

A router port forward to Jellyfin's HTTP service gives the Internet a direct path to that application endpoint. Even with a strong password, you lose the extra routing, TLS, logging, and policy layer that a private tunnel or reverse proxy can provide.

Jellyfin's networking documentation explicitly says that opening a port directly to the Internet is insecure and not recommended. Jellyfin port-forwarding warning

If you currently forward the Jellyfin application port, remove that forward only after you have verified the replacement path from outside your LAN. The safe transition is test new access first, then close the old public path and confirm it no longer responds.

Choose VPN or a Private Tunnel for a Small Trusted Group

A VPN-style design works well when the remote users and devices are under your control. The Jellyfin service can remain reachable only on a private overlay address, and remote clients connect as if they were on an authorized private network.

This reduces the number of public application endpoints you operate, but it adds a client requirement: each phone, laptop, TV device, or travel device must support and maintain the VPN or tunnel. That tradeoff is usually acceptable for an administrator, household, or small trusted group.

ZimaSpace's Jellyfin remote-access guide shows several tunnel-style options. Test the exact client mix before committing, because the best security model is not useful if a required TV or shared device cannot join it reliably.

Use an HTTPS Reverse Proxy When Clients Need Ordinary Internet Access

A reverse proxy is the better fit when users need to open a normal HTTPS hostname without first joining a private network. The proxy terminates TLS and forwards requests to Jellyfin on the private side.

Jellyfin officially supports reverse proxies and documents how they can centralize SSL and routing. Jellyfin reverse proxy support Keep the backend port unavailable from the public Internet even though the proxy itself listens publicly on HTTPS.

Use a subdomain or tested subpath, a valid certificate, and only the proxy rules Jellyfin requires. Avoid broad catch-all routes that accidentally expose unrelated services. After configuration, verify login, playback, WebSockets, and redirects from a true external network.

-15% OFF
Single board computer zimaboard2

Configure Known Proxies and Protect Logs

When Jellyfin is behind a reverse proxy, the backend sees the proxy connection unless trusted forwarded headers are handled correctly. That affects remote-access permissions and any logic that distinguishes local from remote clients.

Jellyfin recommends configuring the proxy address under Known Proxies and also warns that some request URLs can contain authentication information, so proxy logs should be protected or sanitized. proxy identity and logging guidance

Verify one external request end-to-end using the reverse-proxy client IP test. If every user appears to come from the proxy address, fix the trust chain before relying on network-based restrictions.

Verify User-Level Remote Permissions and Fail Closed

Jellyfin also lets administrators control remote access per user. A secure network path should not replace user-level restrictions; use both so a network mistake does not automatically grant every account external access.

The Jellyfin networking documentation notes that external access can be allowed or denied per user and that these permissions depend on the network scope being classified correctly. user remote-access permissions

Your final test should include one allowed remote user and one account that should be denied. Stop when the intended user can connect through the VPN/tunnel or HTTPS proxy, the denied user remains blocked, and the raw Jellyfin application port is no longer reachable from the public Internet.

Support & Tips

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.