Делаем медиа сервер из Orange Pi RV2

от автора

Всем привет! Хочу поделиться своим опытом настройки медиасервера на базе Orange Pi RV2. В статье другого автора описан опыт настройки на базе платы Orange Pi Zero 3, я решил пойти немного другим путем исходя из следующих требований:

  1. Хотелось нативной поддержки NVMe диска от платы

  2. Максимально компактное решение (только сама плата и диск, никаких внешних носителей/переходников по USB)

  3. Относительная дешевизна

Выбор платы

Изучив официальный сайт orange pi выделил следующие платы, которые подходили под п1:

  • Orange Pi 5

  • Orange Pi 5 Plus

  • Orange Pi 5 Pro

  • Orange Pi 3B 

  • Orange Pi 4A

  • Orange Pi RV2

Далее, изучив цены и характеристики, решил, что 5 версия достаточно дорога и, пожалуй, слишком мощная под планируемую задачу. Решил в итоге выбрать RV2 т.к.:

  • Целых два слота под диски (2230 и 2280 M.2), те возможен апгрейд и расширение

  • Достаточно бюджетна (если не самая бюджетная из всех, свой экземпляр на 4 Gb RAM я заказал на али за 4392 Р)

  • 8-core RISС-V процессор (не то, чтобы в дальнейшем при настройке linux это как-то сильно это влияло, но хотелось пощупать).

Фото из офф документации

Фото из офф документации

Систему я планировал ставить на NVMe диск, в качестве которого я выбрал Kingston SSD SNV3S1TB.

Важно! Поддержка загрузки системы есть только с заднего слота M2, что явно указано в документации.

Сборка корпуса

Под RV2 на али есть готовые акриловые корпуса, пример ниже.

Корпус с али

Корпус с али

Но я решил сделать кастомный для печати на 3d принтере в оранжевом цвете (Orange Pi же!). Предполагается крепление вентилятора 3010 для обдува процессора и остальных элементов сверху платы. Результат на фото:

Вид сбоку

Вид сбоку
Вид снизу

Вид снизу
Вид спереди

Вид спереди

Модель можно взять по ссылке: https://www.thingiverse.com/thing:7054834

Установка системы

Для первичной установки понадобится монитор с HDMI и USB клавиатура.

Сам процесс установки системы достаточно подробно описан в user manual по плате, и состоит из шагов:

  • Скачиваем образ системы по ссылкам с офф сайта. Я выбрал Orangepirv2_1.0.0_ubuntu_noble_server_linux6.6.63.zip, распаковываем его , получая образ .img

  • Через balenaEtcher записываем образ на TF карту. Важно! Явно в документации прописаны требования к карте, минимум 16 Гб и 10 класса или выше. Хоть образ около 2 гб, с картой на 8 ГБ плата у меня не завелась. С картой 16 Гб все прошло отлично.

  • Устанавливаем SSD в нижний слот. Вставляем карту TF в плату, подключаем через HDMI к монитору и USB клавиатуру, подключаем питание (5V/5A)

Плата должна загрузиться, дальше выполняем минимальные настройки для переноса образа на SPIFlash и NVMe SSD. Этот процесс так же детально описан со скриншотами в документации, и состоит из вызова команд.

Подготовка SSD:

sudo parted /dev/nvme0n1 mklabel gpt
sudo parted /dev/nvme0n1 mkpart primary ext4 8192s 100%

Запуск установщика:

sudo nand-sata-install

После установки и перезагрузки можно дополнительно настроить подключение к wifi через команду, открывающую графический интерфейс по настройке подключения к wifi сети:

sudo nmtui

Если предполагается использовать подключение через ethernet, то wifi можно и не настраивать, но я решил подключить плату именно по wifi. После подключения в роутере зафиксировал выделенный адрес за сервером, чтобы он уже не менялся.

После данного шага можно отключить плату от клавиатуры и монитора, дальнейшие настройки уже выполнять через ssh.

Установка и настройка Transmission и Samba

Дальнейшие настройки предполагают, что сервер находится внутри домашней сети, соответственно я не менял дефолтовый логин/пароль orangepi/orangepi и не настраивал аутентификацию на transmission и samba для упрощения доступа к ресурсам.

Сценарий загрузки .torrent файлов и старт загрузки я решил сделать через watch-dir настройку transmission и директорию на сервере.

Подключаемся через putty или любой другой клиент по ip адресу, который я посмотрел в роутере, далее выполняем серию команд.

Создаем директории и настраиваем права:

mkdir /srv/media
chmod 777 /srv/media

mkdir /srv/watch
chmod 777 /srv/watch

Далее устанавливаем transmission

sudo apt install transmission-daemon

После установки останавливаем сервис sudo service transmission-daemon stop

и настраиваем конфиг sudo nano /etc/transmission-daemon/settings.json

Для примера, моя конфигурация

settings.json

