
С момента моего погружения в мир Linux, я периодически приходил к мысли о том, что было бы неплохо прикупить домашний сервер, ибо штука это очень полезная. Так как квартира небольшая и стационарного ПК дома нет (только ноутбуки, мой и жены), то конечно хотелось бы какое-то компактное решение. Однако периоды таких размышлений ограничивались только размышлениями и не приводили к целенаправленной деятельности, но до определенной череды событий...
Дисклеймер
Я честно не ожидал, что статья окажется такой большой, поэтому предлагаю запастись терпением. Надеюсь, она понравится тем, у кого руки не для скуки =)
Прогрев
Первые звоночки поступили в момент, когда мне нужно было найти какой-нибудь старый файл/программу, которая находилась на съёмном жестком диске. Приходилось сначала искать этот хард, потом подключать, потом уже файл искать. Но, благо, приходилось так делать довольно редко. Второй момент, как бы это странно ни прозвучало - цензура. Есть некоторый набор любимых фильмов/сериалов, которые иногда хочется пересмотреть с любимой озвучкой, однако, на стриминговых сервисах либо могли просто блокировать нужную аудиодорожку, либо запикивать некоторые фразы. В какой-то момент, просматривая очередную серию Кремниевой долины, я заметил, что будто бы пропустил небольшой кусок, хотя смотрел неотрываясь. И тут же понял, что из серии вырезан фрагмент, который попадает под действие новых прекрасных законов. Для меня это стало последней каплей.
Я начал консультироваться по вопросам домашних серверов с коллегами и тут образовалось два лагеря, сформировавших отдельные стратегии:
Покупка б/у серверной материнской платы, процессоров и сборка этого хозяйства в корпусе кастомного дизайна (ну то есть самостоятельного изготовления) и стопроцентно самостоятельная настройка софта. Человек, реализовавший такое у себя очень сильно замотивировал, но очень сильно напрягало то, что мне будет некуда встроить такое решение.
Покупка готового решения, например Synology. Если не хочется переплачивать за подписку - накатить на него прошивку Xpenology. Концепция супер, но глядя на ценник (хоть он и не сильно кусается), проступала скупая мужская слеза из-за душащей жабы тратить на это больше, чем 10 тысяч.
Некоторое время после таких опросов я еще долго метался между этими двумя концепциями, не понимая, как лучше поступить, чтобы и денег не было жалко и не надо было возиться со сборкой и расположением железки.
Неожиданное решение
И вот спустя буквально пару месяцев летним вечером 2025 года я проводил ревизию своих запасов электроники: копался среди кучи одноплатников (как производительных, так и не очень), Arduino-контроллеров (ATmega, ESP32, ESP8266, RPI Zero) и прочей рассыпухи. По итогу заметил, что львиная доля этого добра вообще никак не используется в домашнем хозяйстве, хотя это было и не удивительно - весь мой 8-летний опыт работы до Linux был связан с embedded-разработкой, и, как следствие, тогда зависая на маркетплейсах, я что-то покупал себе по скидке, но при этом довольно быстро остывал к задумке, ради которой всё закупалось.
Здесь меня осенило: зачем искать что-то на стороне, когда я могу из имеющихся компонентов собрать то, что нужно, при этом не потратив ни копейки! Сразу же взгляд упал на залежавшийся NanoPC-T4. Вообще у меня был и Raspberry Pi 3B+, но я его иногда возил на работу, как резервный ПК и хотел найти ему другое применение.

Для домашнего NAS в нем было всё плюс-минус необходимое:
Характеристики
RAM: Dual-Channel 4GB LPDDR3-1866
Flash: 16GB eMMC 5.1 Flash
Ethernet 1 Gigabit, Wi-Fi, Bluetooth 4.1, HDMI, USB 2.0, USB 3.0, USB Type-C, PCIe
microSD Slot x 1
40Pin GPIO Extension ports
С фразой в голове "Сейчас я буду устанавливать все игры фильмы" хватаю это чудо инженерной мысли и бегу искать хард, чтобы соединить и затестить свой крутой домашний мини-NAS. Но не тут-то было. Даже на этом этапе уже пришлось повозиться.
Как заставить камни подключаться к Wi-Fi?
Честно говоря, было очень неожиданно споткнуться на самом первом этапе: с нужного раздела на сайте Armbian скачал образ ОС, накатил на SD-карту, запустил плату и... не смог подключиться к Wi-Fi. Как выяснилось, был косяк в самой прошивке.
После этого практически сразу нашелся официальный сайт производителя платы FriendlyElec с разделом конкретно под эту железку. Уже там есть ссылка на папку с официальными образами, с которой я успешно стянул Debian 13. С ним уже проблем не возникло - запуск и подключение к сети прошло без проблем

