Вопрос или проблема
Я установил Plex с использованием Docker на сервере Linux. У меня подключен внешний SSD-диск, отформатированный в NTFS. Я смонтировал его в /mnt/ssd
, и мой сервер Plex не может увидеть, что смонтировано в каталоге ssd. Я пробовал добавлять пользователя Plex, чтобы убедиться, что у него есть разрешения, но это не помогло. Я могу перемещаться по диску в командной строке и видеть все файлы, но Plex их не видит.
Вот мой .yml
version: "2.1"
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
- VERSION=docker
volumes:
- ./config:/config
- /mnt/ssd
- /dev/sdb1
- /plex:/mnt/ssd:ro
restart: unless-stopped
Ответ или решение
Когда работаешь с Plex в Docker на Ubuntu и пытаешься предоставить ему доступ к NTFS-диску, может возникнуть ряд проблем, связанных с разрешениями, монтированием и настройками контейнера Docker. Постараемся разобраться в этих вопросах и предложить возможные решения.
Теория
NTFS — файловая система, характерная для ОС Windows и, в отличие от ext4, базовой файловой системы в Linux, обладает особенностями в плане монтирования и управления правами доступа. В Linux поддержка NTFS реализована через драйверы, такие как ntfs-3g
, которые обеспечивают полный доступ к файлам на диске. Однако, поскольку Linux и NTFS изначально используют разные модели управления правами доступа, могут возникать сложности при попытке предоставления доступа программам, работающим в контейнерах Docker.
Когда возникает проблема с тем, что Plex не видит файлы на NTFS-диске, это может быть связано как с неправильным монтированием, так и с неверной конфигурацией Docker-контейнера, особенно в плане параметров volume. Правильные права доступа и корректное указание volume — критические факторы успеха.
Пример
Давайте подробнее разберем предоставленный файл конфигурации docker-compose.yml
:
version: "2.1"
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
- VERSION=docker
volumes:
- ./config:/config
- /mnt/ssd
- /dev/sdb1
- /plex:/mnt/ssd:ro
restart: unless-stopped
Первое, на что стоит обратить внимание, это на корректность монтирования томов. Обратите внимание, что монтирование /mnt/ssd
повторяется дважды, но с разными опциями. Конкретно /plex:/mnt/ssd:ro
говорит о том, что директория /mnt/ssd
снаружи контейнера монтируется в /plex
внутри него, но при этом опции указываются как read-only, что ограничивает доступ.
Важно помнить, что если файловая система монтируется с ошибкими флагами или неправильными правами, Plex, работающий в Docker, может и вовсе не увидеть или не иметь доступа к файловой системе.
Применение
-
Убедитесь, что NTFS-диск корректно монтирован.
Проверьте использованиеntfs-3g
для корректного монтирования:sudo mount -t ntfs-3g /dev/sdb1 /mnt/ssd
Проверьте, что права на папку
/mnt/ssd
позволяют Docker-контейнеру доступ. Если Plex работает подPUID=1000
иPGID=1000
, удостоверьтесь, что эти идентификаторы соответствуют владельцу, которому предоставлен доступ к папке/mnt/ssd
.sudo chown -R 1000:1000 /mnt/ssd
-
Проверьте корректность маппинга volume в Docker.
Исправьте или просмотрите конфигурацию на предмет повторений и конфликтующих прав. Попробуйте следующую структуру вdocker-compose.yml
:volumes: - ./config:/config - /mnt/ssd:/plex
Это упростит структуру и станет очевиднее, что вся директория
/mnt/ssd
будет доступна внутри Docker-контейнера по адресу/plex
. -
Перезагрузите контейнер.
После внесения изменений вdocker-compose.yml
выполните перезагрузку контейнера для применения изменений:docker-compose down docker-compose up -d
-
Проверьте работу Plex.
После всех настроек проверьте, видит ли теперь Plex ваши файлы на NTFS-диске. В Plex Web UI выполните повторное сканирование доступных медиа для удостоверения в успехе предпринятых действий.
Подводя итог, важно правильно монтировать диск с NTFS в Linux, обеспечивая надлежащие права доступа и корректную настройку Docker-контейнера, чтобы Plex мог обнаруживать и транслировать медиафайлы.