Как сделать медиасервер на Raspberry Pi 4B с Jellyfin
Зачем использовать Raspberry Pi 4B и Jellyfin
Raspberry Pi 4B — один из самых мощных одноплатных компьютеров в своей ценовой категории (менее $150). Он потребляет мало энергии и отлично подходит для непрерывной работы в роли медиасервера. Jellyfin — свободный и открытый сервер медиа-контента, который позволяет хранить и транслировать фильмы, сериалы, музыку и аудиокниги на любые устройства в сети без привязки к облачным сервисам.
Краткие определения:
- Raspberry Pi 4B — небольшой одноплатный компьютер для домашних и учебных проектов.
- Jellyfin — сервер для управления и стриминга локальных медиатек (аналог Plex/Emby, свободный).
Важно: используйте только легально приобретённый контент.
Содержание статьи
- Подготовка оборудования
- Установка ОС и включение SSH
- Установка Jellyfin на Raspberry Pi
- Настройка библиотек и закачка медиатеки
- Доступ извне: домен, порт-форвардинг, HTTPS
- Безопасность и резервные копии
- Отказоустойчивость и производительность
- Тесты и критерии приёмки
- Роли и чек-листы
- Частые проблемы и их решения
Подготовка оборудования
Что понадобится:
- Raspberry Pi 4B (рекомендуется 4 ГБ и выше для комфортной работы).
- SSD через USB 3.0 или высокоёмкая SD-карта (лучше SSD для долговечности и скорости).
- Надёжный блок питания для Pi 4 (5V, 3A или выше по спецификации вашего корпуса/хаба).
- Ethernet-кабель (для стабильного стриминга настоятельно рекомендуется проводное подключение).
- (Опционально) корпус с охлаждением.
Примечание: Wi‑Fi технически работает, но стабильность и качество стрима лучше при проводном подключении.
Важные действия перед установкой ОС:
- Зайдите в нашей инструкции по установке ОС на Raspberry Pi и подготовьте SD/SSD с Raspberry Pi OS.
- При использовании rpi-imager включите SSH, задайте имя пользователя и пароль (кнопка с шестерёнкой в rpi-imager). Запишите эти данные.
Подключите Pi к питанию и роутеру через Ethernet. Монитор не обязателен — дальнейшее управление через SSH.
Найти IP-адрес Raspberry Pi
Откройте веб-интерфейс вашего роутера. Обычно он доступен по адресу 192.168.1.1 или 192.168.0.1 — смотрите документацию роутера. В списке подключённых устройств найдите имя вашего Pi и запишите локальный IP.
Если IP не виден сразу, наведите курсор на метку или откройте раздел с деталями устройства — роутер должен показывать MAC и IP.
Если вы не знакомы с SSH, прочитайте базовую инструкцию по использованию SSH на Windows, macOS и Linux.
Установка Jellyfin
Подключитесь к Pi по SSH с вашего компьютера в локальной сети:
ssh your_username@your.pi.ip.addressВведите пароль. При вводе пароля символы в терминале не отображаются — это нормально.
Обновите пакеты и систему:
sudo apt update
sudo apt upgrade -yДобавьте ключ репозитория Jellyfin и сам репозиторий, чтобы установить актуальную сборку для вашей архитектуры. Установите curl и gnupg, если их ещё нет:
sudo apt install curl gnupg -y
curl -fsSL https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/jellyfin.gpgДобавьте источник репозитория, определив архитектуру и кодовое имя выпуска OS автоматически:
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.listПроверьте содержимое файла:
cat /etc/apt/sources.list.d/jellyfin.listНа свежей Raspberry Pi OS вы увидите строку наподобие:
deb [arch=arm64] https://repo.jellyfin.org/debian bullseye mainУстановите Jellyfin:
sudo apt update
sudo apt install jellyfin -yЗапустите и включите автозапуск сервиса:
sudo systemctl start jellyfin
sudo systemctl enable jellyfinДоступ к Jellyfin в локальной сети
Откройте браузер на любом устройстве в той же сети и перейдите по адресу:
http://
Например:
Первый запуск откроет мастер настройки: язык, учётная запись администратора, добавление библиотек.
Создайте требуемые директории на Pi под ваши типы медиа (фильмы, сериалы, музыка, аудиокниги):
mkdir -p ~/movies ~/tv ~/music ~/audiobooksВ веб‑мастере при добавлении библиотеки укажите тип контента и путь, например /home/pi/movies.
Передача файлов на Pi
Jellyfin не загружает файлы через веб-интерфейс — нужно скопировать данные на Pi. Для этого используйте scp (secure copy) или rsync для больших объёмов.
Копировать один файл:
scp /path/to/your/file.mp4 pi@192.168.1.32:/home/pi/movies/Копировать папку рекурсивно:
scp -r /path/to/local/movies/folder/ pi@192.168.1.32:/home/pi/movies/Альтернатива: rsync (быстрее при повторных синхронизациях):
rsync -avh --progress /local/movies/ pi@192.168.1.32:/home/pi/movies/После копирования в веб‑интерфейсе Jellyfin: Меню → Dashboard → Libraries → для нужной библиотеки → Scan library.
Jellyfin попытается сопоставить файлы с базами данных (постеры, описания, актеры). При необходимости поправьте имена файлов, чтобы повысить точность метаданных.
Доступ извне (домашний сервер доступен в интернет)
Локальный доступ удобен, но чтобы смотреть медиатеку вне дома, нужно настроить внешний доступ. Есть два основных пути:
- Статический публичный IP и собственный домен.
- Динамический DNS (если провайдер даёт динамический IP) — дешевле и проще.
Вариант со статическим IP и доменом:
- Обратитесь к вашему провайдеру и попросите статический публичный IP (иногда бесплатно, иногда за плату).
- Купите домен у регистратора.
- В панели регистратора создайте A‑запись для домена: Host = @, Value = ваш публичный IP, TTL — минимально допустимый.
Если у вас динамический IP, используйте сервис динамического DNS (DuckDNS, No-IP и др.) и настройте клиент обновления на роутере или Pi.
Настройте перенаправление портов (Port forwarding) в админке роутера:
- HTTP: 80 → локальный IP Pi : 80
- HTTPS: 443 → локальный IP Pi : 443
(Если вы используете альтернативный внешний порт, настройте соответствующие правила и проброс.)
Настройка обратного прокси и HTTPS через Apache
Установите Apache и Certbot на Pi, чтобы сделать обратный прокси и получить бесплатные сертификаты Let’s Encrypt:
sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt update
sudo apt-get install python3-certbot-apache -yПерейдите в каталог конфигурации сайтов и создайте конфигурацию для Jellyfin:
cd /etc/apache2/sites-available
sudo nano jellyfin.confВставьте (замените your-server.name и 192.168.1.32 на ваш домен и локальный IP):
ServerName your-server.name
ProxyPreserveHost On
ProxyPass / http://192.168.1.32:8096/
ProxyPassReverse / http://192.168.1.32:8096/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://192.168.1.32:8096/$1" [P,L]
Сохраните (Ctrl+O), выйдите (Ctrl+X), затем активируйте сайт и перезапустите Apache:
sudo a2ensite jellyfin.conf
sudo service apache2 restartЗапустите certbot для получения сертификата и автоматической настройки HTTPS:
sudo certbotСледуйте интерактивным подсказкам — выберите ваш сайт из списка, введите email и выберите редирект на HTTPS.
После этого ваш домен будет безопасно обслуживаться через HTTPS и проксироваться в Jellyfin.
Безопасность и жесткая настройка
Важно системно защитить домашний сервер:
- Не оставляйте стандартные пользователи и пароли. Создайте отдельную учётную запись администратора и отключите вход по паролю для root.
- Настройте межсетевой экран UFW (Uncomplicated Firewall):
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable- Установите fail2ban, чтобы ограничить попытки подбора пароля по SSH:
sudo apt install fail2ban -y- Используйте ключи SSH вместо паролей и отключите вход по паролю в /etc/ssh/sshd_config (PasswordAuthentication no).
- Регулярно обновляйте систему и пакеты (apt update && apt upgrade).
- Ограничьте публичный доступ к административным панелям и используйте 2FA в тех сервисах, где это возможно.
Краткий чек‑лист безопасности:
- SSH по ключам, пароли отключены
- UFW настроен и включён
- fail2ban установлен
- Сертификаты обновляются автоматически (certbot)
- Регулярные резервные копии данных и конфигураций
Резервное копирование и обслуживание
Резервируйте как сами файлы медиа (внешние диски, NAS, облако), так и конфигурацию Jellyfin и базу метаданных.
Типичные пути для бэкапа Jellyfin:
- Конфигурация: /etc/jellyfin
- Данные и метаданные: /var/lib/jellyfin (включая базу и обложки)
Пример резервного архива (запустить на Pi или на внешнем хранилище):
sudo tar -czvf jellyfin-config-backup-$(date +%F).tar.gz /etc/jellyfin /var/lib/jellyfinХраните бэкап на другом диске или в облаке: rsync, rclone, cron для автоматизации.
Производительность и аппаратное ускорение
Чтобы получить лучшие показатели при трансляции и транскодировании:
- Используйте SSD подключённый к USB‑3.0 для хранения медиатеки.
- Минимизируйте транскодирование: храните видео в кодеке, который клиент поддерживает (например, h.264/h.265), или используйте устройства с аппаратным декодированием.
- Аппаратное ускорение для Jellyfin на Raspberry Pi может потребовать установки дополнительных пакетов (ffmpeg с поддержкой аппаратного декодирования) и включения hardware acceleration в настройках Jellyfin. Конкретная процедура зависит от версии ОС и CPU/GPU; проверяйте официальную документацию Jellyfin для вашей архитектуры.
Баланс мощностей:
- Для пассивной раздачи (stream только в родной кодек) достаточно 4GB Pi + SSD.
- Для многопользовательского транскодирования стоит рассматривать более мощный хост или внешний аппаратный энкодер.
Отказоустойчивость и мониторинг
Рекомендации для стабильной работы:
- Подключите Pi к источнику бесперебойного питания (UPS) при возможности.
- Настройте мониторинг дискового пространства, загрузки CPU и памяти (cron + простые скрипты / grafana+prometheus при желании).
- Настройте логи и ротацию логов для /var/log и логов Jellyfin.
Тесты и критерии приёмки
Критерии приёмки (что проверить после настройки):
- Локальный доступ: при переходе http://
:8096 открывается интерфейс Jellyfin. - Библиотеки: все добавленные каталоги видны в Dashboard → Libraries, сканирование проходит без ошибок.
- Воспроизведение: стрим фильма/аудиозаписи на локальном устройстве и мобильном устройстве проходит без заиканий в нормальной сети.
- Удалённый доступ: домен/динамический DNS корректно резолвится в ваш публичный IP, и сайт доступен по HTTPS.
- Безопасность: SSH по ключам, UFW активен, fail2ban установлен.
Тестовые сценарии:
- Воспроизведение 1080p на одном устройстве и 720p на втором одновременно.
- Подключение извне через мобильный интернет с воспроизведением тестового видео.
Роли и чек‑листы
Роль — Домашний администратор (один человек):
- Установить Pi и ОС
- Включить SSH и записать учётные данные
- Установить Jellyfin и прокси
- Настроить резервное копирование
- Мониторить обновления и логи
Роль — Пользователь (домашний зритель):
- Попросить доступ у администратора
- Подключаться по ссылке/через приложения Jellyfin
- Сообщать о проблемах с плейбеком
Частые проблемы и решения
Проблема: видео буферизуется/лаг при воспроизведении
- Проверить качество сети (Ethernet лучше Wi‑Fi).
- Включить аппаратное ускорение в Jellyfin, если поддерживается.
- Проверить загрузку CPU на Pi (top, htop).
Проблема: не получается получить сертификат Let’s Encrypt
- Убедиться, что домен указывает на ваш публичный IP.
- Проверить, что порт 80 открыт и проброшен на Pi (HTTP необходим для валидации).
Проблема: метаданные не подтягиваются корректно
- Проверьте структуру имён файлов (имя фильма и год в названии повышают вероятность точного сопоставления).
- В настройках библиотеки выберите правильный провайдер метаданных.
Альтернативные подходы и расширения
- Docker/Podman: запуск Jellyfin в контейнере упрощает переносимость и откат версий.
- NAS: если у вас сетевое хранилище, запускайте Jellyfin на NAS (Synology/QNAP) — удобнее для больших коллекций.
- Использование NGINX вместо Apache как обратного прокси — легче для конфигураций с веб‑сокетами.
- Использование VPN (WireGuard/OpenVPN) вместо проброса портов для доступа извне — безопаснее и не требует домена.
Когда этот подход не подходит (контрпримеры)
- Если вам нужен масштабируемый мультитенантный стриминг — домашний Pi ограничен по ресурсам.
- Если у вас коллекция в десятки терабайт и многопользовательские одновременные транскодирования — лучше выбрать более мощный сервер или облачный хостинг.
Мини‑методология: быстрый чек‑лист для первого запуска (SOP)
- Подготовить SD/SSD с Raspberry Pi OS.
- Включить SSH в rpi-imager, задать логин/пароль.
- Подключить Pi к роутеру по Ethernet и найти IP в роутере.
- По SSH обновить систему и установить Jellyfin.
- Создать папки медиа, скопировать файлы (scp/rsync).
- Добавить библиотеки в Jellyfin и просканировать.
- (Опционально) Настроить домен, обратный прокси и HTTPS.
- Настроить UFW, fail2ban, регулярные бэкапы.
Короткий глоссарий
- SSH — защищённый удалённый доступ к командной строке.
- SCP — утилита для безопасной копии файлов по сети.
- Reverse proxy (обратный прокси) — сервер, принимающий внешние запросы и перенаправляющий их внутрь сети.
- Certbot — клиент для получения сертификатов Let’s Encrypt.
Заключение
Raspberry Pi 4B — отличный и экономичный вариант для домашнего медиасервера. Jellyfin даёт полную свободу управления медиатекой без подписок и привязки к облакам. Следуя шагам этой статьи, вы получите рабочий сервер с локальным и (опционально) удалённым доступом, с базовой защитой, резервными копиями и планом обслуживания.
Если вы хотите, могу подготовить готовый Docker Compose файл, список команд для аппаратного ускорения ffmpeg под вашу модель Pi, или шаблон cron‑задач для автоматического бэкапа.
Ważное: регулярно обновляйте систему и делайте бэкапы — это ключ к стабильной и безопасной работе вашего медиасервера.