{
«alt-speed-down»: 50,
«alt-speed-time-begin»: 540,
«alt-speed-time-day»: 127,
«alt-speed-time-enabled»: false,
«alt-speed-time-end»: 1020,
«alt-speed-up»: 50,
«announce-ip»: «»,
«announce-ip-enabled»: false,
«anti-brute-force-enabled»: false,
«anti-brute-force-threshold»: 100,
«bind-address-ipv4»: «0.0.0.0»,
«bind-address-ipv6»: «::»,
«blocklist-enabled»: false,
«blocklist-url»: «http://www.example.com/blocklist»,
«cache-size-mb»: 256,
«default-trackers»: «»,
«dht-enabled»: true,
«download-dir»: «/srv/media»,
«download-limit»: 100,
«download-limit-enabled»: 0,
«download-queue-enabled»: true,
«download-queue-size»: 5,
«encryption»: 1,
«idle-seeding-limit»: 30,
«idle-seeding-limit-enabled»: false,
«incomplete-dir»: «/var/lib/transmission-daemon/Downloads»,
«incomplete-dir-enabled»: false,
«lpd-enabled»: true,
«max-peers-global»: 200,
«message-level»: 2,
«peer-congestion-algorithm»: «»,
«peer-limit-global»: 200,
«peer-limit-per-torrent»: 50,
«peer-port»: 51415,
«peer-port-random-high»: 65535,
«peer-port-random-low»: 49152,
«peer-port-random-on-start»: false,
«peer-socket-tos»: «le»,
«pex-enabled»: true,
«port-forwarding-enabled»: false,
«preallocation»: 1,
«prefetch-enabled»: true,
«queue-stalled-enabled»: true,
«queue-stalled-minutes»: 30,
«ratio-limit»: 2,
«ratio-limit-enabled»: false,
«rename-partial-files»: false,
«rpc-authentication-required»: false,
«rpc-bind-address»: «0.0.0.0»,
«rpc-enabled»: true,
«rpc-host-whitelist»: «»,
«rpc-host-whitelist-enabled»: false,
«rpc-password»: «{a7d7118cc5c00f53aef172ff2ae09bf3e5ae379fMBw1QaKi»,
«rpc-port»: 9091,
«rpc-socket-mode»: «0750»,
«rpc-url»: «/transmission/»,
«rpc-username»: «transmission»,
«rpc-whitelist»: «127.0.0.1»,
«rpc-whitelist-enabled»: false,
«scrape-paused-torrents-enabled»: true,
«script-torrent-added-enabled»: false,
«script-torrent-added-filename»: «»,
«script-torrent-done-enabled»: false,
«script-torrent-done-filename»: «»,
«script-torrent-done-seeding-enabled»: false,
«script-torrent-done-seeding-filename»: «»,
«seed-queue-enabled»: false,
«seed-queue-size»: 10,
«speed-limit-down»: 100,
«speed-limit-down-enabled»: false,
«speed-limit-up»: 100,
«speed-limit-up-enabled»: false,
«start-added-torrents»: true,
«tcp-enabled»: true,
«torrent-added-verify-mode»: «fast»,
«trash-original-torrent-files»: true,
«umask»: «022»,
«upload-limit»: 100,
«upload-limit-enabled»: 0,
«upload-slots-per-torrent»: 8,
«utp-enabled»: true,
«watch-dir»: «/srv/watch»,
«watch-dir-enabled»: true
}

Как раз настройка watch-dir и watch-dir-enabled позволяет при помещении файла в эту директорию автоматически стартовать загрузку. Аутентификация при входе в веб интерфейс по адресу http://{serviceIp}:9091 не требуется

Я этот сценарий использую следующим образом:

  1. На клиенте, где производится поиск и скачивание файлов .torrent создаю папку (например, на рабочем столе папка opi), куда скидываю все файлы, которые надо загрузить

  2. Далее скриптом их перекидываю в watch директорию сервера. На windows это простой bat файл с содержанием:

    move C:\Users\Username\Desktop\opi\*.torrent \192.168.1.100\watch

Чтобы это сработало дополнительно надо поставить samba и настроить директории.

Ставим через sudo apt install samba -y и настраиваем конфигурацию sudo nano /etc/samba/smb.conf

Привожу свою настройку для директорий watch и media

smb.conf

[media]
comment = media
path = /srv/media
browsable = yes
guest ok = yes
read only = no
unix extensions = no
directory mask = 0777

[watch]
comment = watch
path = /srv/watch
browsable = yes
writable = yes
guest ok = yes
read only = no
create mask = 0777
directory mask = 0777

Рестартуем самбу через sudo systemctl restart smbd , закидываем файл в \\{serviceIp}\watch и проверяем , что скачивание стартует.

Мне не очень нравится стандартный веб интерфейс transmission и я решил поискать и установить альтернативное решение. Наиболее симпатичным мне показался TrguiNG , ниже привожу скрипт по его установке:

Переходим в tmp, скачиваем и разархивируем дистрибутив (на момент написания статьи последний релиз был 1.4.0)

cd /tmp
mkdir webui
cd webui
sudo wget
https://github.com/openscopeproject/TrguiNG/releases/download/v1.4.0/trguing-web-v1.4.0.zip
sudo unziptrguing-web-v1.4.0.zip

Останавливаем сервис
sudo service transmission-daemon stop

Бэкапим интерфейс по умолчанию. В последних версиях transmission он находится в папке public_html.

sudo tar -cvf /usr/share/transmission/public_html/backup.tar /usr/share/transmission/public_html/

Переносим новые файлы и настраиваем права

sudo cp -vr * /usr/share/transmission/public_html/
sudo chmod 755 -Rc /usr/share/transmission/public_html/

Стартуем сервис и проверяем, что он работает

sudo service transmission-daemon start
sudo service transmission-daemon status

По тому же урлу http://{serviceIp}:9091 будет доступен новый интерфейс

Пример интерфейса

Пример интерфейса

Есть и другие варианты по интерфейсу, но меня TrguiNG более чем устроил.

На этом все, надеюсь информация будет вам полезна!


ссылка на оригинал статьи https://habr.com/ru/articles/919336/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *