Media Server
Jellyfin
A free and open-source media server for streaming movies, music, and photos as a Plex alternative.
Review notes
Supports hardware transcoding with GPU. Mount media directories separately and configure libraries before inviting users.
Deployment guide
Run a single Docker container, mount media directories, and configure transcoding if needed.
- Create media storage directories (movies, music, photos) on the host.
- Run the Jellyfin container with volume mounts for media and config.
- Open the web UI, create an admin account, and configure media libraries.
- Enable hardware transcoding in Settings if a GPU is available.
- Put an HTTPS reverse proxy in front for internet access.
Backup:Back up the config directory containing the database and metadata. Media files need separate backup.
Copy and run on your server
Use each block separately: save the compose file, or copy the bash script to create it and start the container.
docker-compose.ymlyaml
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
volumes:
- ./config:/config
- ./cache:/cache
- /path/to/media:/media:ro
ports:
- "8096:8096"
environment:
JELLYFIN_PublishedServerUrl: "http://SERVER_IP:8096"
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/jellyfin
sudo chown "$USER":"$USER" /opt/jellyfin
cd /opt/jellyfin
cat > docker-compose.yml <<'COMPOSE'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
volumes:
- ./config:/config
- ./cache:/cache
- /path/to/media:/media:ro
ports:
- "8096:8096"
environment:
JELLYFIN_PublishedServerUrl: "http://SERVER_IP:8096"
restart: unless-stopped
COMPOSE
docker compose up -d
echo "Jellyfin is running on http://SERVER_IP:8096"Stack
C#Docker