Seedbox for Plex and Jellyfin
This guide covers using a seedbox as a media server. Rather than downloading files to a local machine and then watching them there, you run a media server application directly on the seedbox. Content downloads and becomes immediately available for streaming to any device on your network or across the internet.
Pulsed Media seedboxes run PMSS, which includes a script called install-media-stack.sh that handles the installation of Plex Media Server, Jellyfin, or Emby. You do not need root access or manual package management.
Why use a seedbox as a media server
The main reason is convenience. A seedbox runs continuously in a datacenter, so downloads complete whether or not your computer is on. Once a file is downloaded, a media server running on the same machine can serve it immediately. There is no transfer step between completing a download and being able to watch it.
The secondary reason is bandwidth. Seedboxes sit on fast datacenter connections — 1Gbps, 10Gbps, or 20Gbps depending on the plan. A 50GB movie can finish downloading in minutes. The media server then streams from the seedbox to your device, which only requires enough bandwidth for the video stream itself (typically 10–40 Mbps for 1080p or 4K content), not the original download speed.
The third reason is always-on availability. Family members or housemates can stream from the library at any time, independent of whether a home computer is running.
Plex, Jellyfin, and Emby
Three media server applications are supported through install-media-stack.sh. They do the same core job — organize and stream media — but differ in licensing, account requirements, and feature access.
| Jellyfin | Plex | Emby | |
|---|---|---|---|
| License | Free, open-source (GPL-2.0) | Proprietary (free tier + Plex Pass) | Proprietary (free tier + Emby Premiere) |
| Account required | No — fully self-hosted | Yes — Plex account is mandatory | Optional |
| Cost for hardware transcoding | Free | Plex Pass ($5/month or $120 lifetime) | Emby Premiere required |
| Mobile apps | Free | Plex Pass required for offline sync; streaming free with ads | Premiere required for offline sync |
| Privacy | Fully self-hosted, no telemetry | Routes through Plex relay servers by default | Optional telemetry |
| Plugins and extensions | Open ecosystem | Restricted | Yes |
| Client platforms | Web, Android, iOS, Apple TV, Fire TV, Roku, desktop | Web, Android, iOS, Apple TV, Fire TV, Roku, smart TVs, desktop | Web, Android, iOS, Apple TV, Fire TV, Roku, desktop |
Jellyfin is the only option that requires no account and has no paid tier — all features are available to everyone. It is also the only fully open-source option.
Plex has broader native client support, especially on smart TVs and game consoles, and is more polished for users sharing a library with non-technical family members. The mandatory Plex account and cloud dependency are the trade-off.
Emby sits between the two: a Premiere subscription unlocks the same features that Plex locks behind Plex Pass. The free tier covers basic streaming.
For most seedbox users, Jellyfin covers everything without ongoing cost. See the dedicated Jellyfin article for detailed Jellyfin-specific setup.
Installing a media server
Connect to your seedbox via SSH. The installer is included with every PM seedbox:
bash install-media-stack.sh
The script presents an interactive menu to choose which applications to install. Options include Jellyfin, Plex Media Server, Emby, Radarr, Sonarr, Prowlarr, and SABnzbd. You can install one media server or multiple. All applications run under your user account (not system-wide) and bind to 127.0.0.1, proxied through your per-user lighttpd process over HTTPS.
The installer is idempotent — running it again updates existing installations without losing configuration.
After installation, each application is accessible through your seedbox's HTTPS URL. The exact path depends on the application and your username. The installer prints the access URLs when it finishes.
Plex first-run
Plex requires signing into a Plex account during setup. The first-run wizard appears on your first visit to the Plex URL. After signing in, you name your server and add libraries pointing to your media directories (see folder structure below). The server becomes visible in your Plex account and in the Plex apps on all your devices.
Jellyfin and Emby first-run
Both present a setup wizard on first access: create a local admin account, add media libraries, and configure remote access. No external account is needed. See the Jellyfin article for detailed Jellyfin setup steps.
Organizing your media
Plex and Jellyfin both scrape metadata — poster art, plot summaries, episode titles, cast — from online databases (TheMovieDB, TheTVDB). The scraper matches your files by filename. Correct naming matters.
Your seedbox stores files in /home/USERNAME/data/. Create subdirectories for each media type:
/home/USERNAME/data/
Movies/
Movie Title (2023)/
Movie Title (2023).mkv
TV/
Show Name (2018)/
Season 01/
Show Name - S01E01 - Episode Title.mkv
Show Name - S01E02 - Episode Title.mkv
Season 02/
Show Name - S02E01 - Episode Title.mkv
Music/
Artist Name/
Album Name (2020)/
01 - Track Title.flac
The rules that matter most:
- Include the release year in parentheses after movie titles. This resolves ambiguity when multiple films share a title.
- Use
S01E01notation for TV episodes. This is the universal convention both Plex and Jellyfin recognize. - Keep each movie in its own subdirectory. Multi-file movies (split releases, extras) stay organized this way.
- Do not put different media types in the same directory. Scrapers expect a consistent type per library root.
If you use Radarr and Sonarr (also installable via install-media-stack.sh), they handle renaming automatically when they import or download content. See Automating with Sonarr and Radarr below.
Connecting remotely
No port forwarding required
Both Plex and Jellyfin are already accessible over the internet through the seedbox's HTTPS reverse proxy. You do not need to configure port forwarding, Dynamic DNS, or a VPN tunnel. The URL from the installation step works from anywhere.
Plex additionally offers relay connections through Plex's cloud infrastructure if direct connections fail. This is automatic when you sign in with a Plex account. Jellyfin has no equivalent relay — if the seedbox URL is reachable, Jellyfin works; if it is not, it does not.
Direct play vs transcoding
This is the single most important performance consideration for seedbox media servers.
Direct play means the client plays the file's original video and audio streams without modification. The seedbox streams the raw bytes directly to the client. CPU usage on the seedbox is near zero.
Transcoding means the server re-encodes the video in real time — either because the client device cannot decode the original format, or because the user reduced the quality setting. Transcoding on a shared seedbox uses CPU resources shared across all users on the server.
On shared plans (V1000, M1000, V10G, M10G), each user has limited CPU allocation. Transcoding one 4K stream requires substantial CPU. Transcoding multiple streams simultaneously is not reliable on shared hardware.
The practical guidance:
- Always prefer direct play. Set your Plex or Jellyfin client to "Original Quality" or the maximum available.
- Ensure your client device can play the formats in your library. H.264 (MP4/MKV) plays natively on virtually everything. H.265 (HEVC) requires hardware decoding support on the client side, which most devices released after 2018 have.
- If a device cannot direct play, consider transcoding to H.264 at the source (Radarr/Sonarr can be configured to prefer H.264 releases) rather than relying on real-time transcoding.
Hardware transcoding
Some PM servers have Intel CPUs with integrated graphics that support VAAPI hardware-accelerated transcoding. Hardware transcoding is much faster and less CPU-intensive than software transcoding.
Whether VAAPI is available depends on the specific server your account is on, not the plan tier. To check, SSH into your seedbox and run:
ls /dev/dri/
If renderD128 appears, the server has a DRI device. Your user account also needs to be in the render group — contact support if VAAPI transcoding fails with a permissions error.
In Jellyfin, hardware transcoding is free to enable once the hardware is available. In Plex, it requires a Plex Pass subscription. In Emby, it requires Emby Premiere.
Automating with Sonarr and Radarr
Sonarr (TV) and Radarr (movies) are automation tools that monitor RSS feeds from torrent indexers, match releases against a wanted list, send matching torrents to rTorrent, and then rename and move the downloaded files into the correct library structure. When connected to Jellyfin or Plex, they can also trigger a library scan after import, so new content appears in your media server without manual intervention.
Install both via install-media-stack.sh. After installation, the typical setup is:
- Add indexers in Prowlarr (also installable via the same script). Prowlarr pushes indexer configuration to both Sonarr and Radarr automatically.
- Connect Sonarr and Radarr to rTorrent (or your preferred torrent client) as the download client.
- Connect Sonarr and Radarr to Jellyfin or Plex so they can trigger library refreshes after import.
- Add TV shows to Sonarr and movies to Radarr. They monitor for new releases and download them.
The *arr stack handles naming conventions for you. Files arrive in your media library already named correctly for Plex and Jellyfin scraping.
For rTorrent specifics, see RTorrent vs qBittorrent vs Deluge.
Choosing the right plan
The plan you need depends on how you intend to use the media server.
| Plan | Network | RAID | Good for |
|---|---|---|---|
| V1000 | 1 Gbps | RAID0 | Personal library, direct play only, 1–2 simultaneous streams |
| M1000 | 1 Gbps | RAID5 | Same as V1000 with drive redundancy |
| V10G | 10 Gbps | RAID0 | Larger libraries, faster downloads, still limited on transcoding CPU |
| M10G | 10 Gbps | RAID5 | Same as V10G with RAID5 redundancy |
| Dragon-R | 20 Gbps (shared) | RAID10 | Largest storage options, 20Gbps shared uplink |
A few practical notes:
- A 1080p MKV is typically 8–15 GB. A 4K remux is 50–80 GB. For a personal library of several hundred films, a mid-size plan is sufficient.
- Download speed affects how quickly content is available after adding it. A 10Gbps connection can saturate most tracker upload bandwidth. For media streaming, your device only needs 10–40 Mbps of sustained throughput, which any plan can deliver.
- V-series (RAID0) has higher read/write throughput but loses all data if a drive fails. M-series (RAID5) can survive a single drive failure. For a media library you care about, M-series reduces the risk of losing everything to a hardware failure.
- All shared plans (V1000 through Dragon-R) share CPU with other users. Transcode sparingly, or configure clients for direct play instead.
For current plan sizes and pricing, see pulsedmedia.com.
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Media server URL returns 502 | lighttpd process stopped | Open your seedbox web GUI, go to the Welcome tab, and restart lighttpd |
| Media server URL returns 404 | Wrong URL or trailing slash missing | Verify the URL matches the format above exactly, including the trailing slash |
| Plex cannot find server | Plex relay unreachable or account not linked | Sign in again at https://SERVERNAME.pulsedmedia.com/public-USERNAME/plex/ and check account settings
|
| Video buffers constantly | Client is transcoding instead of direct playing | Set client quality to "Original" or maximum available. Check the Now Playing dashboard to confirm direct play is active. |
| Metadata not found for a file | Filename does not match naming conventions | Rename the file to include title and year (movies) or S##E## notation (TV). Trigger a manual library scan. |
| Hardware transcoding fails | No DRI device or wrong group membership | Run ls /dev/dri/ to check for renderD128. If present, contact support to verify render group membership.
|
| Media server process not running after SSH restart | Service not persisted across reboots | Run bash install-media-stack.sh again to re-register startup hooks
|
| Sonarr/Radarr cannot move files | Files downloaded outside the expected path | Check download client settings in Sonarr/Radarr. Root folder must be set to a path under /home/USERNAME/data/
|
See also
- Jellyfin — dedicated Jellyfin setup guide, including VAAPI hardware transcoding
- Seedbox — overview of seedbox hosting
- PM Software Stack — the management stack that provides install-media-stack.sh
- RTorrent vs qBittorrent vs Deluge — torrent client comparison for seedbox use
- Seedbox access via FTP, SSH and SFTP — how to connect to your seedbox over SSH and SFTP