Add Jellyfin media server Docker configuration
- Docker compose setup with hardware acceleration support - Network host mode for optimal streaming performance - Volume mounts for config, cache, and media directories - Memory limits and resource management - Device access for GPU hardware transcoding - Integration with existing media folder structure 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
53
config/docker/jellyfin/docker-compose.yml
Normal file
53
config/docker/jellyfin/docker-compose.yml
Normal file
@@ -0,0 +1,53 @@
|
||||
# DEPLOYMENT LOCATION: /opt/docker/jellyfin/docker-compose.yml
|
||||
# Deploy with: sudo mkdir -p /opt/docker/jellyfin && sudo cp config/docker/jellyfin/docker-compose.yml /opt/docker/jellyfin/
|
||||
# Start with: cd /opt/docker/jellyfin && sudo docker-compose up -d
|
||||
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
jellyfin:
|
||||
image: jellyfin/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
restart: unless-stopped
|
||||
|
||||
# User and group IDs to match host user (hoborg)
|
||||
user: 1000:1000
|
||||
|
||||
# Environment variables
|
||||
environment:
|
||||
- JELLYFIN_PublishedServerUrl=https://ak-homelab.duckdns.org/media
|
||||
|
||||
# Network mode for better performance and hardware acceleration
|
||||
network_mode: host
|
||||
|
||||
# Volume mounts - using same folders as Copyparty
|
||||
volumes:
|
||||
# Jellyfin configuration and data
|
||||
- /opt/docker/jellyfin/config:/config
|
||||
- /opt/docker/jellyfin/cache:/cache
|
||||
|
||||
# Media folders (shared with Copyparty)
|
||||
- /home/hoborg/Music:/media/music:ro
|
||||
- /home/hoborg/Videos:/media/videos:ro
|
||||
- /home/hoborg/shared:/media/shared:ro
|
||||
|
||||
# Additional media folders if they exist
|
||||
# - /home/hoborg/Movies:/media/movies:ro
|
||||
# - /home/hoborg/TV:/media/tv:ro
|
||||
|
||||
# Device access for hardware acceleration (Intel/AMD GPU)
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
|
||||
# Memory limits for container stability
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
reservations:
|
||||
memory: 512M
|
||||
|
||||
# Optional: Create a custom network if not using host networking
|
||||
# networks:
|
||||
# jellyfin:
|
||||
# driver: bridge
|
||||
47
config/docker/jellyfin/setup.sh
Executable file
47
config/docker/jellyfin/setup.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
# DEPLOYMENT LOCATION: /opt/docker/jellyfin/setup.sh
|
||||
# Deploy with: sudo cp config/docker/jellyfin/setup.sh /opt/docker/jellyfin/ && sudo chmod +x /opt/docker/jellyfin/setup.sh
|
||||
|
||||
set -e
|
||||
|
||||
echo "Setting up Jellyfin media server..."
|
||||
|
||||
# Create necessary directories
|
||||
echo "Creating Jellyfin directories..."
|
||||
sudo mkdir -p /opt/docker/jellyfin/{config,cache}
|
||||
|
||||
# Set proper ownership for Jellyfin directories
|
||||
echo "Setting directory ownership..."
|
||||
sudo chown -R 1000:1000 /opt/docker/jellyfin/
|
||||
|
||||
# Copy docker-compose.yml if it doesn't exist
|
||||
if [ ! -f /opt/docker/jellyfin/docker-compose.yml ]; then
|
||||
echo "Copying docker-compose.yml..."
|
||||
sudo cp /home/hoborg/homelab/config/docker/jellyfin/docker-compose.yml /opt/docker/jellyfin/
|
||||
fi
|
||||
|
||||
# Check if media directories exist, create if needed
|
||||
echo "Checking media directories..."
|
||||
for dir in Music Videos shared; do
|
||||
if [ ! -d "/home/hoborg/$dir" ]; then
|
||||
echo "Creating /home/hoborg/$dir directory..."
|
||||
mkdir -p "/home/hoborg/$dir"
|
||||
fi
|
||||
done
|
||||
|
||||
# Start Jellyfin container
|
||||
echo "Starting Jellyfin container..."
|
||||
cd /opt/docker/jellyfin
|
||||
sudo docker-compose pull
|
||||
sudo docker-compose up -d
|
||||
|
||||
echo "Jellyfin setup complete!"
|
||||
echo "Access URL: http://localhost:8096"
|
||||
echo "External URL: https://ak-homelab.duckdns.org/media (after nginx setup)"
|
||||
echo ""
|
||||
echo "Media folders mapped:"
|
||||
echo " - Music: /home/hoborg/Music → /media/music"
|
||||
echo " - Videos: /home/hoborg/Videos → /media/videos"
|
||||
echo " - Shared: /home/hoborg/shared → /media/shared"
|
||||
echo ""
|
||||
echo "To check status: cd /opt/docker/jellyfin && sudo docker-compose logs -f jellyfin"
|
||||
Reference in New Issue
Block a user