Инструменты пользователя

Инструменты сайта


raspberry_pi:pi_4_model_b:raspberry_pi_os:mediacenter

Медиацентр на базе Raspberry Pi OS

В воздухе давно витала идея, перенести Air Video Server HD с моего ноутбука, по вполне понятным причинам, куда-то в другое место… Но, во-первых, толком-то нема куды было, а, во-вторых, не хотелось связываться с геморроем, т.к. беглый поиск по этим вашим Интернетам, производимый с некой периодичностью в надежде, что наконец-то появится что-то стоящее, не давал никаких внятных результатов, кроме обещания без срока, что InMethod все же выпустят сервер под никсы.

В итоге я устранил первое «во-», приобретя Raspberry Pi 4 Model B под контроллер умного дома и установив на него Raspberry Pi OS 11 (bullseye), частично1) пренебрег вторым «во-» и понеслась…

Задача стояла простая – все семейство без танцев с бубном должно мочь смотреть и, что важнее, сохранять на свои иФоны фильмики, сериальчики, да аниме. Последнее еще и с субтитрами2)! Бонусом хотелось, чтобы была авторизация с разграничением доступа к контенту3). Ну и суровой вишенкой на всем этом торте было мое требование – простота, изящность и легкость!

Хранилище

Любое хранилище начинается… аха, с хранилища! Я взял из закромов первый попавшийся HDD 2,5 и переходник USBSATA. Очень дешево с сердито, т.к. все уже было в наличии.

Форматирование

Чтобы все было по фэншую, желательно удалить все старые разделы с диска и создать нативный том:

  1. посмотреть нужный диск – lsblk -f;
  2. очистить диск от разделов –
    1. Вариант 14)sudo fdisk /dev/sda;
      1. удалить разделы – d;
      2. проверить, что ничего не осталось, – p;
      3. создать пустой раздел dos – o;
      4. записать изменения – w;
    2. Вариант 2sudo wipefs -a /dev/sda;
  3. создать том – sudo mkfs -t ext4 /dev/sda;
  4. добавить метку тома – sudo e2label /dev/sda DATA.

Монтирование

Оказалось, что в Линухе даже банальное монтирование диска… не так тривиально, как хотелось бы – пока разобрался, в очередной раз чуть не поседел!

Помимо первоочередного втыкания жесткого в разъем, нужно5):

  1. создать папку с определенными правами – sudo mkdir -m 777 /mnt/usb-hdd;
  2. поменять группу – sudo chown :adm /mnt/usb-hdd;
  3. найти, куда подключился диск6);
  4. и только потом смонтировать7)sudo mount /dev/sda /mnt/usb-hdd!

Все, как в Винде – вставил и играй, бля! Если бы! Еще нужно настроить автомонтирование:

  1. открыть sudo nano /etc/fstab;
  2. добавить /dev/sda /mnt/usb-hdd ext4 defaults 0 0;
  3. и смонтировать, если надо – sudo mount -a.

Все это очень упрощенно, в жизни может что-то пойти не так – самое банальное, это несколько разделов или другая файловая система… Все это, конечно, побарывается, но… Но, ну и хрен с ним! m(

Торрент-клиент

Вот тут, что интересно, быстро и легко нашелся подходящий и устраивающий меня вариант – Transmission, имеющий daemon, web, rpc! Даже под Windows он есть и хорошо работает!

Установка

В данном контексте нужен только демон:

  1. sudo apt update && sudo apt upgrade;
  2. sudo apt install transmission-daemon.

Настройка

Тут есть один нюанс – перед изменением конфигурации, демона нужно остановить, или после ее изменения не забыть заставить его перечить конфиг, иначе при остановке он его, тихо перепишет!

  1. Останавливаем – sudo systemctl stop transmission-daemon;
  2. открываем конфиг sudo nano /etc/transmission-daemon/settings.json;
  3. правим и сохраняем (см. ниже);
  4. запускаем обратно – sudo systemctl start transmission-daemon.

Но можно и просто после изменений перечитать конфигурацию – sudo invoke-rc.d transmission-daemon reload.

В базовом варианте, можно поменять только эти параметры:

"bind-address-ipv6": "fe80::",
"download-dir": "/mnt/usb-hdd/torrents",
"rpc-password": "$tR0nG-PvvD",
"rpc-username": "my-user",
"rpc-whitelist-enabled": false,
"umask": 0,

Первое, это отключение IPv68), а последнее – установка демоном нормальных прав на каталоги и файлы при их создании. Остальное и так понятно.

Уведомления

Однажды, давным-давно, в qBittorrent я наткнулся на очень удобную функцию – отправку уведомлений на электронную почту при завершении загрузки, которой ни у какого другого клиента до этого и после не встречал! А в данном контексте… это просто очень нужная штука! Но как?

Да просто – пишем лог, следим за ним syslog-ng и, когда надо, отправляем уведомление9).

Настройка

Нужно учесть, что Transmission не может сам создать файл лога10) и не может писать в «/var/log»11), поэтому12):

  1. создаем папку с правами – sudo mkdir -m 765 /mnt/usb-hdd/log;
  2. создаем файл лога – sudo touch /mnt/usb-hdd/log/daemon.log;
  3. меняем владельца и группу – sudo chown -R debian-transmission:debian-transmission /mnt/usb-hdd/log.

