Домашний NAS (один из вариантов) - Forum 3Dnews Tech
Вернуться   Forum 3Dnews Tech > Железо > Носители информации
Вход через: 

Ответ Создать новую тему
 
Опции темы Опции просмотра
Старый 20.11.2024, 11:48   [включить плавающее окно]   Вверх   #1
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Домашний NAS (один из вариантов)

Наконец-то созрел, чтобы рассказать о своей полусамосборной файлопомойке.

Дисклеймер.
Здесь поделюсь своими мыслями, техническими решениями и опишу, почему такой путь самурая выбрал. Всё нижеизложенное не есть истина в первой инстанции, а всего лишь жонглирование между ценой, трудоёмкостью и тз, но может кому-то понравятся некоторые технические моменты, поэтому и выкладываю сие. Ценники в рублях, конечный продублирую в долларах.

ТЗ.
Без ТЗ - результат хз (с)
Так что тут без него никак, хотя оно наипростейшее: дешёвая мультимедийная файлопомойка, на которую не страшно посмотреть. Ну и реального доступного места от 10TiB, всё же все мои потребители контента могут воспроизводить 4к, да и какой-никакой запас контента должен быть.
Никаких рейдов, ибо высокая доступность не нужна. Эта файлопомойка является ответом на уход Нетфликсов/Амазонов/etc, тут на >90% контент будет состоять из фильмов и сериалов. Бекапы? Вероятны для оставшихся <10%, но без изысканных решений, простой rsync на внешний das.

Железо.
Уже давно присматривался к китайским nas'ам, но то ценник заоблачный, то железо слабенькое, особенно сетевая часть. По факту следил за эволюцией Kingnovy R1/AOOSTAR R1/TAPTON R1/CHATREEY R1, там много клонов этой платформы на разных процах. Очень хотелось на райзене r7, но это сразу ставило крест на ТЗ, где во главе стоял ценник, так что мониторил варианты на Intel N100. Что мне не нравилось в варианте на Intel: слабая сетевая часть (1-2 гигабитных интерфейса) и высокий ценник, если без скидок. Рядовая цена была около 25к, что много для данной платформы, что по мне. Но порой на Али проскакивают акции и сие железо можно взять за ~15к, что уже адекватно.
И вот как-то звёзды сложились очень удачно и на просторах Али нашёл вариант за 15к, так ещё с intel i226v сдвоенной сетевухой, т.е. 2.5Гб/с врывается в нашу жизнь с двух ног за очень "вкусный" прайс. Решено было брать безотлагательно, по итогу не пожалел.
Вот тут можно найти обзор это коробки. Если тезисно, то: дёшево, сердито, биос глючный, охлад надо доводить до ума, но своих денег стоит. В свой вариант добавил 16ГБ RAM, бо для файлопомойки этого хватает с головой. Ну и вентилятор заменил на ID-COOLING TF-9215-W.


Диски.
Это боль в моя дырка зад...ца (с)
Самая затратная часть бюджета. Локальные ценники ни в какие ворота, а с учётом обрезанной годовой гарантии даже не рассматривал локальный ритейл как вариант. В статье Собираем бюджетный домашний NAS на 14 ТБ, которая стала для меня стартовой точкой для сбора файлопомойки, как раз обсуждается вариант покупки б/у дисков за рубежом, но отталкиваясь от статистики Backblaze. Хотел повторить всё 1-в-1, но варианты на 14ТБ резко стали невыгодны, видимо "хабраэффект" на Али сработал, пришлось брать Exos X12, которые не так хороши в статистике Backblaze, но показывали лучшее отношение цены/объём на тот момент. Оба диска в среднем вышли по 13к. Пробил их по серийнику - не retail вариант и были поставлены в составе каких-то серваков, дата производства - оба январь 2024, смарт сброшен. Посмотрим, как себя поведут со временем, пока всё ок.
Итого: 2х12ТБ за 26к.