Первые успехи
Следующие насущные вопросы после успешного запуска платы: подключение внешнего харда, настройка удаленного доступа к файлам и компоновка этого добра в какой-нибудь корпус.
С подключением возиться долго не пришлось, впрочем как и с настройкой доступа, так как мой текущий рабочий опыт подсказал поставить Samba и не париться. Для тех, кто не в курсе - это консольная утилита для Linux, предоставляющая разграниченный доступ к ресурсам на сервере.
Настройка сервера для удаленного подключения к папке
Устанавливаем samba:
sudo apt install samba
Далее заводим пользователя сначала в системе:
sudo adduser test-user
Затем вводим его в Samba (и вводим тот же пароль):
sudo smbpasswd -a test-user
С пользователем разобрались, теперь создаем тестовую папку для нашего пользователя:
sudo mkdir /opt/shared_test sudo chmod 775 /opt/shared_test
Затем правим конфиг Samba smb.conf. На всякий случай создаем копию этого файла, например smb.conf.bak и затем правим оригинал:
# Переименовываем файл: smb.conf -> smb.conf.bak sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak # Создаем заново smb.conf sudo vim /etc/samba/smb.conf
Вставляем туда следующее наполнение:
[global] workgroup = WORKGROUP security = USER server string = %h server bind interfaces only = no log file = /var/log/samba/log.%m log level = 1 max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes usershare allow guests = yes map to guest = bad user idmap config * : backend = tdb [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no [shared_test] comment = Test Folder path = /opt/shared_test/ read only = no guest ok = no writable = yes admin users = test-user
Далее проверяем конфигурацию утилитой testparm:
$ sudo testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] log file = /var/log/samba/log.%m logging = file map to guest = Bad User max log size = 1000 obey pam restrictions = Yes pam password change = Yes panic action = /usr/share/samba/panic-action %d passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . passwd program = /usr/bin/passwd %u security = USER server role = standalone server server string = %h server unix password sync = Yes usershare allow guests = Yes idmap config * : backend = tdb [printers] browseable = No comment = All Printers create mask = 0700 path = /var/spool/samba printable = Yes [print$] comment = Printer Drivers path = /var/lib/samba/printers [shared_test] admin users = test-user comment = Test Folder path = /opt/shared_test/ read only = No
И наконец перезапускаем службы:
sudo systemctl daemon-reload sudo systemctl restart smbd
Теперь всё готово для проверки удаленного подключения
После настройки смотрим ip-адрес нашего сервера, чтобы потом использовать его при подключении. Нас интересует поле inet:
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.168.0.185/24 brd 192.168.0.255 scope global dynamic noprefixroute wlan0 valid_lft 69670sec preferred_lft 69670sec
Видим адрес 192.168.0.185 и сохраняем/запоминаем.
После настройки сервера подключаемся к расшаренной папке, но так как подключение с Windows немного отличается от того, как это делается в Linux, рассмотрим оба этих варианта:
Подключение с Windows
Открываем проводник, правой кнопкой щелкаем по иконке "Этот компьютер" и в появившемся меню кликаем по опции "Подключить сетевой диск"

Далее появится диалоговое окно с подключением. Как указано в примере нужно ввести данные так: \\<ip-адрес сервера>\<имя папки>.
В нашем случае это будет \\192.168.0.185\shared_test.

После нажатия кнопки Готово появится диалоговое окно с учетными данными пользователя. Нужно ввести его имя и пароль, то есть test-user и тот пароль, который задали ранее.
После успешной аутентификации Проводник покажет директорию с её наполнением:

Подключение с Linux через проводник
Изначально всё практически также: открываем проводник и кликаем внизу на клавищу "Other Locations"

Далее в окне внизу пишем адрес сервера по следующему шаблону:<протокол>://<пользователь>@<ip-адрес сервера>/<имя папки>/
То есть в нашем случае:smb://test-user@192.168.0.185/shared_test/

Затем нажимаем клавишу Connect. Затем появится форма аутентификации.
Поле Domain оставляем, как есть. В поле Password пишем пароль пользователя test-user, и нажимаем Connect.

В случае успешной аутентификации Проводник покажет папку с содержимым:

(Бонус) Подключение с Linux из командной строки
Для подключения из командной строки необходимо установить утилиту smbclient:
sudo apt install smbclient
После установки вводим следующую команду:
smbclient \\\\192.168.0.185\\shared_test --user test-user
Далее вводим пароль пользователя test-user по подсказке системы. После успешного прохождения в терминале будет так:
smb: \>
Если ввести команду просмотра текущей локации ls, то мы увидим содержимое папки:
smb: \> ls . D 0 Mon Mar 16 20:37:05 2026 .. D 0 Sat Feb 28 20:19:33 2026 test-text.txt A 0 Mon Mar 16 20:36:59 2026 test1 D 0 Mon Mar 16 20:10:15 2026 10596556 blocks of size 1024. 9392628 blocks available smb: \>
Отмечу сразу, что команды утилиты smbclient отличаются от стандартных в Bash/Zsh и т.д. Чтобы вызвать короткую справку о командах, пишем help:
smb: \> help ? allinfo altname archive backup blocksize cancel case_sensitive cd chmod chown close del deltree dir du echo exit get getfacl geteas hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer notify open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink posix_whoami print prompt put pwd q queue quit readlink rd recurse reget rename reput rm rmdir showacls setea setmode scopy stat symlink tar tarmode timeout translate unlock volume vuid wdel logon listconnect showconnect tcon tdis tid utimes logoff .. !
Есть неплохой материал по командам smbclient, если есть неукротимое желание работать с файлами из терминала.
И так, вот мы наконец подключились к расшаренной папке, а значит - можем закидывать туда файлы или стягивать из оттуда:

Осталось теперь собрать одноплатник с хардом в какой-нибудь корпус и тут мне помог металлический конструктор. Сразу оговорюсь, что тут никаким корпусом и не пахнет, так как это скорее похоже на каркас, который можно встроить например в системный блок. Тогда я думал, что именно в таком виде такое решение куда-нибудь будет встроено.

(Без)башенный сервер
Однако дома нашелся еще один хард, поэтому стало очевидно, что нужно всё-таки заказать корпус Mini-Tower (навскидку самый оптимальный вариант), чтобы и блок питания разместить, и всё остальное туда уложить.

Очередная возникшая проблема - как это всё закрепить? Никаких металлических перфорированных листов я найти не смог, поэтому собранную ранее металлическую конструкцию пришлось разобрать и переделать под внутреннюю панель корпуса. С божьей помощью всё удалось разместить, хотя это было и не трудно - места внутри корпуса хоть отбавляй:

Ладно, в корпус всё запихано, выглядит, конечно, так себе, но тут появляется логичный вопрос: смысл располагать всё это добро внутри корпуса, если очевидно, что нужно будет подключать второй хард и питание точно придется вести не от одноплатника?
Пришлось думать "с запасом", потому что на тот момент я еще не знал, как буду подключать второй хард. Поэтому заказал и установил стандартный блок питания на 750 Вт, который вообще непонятно, как подключать к одноплатнику. Пришлось разбираться в этом бесконечном пучке проводов �� коннекторов.

А разбираться пришлось потому, что если просто так взять и подключить блок питания в розетку и включить тумблер питания, то... питания на кабелях не будет! Поэтому первым делом берем 24-контактный разъём, скрепку и соединяем контакт PS_ON (16) с соседней линией COM (17). И вуаля - питание присутствует на всех кабелях.

Затем разбираемся с одноплатником. По спецификации он запитывается от 12В. Смотрим на схему (Пучок коннекторов) и тыкаем пальцем в molex-коннектор (второй слева), в котором есть линиии для 5В (контакт 1) и 12В (контакт 4). Но на нашем одноплатнике стоит разъём питания DC, а значит придется наше соединение как-то заколхозить: купить molex-разветвитель (чтобы не издеваться над встроенным в блок питания кабелем) и соединить его с кабелями питания DC.
Для тех кто не в курсе:
У DC-разъёмов линия GND - это внешний контакт, питание идет по внутреннему

Теперь разбираемся с проводами. У Molex-разветвителя отрезаем один разъём и припаиваем кабели питания так, чтобы один давал 12В, а второй - 5В, места пайки закрываем термоусадкой.

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

Больше дисков - больше проблем
Теперь наконец-то добрался до жестких дисков. Это оказалось то еще приключение, потому что изначально я думал в сторону каких-то плат-расширений на подобии Penta SATA HAT.

На сайте производителя указана полная совместимость с моделями:
Raspberry Pi 5 (Radxa ROCK 5C)
Radxa ROCK 5A
Radxa ROCK 3C
Radxa ROCK 4A / 4B / 4A+ / 4B+ / 4SE / 3A
Ну и, естественно, ни слова про NanoPC-T4. Так что нужно искать что-то другое. Наверное пару недель я точно был сконцентрирован именно на таких встриваемых решениях, потому что мне казалось, что готовых устройств для таких целей почему-то нет. Как же было приятно узнать, что я ошибался.
Спустя несколько итераций поиска по сайтам и маркетплейсам чисто случайно наткнулся на такую вещь, как докстанция для жестких дисков - это как раз полноценное устройство, которое можно подключить к ПК и с которым не нужно ломать голову по мелочам вроде питания, корпуса и т.д. Всё уже в комплекте. Но в подавляющем большинстве случаев, они предназначены только для двух внешних дисков:

Пришлось потратить еще некоторое время, чтобы найти вариант для большего количества единиц памяти, и такой вариант нашелся - ORICO. Помимо копирования с целевого устройства на устройство назначения, девайс также умеет работать в режиме подключения накопителей. Но самое главное - это количество подключаемых носителей, как раз то, что нужно.

С точки зрения количества устройств подобранный вариант устраивал полностью, но вот габариты... По указанным в карточке товара габаритам я был уверен, что докстанцию можно будет положить на бок внутри корпуса, но вот останется ли место под кабели - было не совсем понятно, потому что штекеры бывают длинные и суммарно со всеми соединениями устройство может банально не влезть. Однако с первой же попытке всё было уложено, подсоединено и располагалось внутри, как надо.
Снова берёмся за питание. У докстанции присутствуют два разъёма:
USB 3.0 для подключения к ПК
Разъём Kycon 4pin для 12-вольтного питания
Согласно задумке, запитываться нужно от внутреннего источника питания, поэтому снова придется колхозить molex-разветвитель: к паре 12В - GND припаять разъём Kycon. Но здесь нужно быть аккуратным, так как у одного и того же разъёма может быть разная полярность:

Изначально я заказал кабель с горизонтальной распиновкой, но после обнаружения другого варианта раписновки пришлось идти за мультиметром и проверять, как обстоят дела на самом деле. Эмпирически выяснилось, что у докстанции она вертикальная, поэтому пришлось заказать другой Kycon-кабель с соответствующей распиновкой.
После получения кабеля, снова беремся колхозить наш molex-разветвитель, к 12-вольтной линии которого припаиваем Kycon-кабель.

Далее подсоединям все компоненты к нашему силовому кабелю и вуяля: одноплатник и докстанция запитаны от внутреннего источника питания и аккуратно расположены внутри корпуса:

После подключения дисков к одноплатнику смотрим, что произошло в системе с помощью dmesg:
$ sudo dmesg [ 1938.453154] scsi 0:0:0:0: Direct-Access External USB3.0 DISK00 0103 PQ: 0 ANSI: 6 [ 1938.453621] scsi 0:0:0:1: Direct-Access External USB3.0 DISK01 0103 PQ: 0 ANSI: 6 [ 1938.456445] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/466 GiB) [ 1938.456826] sd 0:0:0:0: [sda] Write Protect is off [ 1938.456840] sd 0:0:0:0: [sda] Mode Sense: 2b 00 00 00 [ 1938.457165] sd 0:0:0:0: [sda] No Caching mode page found [ 1938.457285] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 1938.459085] sd 0:0:0:1: [sdb] 500118192 512-byte logical blocks: (256 GB/238 GiB) [ 1938.459615] sd 0:0:0:1: [sdb] Write Protect is off [ 1938.459639] sd 0:0:0:1: [sdb] Mode Sense: 2b 00 00 00 [ 1938.460135] sd 0:0:0:1: [sdb] No Caching mode page found [ 1938.460152] sd 0:0:0:1: [sdb] Assuming drive cache: write through [ 1938.484603] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1938.484812] sd 0:0:0:1: Attached scsi generic sg1 type 0 [ 1938.570609] sda: sda1 [ 1938.579943] sdb: sdb1 [ 1938.581575] sd 0:0:0:0: [sda] Attached SCSI disk [ 1938.583328] sd 0:0:0:1: [sdb] Attached SCSI disk
Особенно обращаем внимание на строчки следующее.
То есть система помимо обнаружения и подключения двух дисков (строки 3-4):
[ 1938.453154] scsi 0:0:0:0: Direct-Access External USB3.0 DISK00 0103 PQ: 0 ANSI: 6 [ 1938.453621] scsi 0:0:0:1: Direct-Access External USB3.0 DISK01 0103 PQ: 0 ANSI: 6
автоматически их примонтировала (строки 17-18):
[ 1938.570609] sda: sda1 [ 1938.579943] sdb: sdb1
Проверим это через утилиту lsblk:
$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk `-sda1 8:1 0 465.8G 0 part /media/pi/AD EXT sdb 8:16 0 238.5G 0 disk `-sdb1 8:17 0 238.5G 0 part /media/pi/SSD
То есть дисковое устройство sda было автоматически примонтировано к папке /media/pi/TOSHIBA EXT. А устройство sdb - к папке /media/pi/SSD. Как правило автоматическое монтирование присуще полноценным ОС типа Debian/Ubuntu и т.д., но при условии, что это распространенные устройства. Что-то более менее кастомизированное придется монтировать вручную.
Окей, ничего вручную монтировать нужно, осталось только донастроить конфигурацию в Samba. Дописываем в конец файла smb.conf следующие блоки:
[shared_toshiba] comment = Toshiba External SATA Disk path = "/media/pi/TOSHIBA EXT" read only = no guest ok = no writable = yes admin users = test-user [shared_ssd] comment = Toshiba External SATA Disk path = /media/pi/SSD read only = no guest ok = no writable = yes admin users = test-user
И наконец перезапускаем Samba:
sudo systemctl daemon-reload sudo systemctl restart smbd
Д��ужим физические бэк и фронт
С питанием разобрались, но дальше возникает забавная ситуация: чтобы включить сервер (и чтобы он не выглядел как конструктор), нужно:
Открутить болты и снять боковую панель корпуса
Отодвинуть закрывающие одноплатник и нависающие на докстанцию провода
Нажать на кнопку запуска на одноплатнике
Вернуть провода в исходное положение
Закрыть крышку, закрутить болты
Выглядит (и не только) всё это так себе. Сделаем запуск сервера с одной кнопки. Для начала рассмотрим принципиальную схему от производителя. Там кнопка питания - это фактически разрыв линии. По такому же принципу работает кнопка питания на лицевой панели корпуса системного блока:

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

После установки подключаем провода к кнопке на передней панели. Теперь с конструкцией можно успокоиться. Теперь это похоже на обычный ПК, который запускается с одной кнопки

