Установка Plex Media Server на CentOS 8 с Nginx
TL;DR
Plex — это медиасервер для потоковой передачи видео, музыки и фото. В этой инструкции показано, как установить Plex на CentOS 8, открыть нужные порты, настроить SELinux и организовать безопасный доступ через Nginx как обратный прокси. Включены примеры конфигурации, проверка и варианты устранения неполадок.

Plex — свободный и многофункциональный медиасервер с открытым исходным кодом, который позволяет транслировать фотографии, видео и аудио с сервера на ПК, планшет или телефон из любой точки мира. Plex поддерживает Linux, Windows, macOS и FreeBSD, а также плагины для внешнего контента.
Plex работает по клиент-серверной модели: сервер устанавливается на машину, где хранятся файлы, а клиенты (мобильные приложения, смарт-ТВ, веб) подключаются к нему по сети.
Что вы получите в этой инструкции
- Пошаговая установка Plex на CentOS 8
- Настройка репозитория и службы
- Конфигурация firewalld и SELinux
- Настройка Nginx как обратного прокси и пример конфигурации
- Опция включения HTTPS через Let’s Encrypt
- Чек-листы, критерии приёмки и план устранения неполадок
Входные требования
- Сервер с CentOS 8 с минимум 2 ГБ оперативной памяти.
- Домен, указывающий на IP сервера (для удобного доступа и TLS).
- root-доступ или sudo-права на сервере.
Обновление системы
Рекомендуется обновить систему перед установкой:
dnf update -yПосле обновления перезагрузите сервер, чтобы применить обновления ядра и служб.
Установка Plex Media Server
Пакет Plex отсутствует в стандартных репозиториях CentOS 8, поэтому добавим репозиторий Plex.
Создайте файл репозитория:
nano /etc/yum.repos.d/plex.repoДобавьте в него:
[Plex]
name=Plex
baseurl=https://downloads.plex.tv/repo/rpm/$basearch/
enabled=1
gpgkey=https://downloads.plex.tv/plex-keys/PlexSign.key
gpgcheck=1Сохраните файл и установите пакет:
dnf install plexmediaserver -yЗапустите службу и включите автозапуск:
systemctl enable plexmediaserver
systemctl start plexmediaserverПроверить статус:
systemctl status plexmediaserverВы должны увидеть активное состояние службы и запись о запущенных процессах Plex.
Настройка firewalld и SELinux
Plex использует несколько портов для веб-интерфейса, обнаружения и стриминга. Откройте их в firewalld:
firewall-cmd --zone=public --add-port=32400/tcp --permanent
firewall-cmd --zone=public --add-port=32469/tcp --permanent
firewall-cmd --zone=public --add-port=8324/tcp --permanent
firewall-cmd --zone=public --add-port=3005/tcp --permanent
firewall-cmd --zone=public --add-port=32412/udp --permanent
firewall-cmd --zone=public --add-port=32413/udp --permanent
firewall-cmd --zone=public --add-port=32414/udp --permanent
firewall-cmd --zone=public --add-port=32410/udp --permanent
firewall-cmd --zone=public --add-port=1900/udp --permanent
firewall-cmd --zone=public --add-port=5353/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reloadПо умолчанию SELinux включён на CentOS 8. Для того чтобы Plex (и Nginx при проксировании) могли устанавливать исходящие соединения, включите булевую переменную:
setsebool httpd_can_network_connect on -PВажно: если вы храните медиаконтент в нестандартных каталогах, проверьте контексты SELinux для директорий Plex и при необходимости установите правильные метки. Пример для каталога с медиа (замените /path/to/media на путь к вашей библиотеке):
semanage fcontext -a -t plex_var_lib_t "/path/to/media(/.*)?"
restorecon -Rv /path/to/mediaЗаметка: semanage может быть в пакете policycoreutils-python-utils.
Доступ к Plex Media Server
По умолчанию веб-интерфейс доступен на порту 32400. Откройте в браузере:

Зарегистрируйтесь с рабочим адресом e‑mail, затем вы попадёте в панель управления Plex:

