Всем привет! Хочу поделиться своим опытом настройки медиасервера на базе Orange Pi RV2. В статье другого автора описан опыт настройки на базе платы Orange Pi Zero 3, я решил пойти немного другим путем исходя из следующих требований:
-
Хотелось нативной поддержки NVMe диска от платы
-
Максимально компактное решение (только сама плата и диск, никаких внешних носителей/переходников по USB)
-
Относительная дешевизна
Выбор платы
Изучив официальный сайт 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 не требуется
Я этот сценарий использую следующим образом:
-
На клиенте, где производится поиск и скачивание файлов .torrent создаю папку (например, на рабочем столе папка opi), куда скидываю все файлы, которые надо загрузить
-
Далее скриптом их перекидываю в 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/
Добавить комментарий