Настраиваем медиа-сервер (наконец-то)
Я уже было подумал, что до полноценного создания сервера, как раком до Китая, потому что это самый настоящий долгострой, который был начат летом 2025 года. У меня не было готовой инструкции или стратегии: запросы и проблемы встают неожиданно, на их решение нужно время, как и на ожидание очередной комплектухи с маркетплейса. Но зато было понимание что и как работает, каким образом можно проверить, если что-то не работает.
К тому же наличие личной жизни тоже накладывает отпечаток: пока дойдут руки до этого пет-проекта, пройдет пара месяцев. Ну да ладно...
После сборки всего и вся я понял, что походу придется тестировать и разные медиа-серверы, потому что их как минимум не один, и как максимум - у них могут быть разные возможности, свои минусы и плюсы.
Изначально вообще планировал ставить Plex, потому что только про него и знал. Но всё-таки удержался от случайного порыва и решил изучить источники. На моё спасение даже поиск в интернете не был долгим, потому что я наткнулся на статью со сравнением нескольких медиа-серверов, которая сократила мне уйму времени.
По итогу чтения выбираем Jellyfin. Во-первых, потому что платить ничего не надо. Во-вторых есть поддержка пользовательских аккаунтов. И наконец - можно пробросить во внешний мир.
И так, заходим в раздел Загрузки на официальном сайте и устанавливаем по инструкции Debian and Ubuntu в разделе Install Instructions. То есть выполняем команду ниже и ждем окончания установки
curl -s https://repo.jellyfin.org/install-debuntu.sh | sudo bash
По окончании установки в самом конце в выводе терминала будет следующее:
● jellyfin.service - Jellyfin Media Server Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/jellyfin.service.d └─jellyfin.service.conf Active: active (running) since Tue 2026-03-17 16:03:12 MSK; 16s ago Main PID: 42618 (jellyfin) Tasks: 19 (limit: 4571) Memory: 89.8M CPU: 15.643s CGroup: /system.slice/jellyfin.service └─42618 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg Mar 17 16:03:25 NanoPC-T4 jellyfin[42618]: [16:03:25] [INF] There are 0 migrations for stage PreInitialisation. Mar 17 16:03:25 NanoPC-T4 jellyfin[42618]: [16:03:25] [INF] Setting cache path: /var/cache/jellyfin Mar 17 16:03:25 NanoPC-T4 jellyfin[42618]: [16:03:25] [INF] Loading assemblies Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Defined LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Defined LAN exclusions: [] Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Used LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Filtered interface addresses: ["127.0.0.1", "192.168.0.185"] Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Bind Addresses ["0.0.0.0"] Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Remote IP filter is Allowlist Mar 17 16:03:26 NanoPC-T4 jellyfin[42618]: [16:03:26] [INF] Filtered subnets: [] ------------------------------------------------------------------------------- You should see the service as 'active (running)' above. If not, use https://jellyfin.org/contact to find us for troubleshooting. You can access your new instance now at http://192.168.0.185:8096 in your web browser to finish setting up Jellyfin. Thank you for installing Jellyfin, and happy watching!
То есть всё установлено. В 27-й строке написано, по какому адресу Jellyfin доступен: http://192.168.0.185:8096
Можно на всякий случай проверить командой netstat:
$ sudo netstat -tunlp | grep jellyfin tcp 0 0 0.0.0.0:8096 0.0.0.0:* LISTEN 42618/jellyfin udp 0 0 0.0.0.0:7359 0.0.0.0:* 42618/jellyfin
Открываем браузер, вводим туда адрес: http://192.168.0.185:8096 и видим окно настройки:

Жмем Next и создаем учетную запись администратора медиа-сервера

Жмем Next и проваливаемся в окно добавления медиа-библиотек:

Разрешения для сервера
Здесь возникла заминка, потому что при попытке найти примонтированные каталоги через интерфейс Jellyfin в папке /media/pi, приложение выдало пустоту:

Тогда делаем проверку, но сначала короткая справка:
Справка
В Linux есть возможность создания учетной записи пользователя для приложений. Например установили в систему, допустим, tcpdump. В файле /etc/passwd находим о нем информацию:
$ sudo cat /etc/passwd | grep tcpdump tcpdump:x:109:117::/nonexistent:/usr/sbin/nologin
Информация о пользователе предоставляется в виде:
имя:пароль:UID:GID:комментарий:домашний_каталог:оболочка │ │ │ │ │ │ └─ /usr/sbin/nologin │ │ │ │ │ └─ /nonexistent │ │ │ │ └─ пусто │ │ │ └─ 117 │ │ └─ 109 │ └─ x (хеш пароля хранится в файле /etc/shadow) └─ tcpdump
Та же самая учетная запись заведена и для Jellyfin:
$ sudo cat /etc/passwd | grep jellyfin jellyfin:x:111:118:Jellyfin default user,,,:/var/lib/jellyfin:/bin/false
Значит мы можем работать над разрешениями Jellyfin, как для пользователя
Более подробно про разрешения можно почитать в этой статье.
Проверяем, доступна ли папка пользователям pi и jellyfin:
$ sudo -u pi ls /media/pi/SSD '$RECYCLE.BIN' 'System Volume Information' Video $ sudo -u jellyfin ls /media/pi/SSD ls: cannot access '/media/pi/SSD': Permission denied
Вероятнее всего проблема с разрешениями в самой папке /media/pi. Проверим её разрешения:
sudo ls -ld /media/pi drwx---r-x 5 root root 4096 Mar 18 20:12 /media/pi
Видим, что для раздела группы всё убрано, проблема действительно в этом. Навесим на неё разрешение 755 и снова проверим:
sudo chmod 755 /media/pi/SSD $ sudo -u jellyfin ls /media/pi/SSD '$RECYCLE.BIN' 'System Volume Information' Video
Ну и закрепляем результат проверкой на вебморде:

Не буду далее расписывать подключение библиотек, так как там всё пошагово и понятно, GUI сам по себе приятный, разобраться в котором не составляет особого труда.
И теперь самое главное - у Jellyfin существуют приложения для мобильных устройств и smart TV. Так что смотреть контент очень удобно.
Экономика
Скажу сразу, что в таблице не будет стоимости одноплатника, так как он достался мне с рук за бесплатно в хорошем состоянии, но вообще NanoPC-T4 - одноплатник сам по себе не дешевый, так как в нем 6 ГБ оперативы. На мой взгляд по минималке достаточно 4ГБ (т.к. 2ГБ будет совсем мало), такие одноплатники стоят в среднем 5500-7000 рублей. Но это если у вас нет цели гонять 4К видео.
Комплектующие | За сколько брал в 2025 | Сколько стоит 03.2026 |
1413 | 2171 | |
1572 | 1809 | |
4727 | 5936 | |
119 | 149 | |
195 | 180 | |
452 | 402 | |
Итого | 8478 | 10647 |
Чтобы не быть голословным, возьмем Orange Pi 4 Pro c 4GB RAM за 6514 рублей, то получится 17161 на сегодняшние деньги. Теперь давайте сравним с имеющимися на рынке NAS
Сервер | Примечание | Стоимость в рублях |
Наш кустарный сервер | 8 ядер, 4GB RAM, 4 диска | 17161 |
4 ядра, 1GB RAM, 1 диск | 18936 | |
4 ядра, 2GB RAM, 2 диска | 33018 |
В настоящее время (03.2026) всё, что дешевле 18 тысяч - это докстанции для HDD, которые нельзя назвать самостоятельными NAS-серверами, так как они требуют внешнего подключения к компьютеру для управления содержимым дисков.
Заключение
Внимательный читатель скажет:
Эй, ты же в начале статьи писал, что не хотел сильно возиться с самодельной конструкцией. А по итогу вышло обратное!
и будет абсолютно прав, так как в ходе работы приоритет сместился в сторону обычной экономии. И здесь я всё-таки смог кое-как втиснуться в заданные 10 тысяч. Но замечу, что если кто-то пойдет по моим стопам создания NAS из одноплатника, то заплатит больше, так как одноплатник у меня появился через знакомого, который отдал его мне за бесплатно.
При создании этого сервера пришлось пройти, конечно, довольно забавный путь, предполагающий решение не только софтовых, но и конструкторских (с большой натяжкой) задач. В целом решение можно наз��ать работоспособным и пригодным к домашнему использованию.
Буду рад ответить на вопросы =)
P.S. В процессе написания статьи стало понятно, что из этой истории было бы лучше сделать пошаговую инструкцию, как собрать такое "сокровище", без воды регистрации и смс. Если хотите, тогда голосуем!