Настройка Nginx как обратного прокси
Чтобы не указывать порт при доступе извне и легко включить HTTPS, используйте Nginx как обратный прокси.
Установите Nginx:
dnf install nginxЗапустите и включите автозапуск:
systemctl start nginx
systemctl enable nginxСоздайте файл конфигурации для Plex:
nano /etc/nginx/conf.d/plex.confПример конфигурации (сохраните и закройте):
upstream plex_backend {
server 127.0.0.1:32400;
keepalive 32;
}
server {
listen 80;
server_name plex.example.com;
send_timeout 100m;
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;
gzip_disable "MSIE [1-6]\\.";
client_max_body_size 100M;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions;
proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_redirect off;
proxy_buffering off;
location / {
proxy_pass http://plex_backend;
}
}Обратите внимание: замените server_name на ваш реальный домен.
Установите server_names_hash_bucket_size, если Nginx жалуется на слишком длинные имена:
nano /etc/nginx/nginx.confДобавьте строку перед закрывающей фигурой http или перед концом файла конфигурации Nginx:
server_names_hash_bucket_size 64;Проверка конфигурации и перезапуск:
nginx -t
systemctl restart nginx
systemctl status nginxПосле этого Plex будет доступен по адресу http://plex.example.com.
Включение HTTPS с Let’s Encrypt
Рекомендуется шифровать трафик. Установите Certbot и плагин для nginx:
dnf install certbot python3-certbot-nginx -yЗатем запросите сертификат (убедитесь, что DNS указывает на сервер и порт 80 открыт):
certbot --nginx -d plex.example.comCertbot автоматически обновит конфигурацию Nginx и настроит редирект с HTTP на HTTPS. После этого доступ будет по https://plex.example.com.
Если Certbot не удаётся автоматизировать конфигурацию, используйте certbot certonly и вручную добавьте блок server для 443 с путями к сертификатам.
Безопасность и лучшие практики
- Включайте на сервере автозапуск только для необходимых служб.
- Закрывайте неиспользуемые порты и ограничьте доступ к панели администратора Plex по IP, если необходимо.
- Регулярно обновляйте Plex и OS.
- Для публичного доступа используйте только HTTPS.
- Резервное копирование каталога /var/lib/plexmediaserver и метаданных Plex.
Проверка и критерии приёмки
Критерии приёмки для успешной установки:
- Служба plexmediaserver работает: systemctl status показывает active (running).
- Nginx успешно проксирует запросы: nginx -t возвращает OK и сайт доступен по домену.
- Браузер открывает https://plex.example.com и отображает панель Plex.
- Тестовый файл медиа успешно воспроизводится в веб-плеере и мобильных приложениях.
Тестовые команды для диагностики:
systemctl status plexmediaserver
journalctl -u plexmediaserver --since "1 hour ago"
nginx -t
firewall-cmd --list-ports
curl -I https://plex.example.comЧек-листы по ролям
Администратор:
- Обновить систему
- Установить Plex и Nginx
- Открыть нужные порты и настроить SELinux
- Подключить сертификат TLS
- Настроить бэкапы метаданных
Оператор резервного копирования:
- Настроить регулярный экспорт /var/lib/plexmediaserver
- Проверять целостность бэкапов
Пользователь:
- Зарегистрироваться в Plex
- Добавить библиотеку медиа в сервер
- Проверить воспроизведение на устройстве
Устранение неполадок — быстрый план
- Plex не запускается: проверяйте systemctl status и journalctl -u plexmediaserver.
- Nginx возвращает 502: проверьте, работает ли Plex на 127.0.0.1:32400 и proxy_pass в конфигурации.
- Проблемы с WebSocket: убедитесь, что заголовки Upgrade и Connection проксируются.
- Сертификат TLS не установлен: проверьте DNS и доступность порта 80 для Certbot.
- Мобильные загрузки (Camera Upload) не работают: увеличьте client_max_body_size в конфигурации Nginx.
Когда подход не сработает
- Если Plex установлен в контейнере или на отдельном хосте, конфигурация upstream и локального адреса может отличаться.
- Если вы используете корпоративный прокси или VPN, дополнительные настройки маршрутизации/брандмауэра могут блокировать соединение.
Альтернативы и варианты развертывания
- Развернуть Plex в Docker контейнере (офиц. image plexinc/pms-docker) — удобно для изоляции.
- Использовать Traefik как обратный прокси с автоматическим TLS.
- Заменить Plex на Jellyfin (open-source альтернатива без проприетарных компонентов).
Мини-методология развертывания (быстрая последовательность)
- Подготовить сервер, DNS и бэкап данных.
- Обновить систему.
- Установить Plex и запустить службу.
- Открыть порты и настроить SELinux.
- Установить Nginx и протестировать проксирование.
- Включить HTTPS и завершить настройки в веб-интерфейсе Plex.
Краткий словарь терминов
- Plex Media Server — сервер, который хранит и отдает медиа.
- Обратный прокси — веб-сервер, принимающий запросы и пересылающий их внутрь (например, Nginx).
- SELinux — механизм контроля доступа, встроенный в CentOS.
- Certbot — клиент для получения сертификатов Let’s Encrypt.
Частые вопросы
Q: Можно ли использовать Plex без домена?
A: Да, доступ возможен по IP и порту 32400, но домен нужен для удобного доступа и TLS.
Q: Нужна ли публичная сеть для потоковой передачи друзьям?
A: Да, если вы хотите предоставить доступ через интернет, сервер должен быть доступен извне через открытые порты и/или через прокси с TLS.
Заключение
Вы успешно установили и настроили Plex на CentOS 8 с Nginx в качестве обратного прокси. Настройте библиотеки, проверьте воспроизведение на разных устройствах и настройте бэкапы и обновления. При возникновении проблем воспользуйтесь разделом устранения неполадок.
Если нужно, могу предложить готовый Docker Compose для Plex + Nginx или шаблон systemd unit и бэкап-скрипт.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента