Homelab - Jellyfin Media Server for Movies and TV Shows
Jellyfin is an open-source media server designed for managing movies, TV shows, and more, allowing you to access and view your content on various devices. It serves as an alternative to proprietary software like Emby and Plex.
Deployment (Using Docker Compose)
Start by creating a compose.yaml
file and paste the following content:
version: "3.5"
services:
jellyfin:
container_name: ${STACK_NAME}_app
image: jellyfin/jellyfin:${APP_VERSION}
#user: uid:gid
#network_mode: 'host'
ports:
- ${APP_PORT}:8096
volumes:
- ${STACK_DIR}/config:/config
- ${STACK_DIR}/cache:/cache
- ${DATA_DIR}:/media
restart: "unless-stopped"
# Optional - an alternative address used for autodiscovery
#environment:
# - JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
#extra_hosts:
# - "host.docker.internal:host-gateway"
(Optional) It's recommended to create a .env
file at the same level as compose.yaml
to customize your environment variables. If you prefer not to use environment variables, you can directly customize your parameters in compose.yaml
(e.g., replace ${STACK_NAME}
with jellyfin
).
STACK_NAME=jellyfin
STACK_DIR=xxx # Customize your project storage path, e.g., ./jellyfin
DATA_DIR=xxx # Customize your media storage path, e.g., ./video
# jellyfin
APP_VERSION=latest
APP_PORT=xxxx # Customize the access port, choose an available one
If you have a NAS, you can also mount storage space from your NAS using the NFS protocol, saving server space for your media. For more details, please refer to Mounting Synology NAS Hard Drives for Space Expansion on Linux (NFS).
Finally, execute the docker compose up -d
command in the same directory as compose.yaml
to start the orchestrated containers.
Configuration Notes
For mobile access, you can consider using the official Jellyfin App.
References and Acknowledgments
Original: https://wiki-power.com/ This post is protected by CC BY-NC-SA 4.0 agreement, should be reproduced with attribution.
This post is translated using ChatGPT, please feedback if any omissions.