Далее необходимо поменять настройки запуска демона:

  1. открываем sudo nano /lib/systemd/system/transmission-daemon.service;
  2. заменяем значение параметра «ExecStart» на:
ExecStart=/usr/bin/transmission-daemon -f --log-info --logfile /mnt/usb-hdd/log/daemon.log

Теперь перечитываем настройки и перезапускаем процесс:

  • sudo systemctl daemon-reload;
  • sudo systemctl restart transmission-daemon.

Посмотреть правильность аргументов можно выполнив ps -eF | grep "transmission".

Ротация

Информация из лога нужна только раз, поэтому хранить его никакого смысла нет – храним только один, сдвигаем при достижении 200 килобайт, создаем пустой файл с правами (разрешения, владелец и группа).

FIXME Раздел не написан!

Отправка

О настройке syslog-ng написано тут, а в рамках этой статьи нужно только создать дополнительную конфигурацию, выполнив sudo nano /etc/syslog-ng/conf.d/torrents.conf и добавить в нее следующее:

torrents.conf
source s_my_torrent {
  file( "/mnt/usb-hdd/log/daemon.log"
    flags( no-parse )
  );
};
 
filter f_my_torrent {
  message( ".+(State changed from \"Incomplete\").+" );
};
 
destination d_my_torrent {
  smtp(
    host( "smtp.domain.int" ) port( 25 )
    from( "Syslog-NG" "syslog-ng@server.zone" )
    to( "Admin" "admin@server.zone" )
    subject( "=?UTF-8?B?<<<кОДИРОВАННЫЙтЕКСТ>>>?=" )
    body( "$MSG" )
  );
};
 
log {
  source( s_my_torrent );
  filter ( f_my_torrent );
  destination( d_my_torrent );
};

DLNA сервер

В соответствии с моими требованиями, обозначенными в начале статьи, я пошел по пути наименьшего сопротивления и выбрал демона, не обладающего ни чем, кроме главного – раздачей контента. Им оказался – MiniDLNA.

Установка и настройка крайне проста:

  1. устанавливаем – sudo apt install minidlna;
  2. открываем конфигурацию – sudo nano /etc/minidlna.conf;
  3. правим, как надо (мои изменения в блоке ниже);
  4. удаляем файл кэша – sudo rm /var/cache/minidlna/files.db;
  5. перезапускаем демона – sudo systemctl restart minidlna.
media_dir=/mnt/data/torrents
merge_media_dirs=yes
root_container=B
network_interface=eth0
friendly_name=MiniDLNA

Клиент

Немного покопавшись в App Store и позагружав всякую гадость с неадекватным ценником или тонной рекламы, случайно вспомнил про так не любимый мной13) VLC, который и попробовал, да на котором и остановился. Мало того, на ноутбуке заменил им14) привычный уже15) MPC-HC!

:!: Если на Windows-машине VLC не видит по Wi-Fi-сети DLNA/UPnP-сервер, нужно изменить имя сетевого адаптера на английское, можно с проблемами, и включить IPv6 в настройках подключения. Ошибка старая…


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
«Частично» в основном потому, что любой никс и опен сорс, это по определению печаль и боль не взирая на всё остальное…
2)
Чего, к слову, Air Video HD не умеет вовсе.
3)
Но увы-увы, это пока ни как…
4)
Краткое изложение этой статьи.
5)
Здравый источник.
6)
Есть разные варианты, проще всего зайти в «/dev» и посмотреть наличие и номер «sda».
7)
Размонтировать – sudo umount /mnt/usb-hdd или sudo umount /dev/sda.
8)
Да, тут только таким… хитрым методом…
9)
Есть еще один вариант, более красивый, – заставить syslog-ng сразу смотреть сообщения от «transmission-daemon» используя драйвер «program()», но так я пока не пробовал и не знаю, будет ли работать…
10)
Вот тут я надолго затупил…
11)
Тут тоже! LOL
12)
От совсем седых волос меня спасли тут.
13)
Сколько раз пытался попользоваться им, столько же и сносил…
14)
А после того, как я научил его останавливать и продолжать воспроизведение видео нажатием мышки, так даже и не любить его стал сильно меньше… =)
15)
Сколько лет подряд я им пользуюсь?!

Обсуждение

Евгений, 2023/03/25 15:50
Добрый день! Не пробовали смотреть фильмы в 4к с потоком видеоряда где-то в 100Мбит? Обычно это Bdremux-ы, скажем тот же фильм 1917 с около 100Гбайт размером.

Спрашиваю, тк говорят у малинки нет отдельного контроллера sata, что может влиять на домашний видеохостинг.
Николай Солошин, 2023/03/26 10:28
Доброго!

Нет, не пробовал, не на чем и не за чем. )

Но да, у Pi 4 Model B нет на борту SATA, поэтому используется переходник SATA -> USB, от которого и будет зависеть производительность - в Pi 4 есть USB 3.x и, скорее всего, если нормальный переходник, то проблем с производительностью не должно быть. Но это теория, никогда не заморачивался практикой в этом плане. )
Ваш комментарий:
E L W V E G X​ X X G H U R​ W V F
 
Последнее изменение: 2023/03/21 12:42 — Николай Солошин