Системный диск.
Тут m.2 nvme без вариантов. Intel N100 поддерживает только pcie 3.0, так что можно было не гнаться за скоростью, а выбрать проверенный вариант. Там же на Али нашёл WD Black SN770 на 1ТБ за 7к. Пробил по серийнику: выпущен в мае 2024, 5 лет гарантии на Материковом Китае
В планах хочу туда слетать, так что гарантия условно-рабочая

Софт.
Надо выбирать ОС, которую хорошо знает твой друг-админ (с)
Тут как бы само напрашивается либо OMV, либо Truenas, либо Xpenology.
Но у самурая свой путь, выбрал ОС общего назначения в лице Alpine Linux, ибо легковесная и я всё собираюсь докеризировать в ней. По-классике настроил связку zsh + oh-my-zsh + powerlevel10k, нужных мне плагинов накидал, современных тулов (docker + docker compose, lazydocker, btop, ncdu, duf, etc) и готово, осталось подготовить docker compose файлы с подмонтированными дисками. В докере крутятся: самба с RO для всех (это домашняя мультимедийная файлопомойка), transmission и jellyfin. Последнее в связке в впн на роутере даёт возможность смотреть фильмы извне даже на плохих каналах, т.к. jellyfin умеет транскодить "на лету", чтобы подстраиваться под пропускную способность. Единственное что, так это лаг с воспроизведением и перемоткой секунд по 10, но я ещё с Intel QSV не разобрался, должно ускорить всё это, если правильно приготовить.

Сеть.
Самый короткий железный абзац: на Али купил sfp модуль для роутера на 2.5Гб/с за 1.5к. Работает на полной скорости. Единственное что, так это надо выключить Energy Efficient Ethernet, ибо i226v.

Итого.
Конечная стоимость: 55к или ~600$ за всё. Доступного места 21.5TiB.

Доступа к фотографиям сего чуда пока нет, добавлю, если будет нужда.
Советы, вопросы, критика приветствуются.
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 11:49   [включить плавающее окно]   Вверх   #2
Multimedia
Мужской Запрещенный
 
Регистрация: 28.05.2024
Адрес: Germany
Цитата
Доступного места 21.5TiB
Зачем столько?
Multimedia вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 11:53   [включить плавающее окно]   Вверх   #3
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Цитата (Multimedia) »
Зачем столько?
Люблю смотреть в качестве. Три части Крёстного Отца, два Аватара и сериал Друзья - уже террабайт
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 12:04   [включить плавающее окно]   Вверх   #4
Multimedia
Мужской Запрещенный
 
Регистрация: 28.05.2024
Адрес: Germany
Цитата (VitohA) »
Люблю смотреть в качестве. Три части Крёстного Отца, два Аватара и сериал Друзья - уже террабайт
А ну тогда понятно! смысл в этом есть
Multimedia вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 12:20   [включить плавающее окно]   Вверх   #5
Multimedia
Мужской Запрещенный
 
Регистрация: 28.05.2024
Адрес: Germany
VitohAв каком разрешении и на каком монике(тв) смотришь?
Multimedia вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 13:06   [включить плавающее окно]   Вверх   #6
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Multimedia
На телевизорах, оба 4к.
И у обоих на плеерах установлен coreelec, а на файлопомойке микро-база для синка библиотеки и прогресса между ними.
Как тут: KODI: собираем удобный и функциональный медиацентр для дома. Часть 6. MariaDB и синхронизация медиатеки
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 13:39   [включить плавающее окно]   Вверх   #7
Lesnik75
Мужской Сам ты IMHO!
 
Регистрация: 08.02.2003
Адрес: Nsk
VitohA
А что, хорошее решение как для медиа.
2.5 на сколько избыточно? На телевизорах то поди 100
__________________
и тут пришел лесник ;)
Lesnik75 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 14:19   [включить плавающее окно]   Вверх   #8
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Цитата (Lesnik75) »
2.5 на сколько избыточно? На телевизорах то поди 100
Не избыточно, один EXOS может до 2Гб/с нагрузить. А к телекам у меня приставки идут, гигабитная и на 100, последнюю надо менять тоже на гигабит, а то на крупных файлах лагает из-за сети. Ну и в кабинет у меня идёт 10
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 14:51   [включить плавающее окно]   Вверх   #9
Lesnik75
Мужской Сам ты IMHO!
 
Регистрация: 08.02.2003
Адрес: Nsk
Цитата (VitohA) »
и на 100, последнюю надо менять тоже на гигабит, а то на крупных файлах лагает из-за сети.
Так и я за то же. Хотя на мелких файлах не лагает, факт )))
__________________
и тут пришел лесник ;)
Lesnik75 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 20.11.2024, 16:59   [включить плавающее окно]   Вверх   #10
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Цитата (Lesnik75) »
Так и я за то же. Хотя на мелких файлах не лагает, факт )))
Кстати, и на относительно мелких лагает порой, если пиковый поток уходит выше 100Мб/с. Сейчас везде vbr и такое даже на 15-20 гиговых файлах иногда встречается, а Kodi при этом "морозит" картинку, пока не поставишь на паузу и не снимешь с неё. Бага-с!
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 22.11.2024, 10:43   [включить плавающее окно]   Вверх   #11
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
И пару слов о софте/багах/etc.

Т.к. у меня всё докеризировано, а файлопомоечные диски не рутовые, то нужно пофиксить демон докера, чтобы он ждал маунта всех дисков. В противном случае докер порой поднимается быстрее, нежели монтируются диски, легковесность дистрибутива даёт о себе знать.
Так что правим openrc конфиг докера в /etc/runlevels/default/docker, добавив dev-mount в depend() секцию. По итогу получаем такой результат:

СПОЙЛЕР »
Код:
#!/sbin/openrc-run
supervisor=supervise-daemon

name="Docker Daemon"
description="Persistent process that manages docker containers"
description_reload="Reload configuration without exiting"

command="${DOCKERD_BINARY:-/usr/bin/dockerd}"
command_args="${DOCKER_OPTS}"

DOCKER_LOGFILE="${DOCKER_LOGFILE:-/var/log/${RC_SVCNAME}.log}"
DOCKER_ERRFILE="${DOCKER_ERRFILE:-${DOCKER_LOGFILE}}"
DOCKER_OUTFILE="${DOCKER_OUTFILE:-${DOCKER_LOGFILE}}"
if [ "$DOCKER_ERRFILE" = "$DOCKER_OUTFILE" ]; then
        LOGPROXY_OPTS="$LOGPROXY_OPTS -m"
fi
export \
        LOGPROXY_CHMOD="${LOGPROXY_CHMOD:-0644}" \
        LOGPROXY_LOG_DIRECTORY="${LOGPROXY_LOG_DIRECTORY:-/var/log}" \
        LOGPROXY_ROTATION_SIZE="${LOGPROXY_ROTATION_SIZE:-104857600}" \
        LOGPROXY_ROTATION_TIME="${LOGPROXY_ROTATION_TIME:-86400}" \
        LOGPROXY_ROTATION_SUFFIX="${LOGPROXY_ROTATION_SUFFIX:-.%Y%m%d%H%M%S}" \
        LOGPROXY_ROTATED_FILES="${LOGPROXY_ROTATE_FILES:-5}"

output_logger="log_proxy $LOGPROXY_OPTS $DOCKER_OUTFILE"
error_logger="log_proxy $LOGPROXY_OPTS $DOCKER_ERRFILE"

extra_started_commands="reload"

rc_ulimit="${DOCKER_ULIMIT:--c unlimited -n 1048576 -u unlimited}"

retry="${DOCKER_RETRY:-TERM/60/KILL/10}"

if [ -e /etc/profile.d/proxy.sh ]; then
        . /etc/profile.d/proxy.sh
fi

depend() {
        need sysfs cgroups net dev-mount
        after firewall
}

start_pre() {
        checkpath -f -m 0644 -o root:docker "$DOCKER_ERRFILE" "$DOCKER_OUTFILE"
}

reload() {
        ebegin "Reloading configuration"
        $supervisor $RC_SVCNAME --signal HUP
        eend $?
}


Весь софт докеризирован для лёгкого переноса между серверами и восстановления. Даже самба
Всё добро расположено в одном docker-compose,yaml файле, примерно такого вида:

СПОЙЛЕР »
Код:
services:
  samba:
    image: samba
    restart: ${RESTART_POLICY}
    build:
      context: .
      dockerfile: docker/samba
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=${TIMEZONE:-Europe/Moscow}
    volumes:
      - ${DOWNLOAD_FOLDER}:/downloads
      - ./config/samba/smb.conf:/etc/samba/smb.conf:ro
    ports:
      - 445:445
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 500M
  transmission:
    image: transmission
    user: vitoha
    restart: ${RESTART_POLICY}
    build:
      context: .
      dockerfile: docker/transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=${TIMEZONE:-Europe/Moscow}
    volumes:
      - ./config/transmission:/transmission/config
      - ${DOWNLOAD_FOLDER}:/downloads
    ports:
      - ${WEB_UI_PORT:-9091}:9091
      - ${TORRENT_PORT:-64320}:64320
      - ${TORRENT_PORT:-64320}:64320/udp
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 4G
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:10.9.11
    container_name: jellyfin
    devices:
      - /dev/dri
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel
    volumes:
      - ./config/jellyfin:/config
      - ${DOWNLOAD_FOLDER}/tvseries:/data/tvshows
      - ${DOWNLOAD_FOLDER}/movies:/data/movies
    ports:
      - 8096:8096
      - 8920:8920
      - 7359:7359/udp
      - 1900:1900/udp
    restart: ${RESTART_POLICY}
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 1G


И содержимое .env файла, откуда подтягиваются переменные (только там что-то и надо править):
СПОЙЛЕР »
Код:
RESTART_POLICY=always
DOWNLOAD_FOLDER=/fileshare


Transmission и samba билдятся на локальной машине, вот их контент:
samba
СПОЙЛЕР »
Код:
FROM alpine:edge
RUN apk add --no-cache samba
ENTRYPOINT ["smbd", "-F", "--no-process-group"]

transmission (с закомменченым примером смены веб-интерфейса)
СПОЙЛЕР »
Код:
FROM alpine:edge

ENV USER_ID=1000
ENV GROUP_ID=1000
ENV USER_NAME=vitoha
ENV GROUP_NAME=vitoha

RUN addgroup -g $GROUP_ID $GROUP_NAME && \
    adduser --shell /sbin/nologin --disabled-password \
    --no-create-home --uid $USER_ID --ingroup $GROUP_NAME $USER_NAME
WORKDIR /app
RUN apk add --no-cache transmission-daemon wget unzip
#RUN wget https://github.com/Secretmapper/combustion/archive/release.zip && unzip release.zip
#ENV TRANSMISSION_WEB_HOME='/app/combustion-release'
ENTRYPOINT ["/usr/bin/transmission-daemon", "--foreground", "--config-dir", "/transmission/config"]


Да, не везде "красота", но это в процессе, т.к. надо добавить ещё jakett и Radarr для автоматизации автодобавления фильмов в библиотеку, а потом только оптимизировать compose. Ибо преждевременная оптимизация - корень всех бед.

По-факту система работает и работает без сбоев, после ребута автоматически поднимается очень быстро, но работы много впереди: и сервисов добавить, и нормально переписать композ, и адекватно добавить второй диск, который пока что только для "красоты".
По ресурсам: чисто для файлопомойки с торрентами хватит и 4ГБ ОЗУ, у меня потребление чуть повыше, т.к. ещё много, что там в тестовых целях крутится.
Миниатюры
Screenshot from 2024-11-22 10-40-23.png  
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 22.11.2024, 12:26   [включить плавающее окно]   Вверх   #12
Lesnik75
Мужской Сам ты IMHO!
 
Регистрация: 08.02.2003
Адрес: Nsk
VitohA
К Transmission какой-нибудь GUI юзаешь? TrguiNG, Transmission remote, Transgui?
__________________
и тут пришел лесник ;)
Lesnik75 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 22.11.2024, 12:29   [включить плавающее окно]   Вверх   #13
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Lesnik75
Transmission remote на телефоне и встроенную web-морду с компа. Но если всё же нормально настрою radarr, то в этом почти отпадёт надобность
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 23.11.2024, 21:18   [включить плавающее окно]   Вверх   #14
XaXoL
Мужской Модератор
 
Аватар для XaXoL
 
Регистрация: 17.03.2004
Адрес: K-PAX
Цитата (VitohA) »
докеризировано
это что?
XaXoL вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 24.11.2024, 01:18   [включить плавающее окно]   Вверх   #15
Multimedia
Мужской Запрещенный
 
Регистрация: 28.05.2024
Адрес: Germany
Я тоже подумал о файлопомойке,но как выяснилось мне это не нужно,посмотрел и удалил,нафиг их хранить? Сейчас у меня 3 тб мне хватит
Multimedia вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 24.11.2024, 02:33   [включить плавающее окно]   Вверх   #16
Lesnik75
Мужской Сам ты IMHO!
 
Регистрация: 08.02.2003
Адрес: Nsk
XaXoL
Это контейнеры такие.
__________________
и тут пришел лесник ;)
Lesnik75 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 24.11.2024, 13:30   [включить плавающее окно]   Вверх   #17
XaXoL
Мужской Модератор
 
Аватар для XaXoL
 
Регистрация: 17.03.2004
Адрес: K-PAX
Цитата (Lesnik75) »
XaXoL
Это контейнеры такие.
понятнее не стало )
XaXoL вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 24.11.2024, 13:35   [включить плавающее окно]   Вверх   #18
Lesnik75
Мужской Сам ты IMHO!
 
Регистрация: 08.02.2003
Адрес: Nsk
XaXoL
А что не понятно то? Специализированное ПО, разворачивающее конкретное приложение в автономном контейнере. Линуксовая тема, позволяющая избежать нестыковок и лишних костылей за счет костылей не лишних )))
__________________
и тут пришел лесник ;)
Lesnik75 вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 24.11.2024, 18:02   [включить плавающее окно]   Вверх   #19
VitohA
Мужской 3Dnews fan
Автор темы
 
Регистрация: 13.09.2016
Адрес: Citizen of the World
Цитата (Lesnik75) »
Линуксовая тема, позволяющая избежать нестыковок и лишних костылей за счет костылей не лишних )))
Не только линуксовая, в винде тоже есть. Причём там 3 реализации: lcow и две wcow. Последние 2 представляют собой либо обёртку поверх hyper-v, либо нативную виндовую контейнеризацию



Цитата (Multimedia) »
Я тоже подумал о файлопомойке,но как выяснилось мне это не нужно,посмотрел и удалил,нафиг их хранить? Сейчас у меня 3 тб мне хватит
Ну так моё решение спецом делалось для территорий, где от потоковых сервисов осталось только одно название.

Последний раз редактировалось VitohA; 24.11.2024 в 18:17.
VitohA вне форума  
Конфигурация ПК
Ответить с цитированием
Старый 25.11.2024, 02:58   [включить плавающее окно]   Вверх   #20
Lesnik75
Мужской Сам ты IMHO!
 
Регистрация: 08.02.2003
Адрес: Nsk
Цитата (VitohA) »
Не только линуксовая, в винде тоже есть.
Это я за исторический приоритет, где впервые появилось.
__________________
и тут пришел лесник ;)
Lesnik75 вне форума  
Конфигурация ПК
Ответить с цитированием
Ответ Создать новую тему


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:11. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot