В последние годы зависимость от облачных сервисов стала проблемой: компании в любой момент могут изменить условия использования или вовсе закрыть сервис (как это произошло с Notion например). Кроме того, платные подписки на хранилища и сервисы накапливаются, а контроль над своими данными теряется.

В целом NAS (Network Attached Storage) в общем случае это сетевое хранилище, которое используется для хранения произвольных файлов. Это сервер, так что можно использовать его для решения более широкого круга задач, кроме хранения файлов.

Я решил собрать собственный NAS для решения нескольких задач:

  • Защита от ухода иностранных сервисов – хранение данных под своим контролем.

  • Экономия на подписках – отказ от платных облачных хранилищ.

  • Хранение большого объема данных – документы, лекции, фотографии, медиафайлы.

  • Развертывание любых сервисов – от аналогов Notion до стриминга фильмов. Доверия к иностранным сервисам больше нет, так что приходится выкручиваться.

В этой статье я расскажу о выборе железа, настройке программной части и развернутых сервисах. Часть компонентов мне досталась от лаборатории COSM, так что местами получилось сэкономить, за что им отдельная благодарность.

Выбор железа

Готовые решения vs Своя сборка

Существуют уже готовые NAS (Synology, QNAP, TrueNAS Mini). Они удобны, но дороги и менее гибки. Я выбрал самостоятельную сборку, чтобы получить больше возможностей за меньшие деньги.

Готовые NAS
Готовые NAS

Готовые NAS (Synology, QNAP, TrueNAS Mini):

✅ Простота настройки

✅ Компактность и низкое энергопотребление

❌ Дорого (от 50 тыс. руб. за 4-дисковые модели)

❌ Ограниченная производительность и апгрейд

Своя сборка:

✅ Дешевле при большей мощности

✅ Гибкость в выборе компонентов

✅ Возможность развертывания любых сервисов

❌ Требует времени на настройку

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

Диски

На текущий момент одни из самых распространённых интерфейсов подключения дисков это SAS и SATA. С SATA пожалуй сталкивались все в своих домашних ПК, а вот с SAS не обязательно.

Основные различия SAS и SATA HDD

Характеристика

SAS HDD

SATA HDD

Интерфейс

Serial Attached SCSI (12 Гбит/с)

SATA III (6 Гбит/с)

Надежность

Выше (рассчитаны на 24/7 нагрузку)

Средняя (обычно для десктопов)

Скорость

Быстрее (лучшая очередь команд)

Медленнее (хуже с многопоточной нагрузкой)

Поддержка

Требует SAS-контроллер/HBA

Работает с обычными SATA-портами

Цена

Дороже (особенно новые)

Дешевле (широкий выбор б/у)

Энергопотребление

Выше (обычно 7200 RPM)

Ниже (бывают 5400 RPM "зеленые" диски)

Для сервера лучше выбирать SAS. Они созданы для работы 24\7 и отлично работают с ZFS. Кроме того выбор б\у довольно широкий и цена не сильно кусается

Мой вариант

В моём случае 8 SAS дисков мне достались практически бесплатно, поэтому выбор был очевиден.

Отступление про ZFS

Дальше в статье частенько упоминаю эту файловую систему, поэтому отступление.

ZFS (Zettabyte File System) – это современная файловая система, разработанная Sun Microsystems (ныне Oracle). Она объединяет управление дисками, RAID, снапшотами и кешированием в единую систему, обеспечивая высокую надежность и производительность.

Ключевые особенности ZFS

Объединение файловой системы и менеджера дисков (Volume Manager)

  • Традиционные системы:

    • Файловая система (ext4, NTFS) + отдельный RAID-контроллер (аппаратный/программный).

  • ZFS:

    • Самостоятельно управляет дисками, томами и файлами, исключая промежуточные слои.

Копирование при записи (Copy-on-Write, CoW)

  • Данные никогда не перезаписываются, а создаются новые блоки.

  • Плюсы:

    • Нет риска повреждения данных при сбоях питания.

    • Мгновенные снапшоты без нагрузки на диски.

Самовосстановление данных

  • Контрольные суммы (checksums) хранятся для всех блоков.

  • При чтении ZFS проверяет целостность и автоматически исправляет ошибки (если есть избыточность).

Динамическое распределение пространства

  • Пулы (pools) могут включать диски разного размера.

  • Легко добавлять новые диски без остановки системы.

Встроенное сжатие и дедупликация

  • Сжатие (lz4, zstd): экономит место без потери производительности.

  • Дедупликация: исключает дублирование данных (требует много RAM).

Контроллер

SAS контроллер
SAS контроллер

Для работы с SAS дисками требуется контроллер. SAS-контроллер (Host Bus Adapter, HBA) — это плата расширения, которая обеспечивает подключение SAS/SATA-дисков к материнской плате.

Отвечает за:

  • Управление дисками

  • Организацию RAID (если поддерживается)

  • Передачу данных между дисками и системой

Основные типы SAS-контроллеров

1. HBA (Host Bus Adapter)

  • Режим IT (Initiator Target) — "прозрачный" режим, передает диски напрямую в ОС.

  • Использование:

    • ZFS, TrueNAS, UnRAID (где нужен прямой доступ к дискам)

    • Программные RAID-решения (mdadm, Windows Storage Spaces)

  • Примеры: LSI 9211-8i, LSI 9300-8i

2. RAID-контроллеры

  • Режим IR (Integrated RAID) — аппаратный RAID (RAID 0/1/5/6/10).

  • Использование:

    • Традиционные RAID-массивы (без ZFS/Btrfs)

    • Серверы, где важна простота управления

  • Примеры: LSI 9260-8i, Dell PERC H700

3. Универсальные (переключаемые)

  • Могут работать в IT-режиме (HBA) или IR-режиме (RAID).

  • Примеры: LSI 9240-8i (можно перепрошить в IT-режим)

Ключевые характеристики

Интерфейс подключения

Тип

Пропускная способность

Использование

PCIe 2.0 x8

4 ГБ/с

Старые контроллеры (LSI 9211)

PCIe 3.0 x8

8 ГБ/с

Современные (LSI 9300, 9400)

PCIe 4.0 x8

16 ГБ/с

Топовые (Broadcom 9500)

Количество портов

  • 8 портов (2× SFF-8087) — самый популярный вариант (например, LSI 9211-8i).

  • 16 портов (4× SFF-8087) — для крупных хранилищ (LSI 9300-16i).

Режимы работы: IT vs IR

IT-режим (Initiator Target)

  • Что делает: передает диски "как есть" в ОС.

  • Плюсы:

    • Идеален для ZFS, TrueNAS, Ceph

    • Нет накладных расходов на RAID

  • Минусы:

    • Нет аппаратного RAID

IR-режим (Integrated RAID)

  • Что делает: создает аппаратный RAID.

  • Плюсы:

    • Разгрузка CPU

    • Простота управления (из BIOS/UEFI)

  • Минусы:

    • Хуже подходит для ZFS (скрывает SMART-данные)

    • Сложность восстановления при поломке контроллера

Размер сектора. Важный момент!

  • 512b vs 4K: большинство современных контроллеров поддерживают оба формата.

  • Проблема: старые контроллеры (например, LSI 1068) могут не видеть 4K-диски.

Мой вариант

Мне достался LSI-9261. Он не поддерживает IT режим, значит необходимо в любом случае настраивать аппаратный RAID. Кроме того он не поддерживает диски с размером сектора 4K, что нужно иметь ввиду при выборе дисков.

Провода

SAS кабель
SAS кабель

Тут главное не ошибиться в разъеме на стороне контроллера. В моём случае это был SFF-8087 и кабель SFF-8087 4x SAS 8482. С помощью такого кабеля к разъему на контроллере подключается до 4-х дисков

Корпус

Мой корпус NAS снаружи
Мой корпус NAS снаружи
Мой корпус NAS внутри
Мой корпус NAS внутри
Крышка корпуса
Крышка корпуса

Добавил немного шумоизоляции и пылевой фильтр на крышку корпуса.

В моём случае корпус имеет форм-фактор mini ITX. Конструктивно он не предназначен для установки 8-ми дисков 2.5 дюймов, поэтому я нашёл корзину, которая поможет мне решить данную ситуацию.

Кроме того чтобы 2 такие корзины поместились в корпус необходимо было выбрать низкопрофильный кулер, чтобы не занимать место над платой, а поставить туда диски.

Далее мой небольшой персональный список интересных корпусов

Корпус Jonsbo
Корпус Jonsbo

Jonsbo N4 (mATX), на aliexpress например можно найти по приятной цене.

Корпус Exegate
Корпус Exegate

Exegate FL-102 (Mini ITX)

Корпус Jonsbo C6
Корпус Jonsbo C6

Jonsbo C6

Корпус DeepCool
Корпус DeepCool

DeepCool CH160

Материнская плата, процессор

Карточка материнской платы с маркетплейса
Карточка материнской платы с маркетплейса

В моём случае было ограничение на форм-фактор mini-ITX, что сильно ограничивало выбор плат. Я взял одну из самых дешевых китайских на 1150 сокете. Плата оказалась настолько китайская, что найти информацию о производителе я так и не смог. К ней докупил 4-х ядерный Xeon E3-1230v3. Суммарно вышло менее 8к за комплект.

В целом выбор оказался неплох, на мои задачи хватило. Но я бы посоветовал вам купить какой-нибудь готовый комплект форм-фактора mATX на 2011 сокете. За те же деньги вы получите более современное и производительное железо, если не ограничиваться ITX форматом корпусов. Например я находил несколько наборов с 14-ядерными Xeon + 32 гб RAM. Это будет большим запасов по производительности и покроет практически любые задачи для личного пользования.

Память

В процессе сборки пришлось расширить свои знания в плане подбора памяти. Делюсь краткой сводкой, потому что по незнанию сам напоролся на несовместимость.

Non-ECC (обычная память)

ECC и NON ECC память визуальные отличия
ECC и NON ECC память визуальные отличия
  • Нет коррекции ошибок

  • Использование:

    • Игровые ПК, десктопы.

    • Не подходит для ZFS/серверов (риск повреждения данных).

Обычная ECC (Unbuffered ECC, UDIMM ECC)

Отличительная особенность - дополнительный 9-й чип коррекции ошибок

Внешний вид ECC памяти
Внешний вид ECC памяти
  • Как работает:

    • Контроль четности + коррекция ошибок.

    • Нет буферизации сигнала.

  • Где используется: Бюджетные серверы и домашние NAS.

  • Ограничения:

    • Поддерживается не всеми материнскими платами.

    • Макс. объем модуля обычно 32 ГБ.

Registered ECC (RDIMM)

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

Внешний вид Registered ECC памяти
Внешний вид Registered ECC памяти
  • Как работает:

    • ECC + буфер (Register) для снижения нагрузки на контроллер памяти.

    • Позволяет устанавливать больше модулей на канал.

  • Где используется: Серверы и системы с большим объемом RAM (128 ГБ+).

  • Плюсы:

    • Поддержка больших объемов (до 2 ТБ на сервер).

    • Стабильность при высокой нагрузке.

  • Минусы:

    • Задержки выше на 1-2 такта из-за буфера.

    • Требует специальные материнские платы (серверные).

Load-Reduced ECC (LRDIMM)

Под чипами видно дополнительные блоки буфера данных.

Внешний вид Load-Reduced ECC памяти
Внешний вид Load-Reduced ECC памяти
  • Как работает:

    • Улучшенная версия RDIMM с буфером данных (Data Buffer).

    • Еще меньше нагрузка на контроллер.

  • Где используется:

    • Серверы высокой плотности (8+ модулей на канал).

    • Системы с терабайтами RAM (например, для СУБД).

  • Особенности:

    • Самые высокие объемы (до 256 ГБ на модуль).

    • Дороже RDIMM.

Внешние отличия различных видов ECC памяти. Источник https://us.transcend-info.com/Support/FAQ-1287
Внешние отличия различных видов ECC памяти. Источник https://us.transcend-info.com/Support/FAQ-1287

ECC и ZFS: почему это важно?

  • ZFS хранит контрольные суммы в RAM — ошибка памяти может повредить данные.

  • Без ECC есть риск:

    • Повреждения метаданных.

    • "Тихих" ошибок (silent data corruption).

  • Разные типы памяти поддерживаются не всеми материнскими платами!

Блок питания

Блок питания формата Flex
Блок питания формата Flex

Mini ITX корпуса поддерживают в большинстве своём блоки питания формата flex. Такой тоже пришлось поискать, потому что выбор меньше. Взял Exegate ServerPRO-1U-F350AS

Итоговые характеристики

Компонент

Наименование

Процессор

Xeon E3-1230 v3 3.3 GHz

RAM

DDR3 8гб ECC

Материнская плата

Китайский NoName B85 ITX

SSD

SSD M.2 SAMSUNG MZ-VLQ2560 256Гб PM991 NVMe

Кулер

ID-Cooling IS-30

HDD

SAS Oracle 900Gb x 8

Итоговый бюджет если собирать всё самому

Актуальность цен Октябрь 2025. Вариант довольно дешевой сборки.

Компонент

Стоимость (руб.)

Комплект Процессор (Xeon E5-2680 v4) + Плата + 16гб RAM ECC REG

10 000

HDD 2 ТБ (×4) с авито

10 000

Контроллер SAS

3 000

Кабеля SAS

1 000

Корпус Jonsbo N4 (c aliexpress)

8 000

Блок питания

3 000

Кулер, вентиляторы

3 000

SSD для системы

3 000

Итого

~42 000

Проблемы и нюансы в процессе

  1. Небольшой облом произошёл при покупке RAM. Я купил одну из самых дешевых материнских плат без нормальной документации и на практике выяснил что ECC REG она не поддерживает, когда память была уже куплена. В итоге пришлось искать обычную ECC память.

  2. Из-за форм-фактора корпуса материнские платы в основном имеют один pci слот, а у серверных процессоров нет видеоядра и поэтому первоначальную настройку BIOS пришлось делать, подключая отдельную видеокарту, делая сборку вне корпуса и затем заменять видеокарту на SAS контроллер.

  3. Контроллер LSI 9261 не умеет в режим прямого проброса дисков, поэтому я создал по RAID на каждый диск, чтобы ZFS корректно работал (но вариант не идеален конечно).

  4. Корпус mini-ITX имеет ограниченные размеры, поэтому пришлось пойти на некоторые доработки корпуса, чтобы в него влезли диски. Плюс невозможно в таком случае заменить диски 2.5 на 3.5.

  5. Я случайно купил низкопрофильный кулер не на тот сокет, пришлось немного доработать крепления, тут уж сам виноват)

Результаты

Корпус внутри без установленных дисков
Корпус внутри без установленных дисков
Корпус с дисками 1
Корпус с дисками 1
Корпус с дисками 2
Корпус с дисками 2

Программная часть

Операционная система

Я выбрал TrueNAS в качестве ОС. Это мощная система для хранения данных, основанная на операционной системе FreeBSD (TrueNAS CORE) или Linux (TrueNAS SCALE). Она предоставляет удобный веб-интерфейс для управления хранилищем, виртуализацией, резервным копированием и другими функциями.

https://www.truenas.com/truenas-scale/

Почему выбрал её:

  • Изначально предназначена для NAS

  • Простая настройка и доступ через веб интерфейс

  • Мониторинг и удобная конфигурация из коробки

  • Доступ по SMB и NFS

  • Возможность установки приложений и docker для расширения функциональности

  • Большое сообщество

  • Готовые решения для резервного копирования

Есть 3 версии этой системы

  1. TrueNAS CORE (ранее FreeNAS)

    • Основана на FreeBSD.

    • Использует файловую систему ZFS (поддержка снапшотов, дедупликации, шифрования).

    • Бесплатная и открытая (Open Source).

    • Подходит для домашних пользователей и малого бизнеса.

  2. TrueNAS Enterprise

    • Коммерческая версия с дополнительной поддержкой от iXsystems.

    • Оптимизирована для корпоративных хранилищ.

  3. TrueNAS SCALE

    • Основана на Linux (Debian).

    • Поддержка ZFS + Kubernetes (для развертывания контейнеров).

    • Масштабируемость и кластеризация.

    • Подходит для облачных и гибридных решений.

Я выбрал TrueNAS SCALE, так как планировал разворачивать сервисы на docker и с Debian мне работать привычнее. Система также использует ZFS для работы с массивами данных и потому довольно требовательна к RAM

Процесс установки

Систему лучше ставить на отдельный диск, который не будет входить в пул хранения данных. Я для системы использовал отдельный SSD диск M2.

  1. Качаем дистрибутив TrueNAS https://www.truenas.com/download-truenas-community-edition/

  2. Записываем на флешку ISO образ через Rufus или аналогичное ПО

  3. Устанавливаем. Тут понадобится видеокарта и доступ в BIOS для выбора загрузочного диска и конфигурации системы. Выбираем флешку как загрузочное устройство

  4. Далее идёте по процессу установщика и выбираете диск, куда будет установлена система, задаёте пароль root пользователя

  5. После установки появляется доступ через веб интерфейс по ip адресу сервера. Лучше задать серверу статический ip адрес на роутере

  6. После установки дисков необходимо настроить пул хранения в интерфейсе

    1. Имя стандартного пользователя - truenas_admin

    2. Перейдите: Storage → Pools → Add.

    3. Выберите диски. Я решил настроить RAID-Z 2, где 2 диска используются для хранения четности. Для такого варианта необходимо не менее 4-х дисков

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

  8. В разделе Datasets вы можете создавать изолированные директории для разных пользователей и включать различные виды шаринга (например SMB)

    SMB (Server Message Block протокол) позволяет удобно работать с данными с компьютеров на Windows внутри одной сети. Диски автоматически будут подключены в разделе Network проводника. Там же вы можете выбрать диск и примонтировать сразу для быстрого доступа, задав сетевому диску букву.

    Скриншот проводника с видимостью NAS
    Скриншот проводника с видимостью NAS

Утилита работы с SAS контроллером

Если у вас не HBA контроллер или не поддерживается IT режим (как у меня). То вам будет необходимо настроить hardware RAID на контроллере, для чего необходимо специальная утилита storcli

С TrueNAS по умолчанию запрещено устанавливать стороннее ПО на основную систему, поэтому придётся использовать небольшой workaround

Необходимо сделать remount для boot диска, чтобы изменить настройку "только для чтения"

mount -o remount,rw 'boot-pool/ROOT/24.10-RC.2/usr'
# Тут 24.10-RC.2 это версия ОС, у вас она будет отличаться
export PATH=/usr/bin:/usr/sbin
chmod u+x /usr/bin/apt*
chmod u+x /usr/bin/dpkg

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

Саму утилиту можно скачать архивом на сайте https://www.broadcom.com/support/download-search?dk=storcli (Успехов разобраться на сайте, мне пришлось покопаться, пока нашёл версию, которая поддерживает мой контроллер).

Далее процесс настройки примерно такой.

cd /opt/MegaRAID/storcli

# Показать информацию по контроллерам
./storcli64 show

# Показать информацию по всем дискам
./storcli64 /c0 /eall /sall show [all]

# Создать RAID 1
./storcli64 /c0 add vd type=raid1 size=10gb names=tmp1 drives=0:2-3

В моём случае необходимо было создать RAID1 под каждый диск, чтобы затем использовать RAID-Z. Либо можно надеяться на hardware RAID и потерять часть фич ZFS и информацию на мониторинге

Несколько скриншотов системы

Основной dashboard системы
Основной dashboard системы
Dashboard хранилища системы
Dashboard хранилища системы

Резервное копирование

Данные терять очень не хочется, поэтому без резервного копирования никуда. Благо для этих целей в системе TrueNAS уже предусмотрены различные инструменты.

В разделе Data Protection вы можете найти несколько способов:

  • TrueCloud Backup

  • Cloud Sync

  • Rsync

  • Periodic Snapshot

  • Replication

Экран настройки резервного копирования
Экран настройки резервного копирования

Я использовал Cloud Sync и организовал одностороннюю синхронизацию данных в ледяное S3 хранилище на Yandex Cloud. Достаточно задать данные доступа к S3 хранилищу. Также необходимо указать endpoint (можно посмотреть в документации к облаку, которое используете) и название бакета.

Тут есть несколько нюансов. В стандартном решении TrueNAS есть проблемы с эффективностью операций и может быть дорого использовать S3. Связано это с тем, что плата берётся в основном за количество операций, а не объем хранимых данных, потому имея множество файлов стоимость постоянно растёт и может уходить по несколько тысяч рублей в месяц за 500 гб бэкапа например. Я настроил еженедельный бэкап и столкнулся с такой проблемой.

Мониторинг

Удобно, что в TrueNAS уже есть встроенный мониторинг, который собирает метрики железа, дисков и системы и позволяет настроить уведомления о сбоях. Он находится в разделе Reporting.

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

В разделе System -> Alert Settings вы можете настроить уведомления о сбоях и обновлениях на почту или например в телеграм. Ниже также настраивается список типов уведомлений, которые будут приходить

Раздел настроек алертинга
Раздел настроек алертинга
Раздел тестов SMART
Раздел тестов SMART

Мини итог

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

Сервисы

Для развертывания замен корпоративным решениям я использовал Docker и Docker Compose и различные бесплатные open-source решения, решающие поставленные задачи.

Все развернутые сервисы я оформил в виде репозитория, возможно кому-нибудь пригодится https://github.com/GulDilin/personal-infra-pub.

Docker

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

sudo systemctl enable docker
sudo systemctl start docker

Для хранения данных приложений я также выделил отдельный Dataset /mnt/Main/apps

Роутинг

Мне нужно было обеспечить доступ к сервисам снаружи сети, чтобы я мог подключаться откуда угодно. Статического IP у меня нет, так что мне требовалась услуга DDNS. Тут мне повезло, так как я обладатель роутера Keenetic, у которого есть бесплатный клауд роутинг с доменом, который можно направить на любой девайс внутри сети.

Для роутинга я решил использовать traefik https://traefik.io/traefik/ Решение уже не раз проверено и использовано, никаких проблем в работе не наблюдалось. Плюс удобный способ конфигурации при помощи лейблов на сервисах docker compose. Для развертывания я организовал себе небольшой репозиторий, где упорядочил все конфигурации и docker compose файлы.

Важный нюанс если вы тоже собираетесь использовать роутинг от Keenetic.

По умолчанию он не прокидывает Host заголовок далее на устройство и потому могут быть проблемы с работой обратного прокси и распознаванием домена. Потому необходимо сделать небольшую настройку непосредственно в CLI интерфейсе роутера. Для этого подключитесь через ssh к роутеру или найдите ввод команд в веб интерфейсе. Выполнять настройки необходимо после указания поддоменов.

# Команду нужно выполнить для каждого поддомена
ip http proxy <поддомен> preserve-host
# Пример
ip http proxy photos preserve-host
# Сохранение настроек
system configuration save

Управление учетными записями

Тут выбрал Keycloak, который использовал уже не раз и хорошо понимаю как всё устроено. https://www.keycloak.org/

Для конфигурации использовал подход Configuration as Code, чтобы развертывание было максимально простым и стабильным. Его можно реализовать при помощи инструмента keycloak-config-cli https://github.com/adorsys/keycloak-config-cli

После этого у меня появилась возможность интеграции любых сервисов по OAuth \ OpenID

Хранение фотографий Immich

Место на гугл фото закончилось уже пару лет назад. Платить ежемесячно за небольшое количество места желания нет. Доверие к глобальным корпорациям также отсутствует, у меня уже OneDrive и гугл удаляли десятки гигабайт данных резко, меняя условия пользования.

Для замены я выбрал Immich https://immich.app/ На мой взгляд идеальная замена. Является практически полной копией Google Photo функционально и визуально, при этом все фотки остаются под вашим контролем. Есть веб интерфейс и приложения под разные платформы

Интерфейс Immich
Интерфейс Immich

Для self-hosted развертывания есть отличный пример в их репозитории https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml

С интеграцией OAuth пришлось повозиться. Настройки сервиса задаются через json файл, куда необходимо зашить в том числе секрет OAuth клиента. Для того, чтобы задавать секреты через параметры я использовал дополнительный контейнер. Он выполняет интерполяцию переменных через envsubst перед запуском сервера Immich с помощью зависимостей докер сервисов.

Аналог Notion - Affine

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

Довольно долго я использовал Obsidian, но мне очень не хватало веб интерфейса и возможности поделиться конкретной статьёй. Сейчас расплодилось множество замен и похожих продуктов, в том числе на российском рынке.

Интерфейс Affine
Интерфейс Affine

Я же выбрал Affine - очень популярный open-source продукт (50к звездочек!). Он объединяет большинство возможностей Notion и Miro, при этом self-hosted. В репозитории также пример для compose https://github.com/toeverything/AFFiNE/blob/canary/.docker/selfhost/compose.yml

Конфиг тут также представлен в виде json файла, поэтому способ настройки получился очень поход на Immich.

Ещё несколько интересных альтернатив Notion:

Ведение личных финансов

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

Я нашёл несколько интересных решений:

Maybe Finance https://maybefinance.com/

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

Интерфейс Maybe Finance
Интерфейс Maybe Finance

Actual Budget https://actualbudget.org/

Простой и очень функциональный продукт. Группировка и категоризация операций. Обширный набор встроенных графиков, а также возможность создавать кастомные. Кроме того интегрируется по OAuth. Операции легко добавляются через Web UI.

Интерфейс Actual Budget
Интерфейс Actual Budget

Paisa https://paisa.fyi/

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

Интерфейс Paisa
Интерфейс Paisa

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

Немного про развертывание

Все сервисы я разворачивал при помощи docker compose и вложенной структуры директорий для каждого сервиса. Корневой compose включает множество compose из поддиректорий. Это позволяет развернуть все сервисы одной командой и контролировать все конфигурации в репозитории. Параметры я задавал через переменные окружения и организовал последовательный запуск контейнеров где это необходимо через dependencies. Для каждого сервиса задал поддомен при помощи traefik и подготовил необходимые настройки в Keenetic.

Что пока в планах

  • Развернуть сервис доступа к файлам по Web интерфейсу

  • Централизованное управление паролями passbolt

  • Улучшить резервное копирование, чтобы экономить на S3

Итоги

  • Постоянный доступ к необходимым мне сервисам не зависимо от гугла и тд

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

  • Доступ к файлам через SMB как к обычным дискам на ПК

  • 6гб полезного места для любых целей

  • Фотки доступны в исходном качестве с любого устройства

  • Финансы под контролем

  • Мало было кейклока на работе, теперь он и дома)

  • + 500р за электричество в месяц

  • + ежемесячные затраты на бэкап

Несколько тестов. Производились при помощи утилиты fio

Тест на случайную запись.

fio --rw=randwrite \
  --ioengine=libaio \
  --buffered=0 \
  --fdatasync=1 \
  --directory=test-data \
  --size=1000m \
  --bs=4 \
  --name=writetest

Пропускная способность 5.5 MB/s

<WRITE: bw=5540KiB/s (5673kB/s), 5540KiB/s-5540KiB/s (5673kB/s-5673kB/s), io=1000MiB (1049MB), run=184850-184850msec>

Тест на последовательную запись

fio --rw=write \
  --ioengine=sync \
  --directory=test-data \
  --size=100m \
  --bs=4k \
  --name=writetest

Пропускная способность 784 MB/s

<WRITE: bw=746MiB/s (783MB/s), 746MiB/s-746MiB/s (783MB/s-783MB/s), io=100MiB (105MB), run=134-134msec>

Тест на случайное чтение

fio --rw=randread \
  --ioengine=libaio \
  --buffered=0 \
  --fdatasync=1 \
  --directory=test-data \
  --size=1000m \
  --bs=4k \
  --name=writetest

Пропускная способность 65 MB/s

<READ: bw=62.0MiB/s (65.0MB/s), 62.0MiB/s-62.0MiB/s (65.0MB/s-65.0MB/s), io=1000MiB (1049MB), run=16125-16125msec>

Тест на последовательное чтение

fio --rw=read \
  --ioengine=libaio \
  --buffered=0 \
  --fdatasync=1 \
  --directory=test-data \
  --size=1000m \
  --bs=4k \
  --name=writetest

Пропускная способность 675 MB/s

<READ: bw=644MiB/s (675MB/s), 644MiB/s-644MiB/s (675MB/s-675MB/s), io=1000MiB (1049MB), run=1554-1554msec>

Результаты в табличном формате

Тест

Пропускная способность

Случайная запись

5.5 MB/s

Последовательная запись

783 MB/s

Случайное чтение

65 MB/s

Последовательное чтение

675 MB/s

Советы

Ещё одна ссылка на репозиторий с сервисами, чтобы не искать в середине статьи https://github.com/GulDilin/personal-infra-pub

Евгений Гурин

Руковожу DevOps направлением в Softellion, состою в лаборатории COSM университета ИТМО, пару лет преподавал DevOps и разработку на FastAPI в магистратуре

Комментарии (236)


  1. V1tol
    09.10.2025 14:59

    Я взял одну из самых дешевых китайских на 1150 сокете.

    Вот тут надо быть очень осторожным, потому что китайцы очень любят в свои платы распаивать 100-мегабитную сеть. Где-то даже про это честно упоминают в характеристиках. Да и дефолтного гигабита в брендовых платах тех времён для четырёх дисков маловато как по мне. Учитывая, что единственный PCI-E занят SAS контроллером, то про нормальные скорости получается можно забыть.


    1. GulDilin Автор
      09.10.2025 14:59

      Согласен, в целом думал даже пересобрать в будущем с платой побольше, где будет несколько PCI-E


    1. Varowlord4
      09.10.2025 14:59

      Экономия на материнской плате для сервера это всегда плохая идея


  1. nerudo
    09.10.2025 14:59

    А почему не OpenMediaVault ?


    1. M_AJ
      09.10.2025 14:59

      Я не автор, но когда я выбирал OMV непонравилсь менее большим активным комьюнити, так как чем больше людей, тем больше шансов, что в случае чего удастся найти решение своей проблемы.


      1. Aeternamens
        09.10.2025 14:59

        Я выбрал OMV, потому что оно единственное сразу завелось на стареньком htpc, причём по wifi. Остальное, что нужно, доставляется в контейнеры.

        А насчёт поддержки - я уже понял, что ChatGPT эффективнее форумов. Когда выбирал систему пытался какие-то ответы найти на форумах, где большое комьюнити, безуспешно во многих случаях или слишком долго. ИИ же сразу предлагает решения, даже если с первой попытки нерабочие, то всё равно существенно быстрее.


    1. GulDilin Автор
      09.10.2025 14:59

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


    1. aik
      09.10.2025 14:59

      Я пользовался OMV с 4 версии начиная и там чем дальше, тем они меньше понимают, что вообще хотят делать. Если чистая файлопомойка на каком-нибудь калькуляторе - то OMV хорош. Но полноценный домашний сервер с кучей сервисов и плюшек будет слишком неуклюжим, на мой взгляд. Технически реализовать можно, но что в том же трунасе делается в несколько кликов, в OMV потребует чтения доков и ковыряния в консоляхъ.


      1. tequier0
        09.10.2025 14:59

        Лет 5 назад тоже пробовал omv, надоело возиться с настройкой и чтением доков, хотелось чего-то более простого.

        Про truenas тогда не слышал или может он сырым был, поэтому как тогда поставил себе XPEnology, так и сижу до сих пор, только на свежую версию перекатился. К ресурсам не требовательна, с настройкой справится даже условная домохозяйка, багов не встречал, какие-никакие пакеты есть. Нужно что-то сверх доступного в репе synology/synology community - есть докер.

        Разумеется, во внешнюю сеть ничего не торчит, доступ извне только через дешевую vps -> nginx -> тоннель до контейнеров.


        1. GulDilin Автор
          09.10.2025 14:59

          vps -> nginx -> тоннель до контейнеров

          А с помощью чего тоннель настраивали с vps до NAS? Рассматриваю на такой вариант переехать, а то с KeenDNS есть свои нюансы.


          1. tequier0
            09.10.2025 14:59

            @porok

            т.к. нагрузка небольшая (до 3 юзеров), использую reverse ssh тоннель. autossh для реконнекта.

            Схемка:

            внешний юзер -> cloud.example.com or vps_ip:9999 (nginx на vps проксирует на локальный порт, например, localhost:12345) -> reverse SSH, поднятый со стороны nas, прокидывает порт 12345 с vps на порт 7890 nas -> nas:7890 (где висит, к примеру, nextcloud).

            прокинутых портов несколько (по количеству сервисов), принцип тот же, не стал усложнять схему.


          1. Aelliari
            09.10.2025 14:59

            Есть какой-нибудь pangolin, frp, rathole. Если устраивают ограничения - cloudflare ZeroTrust, но возможно для регистрации нужна карта банка не рф, но не понадобиться vps. Есть ещё и совсем «ручные» варианты, но это наверное не интересно.

            Есть ещё другой вариант, построить туннель к nas через какой нибудь меш-vpn, типа tailscale/zerotier/nebula/netbird и подобных


            1. devoln
              09.10.2025 14:59

              Разве Cloudflare ZeroTrust ещё где-то работает в РФ? У меня летом все туннели отвалились, пришлось через frp на VPS делать.


              1. Aelliari
                09.10.2025 14:59

                Мне неизвестно откуда автор сообщения, на которое я отвечал. Также мне неизвестно работает ли оно до сих пор в РФ


          1. hochbar
            09.10.2025 14:59

            А что за еюансы с keendns? У меня тоже кинетик и хочу поднять Affine с пробросом через их cloud dns


            1. GulDilin Автор
              09.10.2025 14:59

              1. Не открывается из других стран, не знаю точно список с какими проблемы, но условно из отпуска где-нибудь может не открыться

              2. Невозможно контролировать все хедеры, реальный клиентский ip не прокидывается из-за чего например невозможно закрыть какой-нибудь url по префиксу только для локалки (админку кейклока например)

              3. Иногда жутко медленно работает


        1. porok
          09.10.2025 14:59

          vps -> nginx -> тоннель до контейнеров.

          Вот это меня тоже интересует - как реализовано?


    1. astenix
      09.10.2025 14:59

      Там zfs нативно не поддерживается, только через плагин, и бубны с танцами неизбежны.

      У меня NAS на OMV без raid с дисками SATA на ext4. Если оно нужно только как единая точка бэкапа, только дома и только периодически, и чтобы в обслуживании было неприхотливое (кагбэ, родной Debian) то решение работает на все 100%.


  1. M_AJ
    09.10.2025 14:59

    Я давно думаю уже о том, чтобы наконец собрать что-то компактно, но увы, у меня не выходит сильно дешевле готовых вариантов, при схожих возможностях. Когда беру свои хотелки:

    1. Возможность установки нескольких NVMe (под Special Device ZFS, кэши и так далее)

    2. Возможность установки 10Gb карты

    3. Хотя бы 5-6 HDD LFF

    Оказывается, что оно будет либо большое, либо сравнимо по цене с готовым (не Synology конечно, но готовым)


    1. nidalee
      09.10.2025 14:59

      Возможность установки нескольких NVMe (под Special Device ZFS, кэши и так далее)

      Я тоже когда-то очень хотел slog-и и прочие arc-и, по факту оказалось, что прирост производительности нужно искать под лупой, так еще и на "содержание" этих девайсов уходит оперативка. Народная мудрость гласит, что всегда нужно в первую очередь досыпать оперативку, и только потом уже от безысходности пытаться в SSD\NVME кеши.

      Я не стал заморачиваться в итоге с размером и просто на шкаф поставил Define R5 с 14 3.5 дисками.


      1. M_AJ
        09.10.2025 14:59

        Большое (собранное из старого компа) то есть, но хочется заполучить именно компактное и желательно ещё и относительно тихое.


        1. tequier0
          09.10.2025 14:59

          Если есть 3d принтер, то есть относиельно компактный корпус для nas под itx. Мне показался любопытным за счет возможности расширения по необходимости и неплохой доки, но руки пока не дошли:

          https://www.printables.com/model/590711-nas-itx-pc-case-with-stackable-expansions-modcase


        1. porok
          09.10.2025 14:59

          Я собрал всё в корпусе Node 304 — Fractal Design, купив его на авито. Заменил все корпусные кулеры на Noctua. В итоге компактно, тихо и не жарко на шкафу в коридоре.

          Железки - m-itx на x570 чипсете, ryzen 4650GE (35 ваттный) 6 ядер-12 потоков, 32Гб DDR4, 2xM.2 слота (в одном трудится сетевуха 2,5Gbps, в другом cache NVME, в PCi-E плата расширения SATA на 6 дисков.


        1. astenix
          09.10.2025 14:59

          HDD на 7200 обормотов в минуту в принципе шумные. У меня из-за этого одно время NAS жил на шкафу в коридоре.


    1. aik
      09.10.2025 14:59

      Я недавно свой домашний сервере "обновил" до Aoostar WTR Max.
      5*NVMe+6*SATA и два 10gb SFP на борту.


      1. M_AJ
        09.10.2025 14:59

        Вот тоже на него поглядываю уже пару месяцев, но жаба пока сильнее. Надеюсь их ещё будут продавать, когда я её таки одалею.


        1. aik
          09.10.2025 14:59

          Обзор выложу где-нибудь через месяц, думаю. Пока что обживаюсь.


          1. porok
            09.10.2025 14:59

            Давай, интересно - как оно по сравнению с самосбором.


            1. aik
              09.10.2025 14:59

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


              1. porok
                09.10.2025 14:59

                Кстати - интересно ещё почитать про переезд анрейда на другое железо на практике.

                В иностранных интернетах читал ч то просто перекинуть диски и переткнуть флешку. Всё ли так просто?


                1. aik
                  09.10.2025 14:59

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


      1. Killan50
        09.10.2025 14:59

        Очень интересно, на нем реально заменить CPU или он там распаян?


        1. aik
          09.10.2025 14:59

          Нереально. Считайте, что это миниПК или ноутбук, засунутый в коробку от NAS'a. Только память можно менять.Официально до 96ЕСС, неофициально до 128.
          Ну и диски ставить, само собой. И какую-нито хрень в oculink/usb4 втыкать.

          Это всё же не суперкомпьютер, а просто NAS с железом несколько выше среднего.


          1. Killan50
            09.10.2025 14:59

            Жаль, тогда не так интересно, тут уж или дешевый готовый NAS которому сильно мощностей не нужно для своих задач, либо самосбор на хорошем 12 ядернике c возможностью хостить виртуалки, цпу что в вшит в Aoostar для моих задач маловато.


            1. aik
              09.10.2025 14:59

              А под мои нужды самое то оказалось. У меня был до него ящик на райзене9, но тот оказался слишком горячим парнем, даже вода не спасала. Потому я решил разделить сервер на две части - в одной хранилище, сервисы и лёгкие виртуалки, а во второй уже что-то более мощное под тяжелые задачи.

              Wtr Max в данном случае первая часть. Над второй пока думаю.


      1. buldo
        09.10.2025 14:59

        А что там с приложениями? Есть какой-то стор как synology или ручками через docker?


        1. aik
          09.10.2025 14:59

          Это обычный компьютер. Так что ситуация с приложениями зависит от используемой вами ОС. Из коробки там вообще винда будет, если вы с диском и памятью ящик закажете (я голый брал).

          Есть примерно аналогичный Minisforum N5 (Pro) - там какая-то своя ОС имеется.


          1. buldo
            09.10.2025 14:59

            О, понятно. Почему-то подумал, что это какой-то nas


            1. aik
              09.10.2025 14:59

              Китайцы даже если и ставят какую-то свою ОС (ugreen, minisforum, terramaster), обычно оставляют загрузчик разблокированным и никто не мешает любую другую ОС поставить.

              Aoostar, впрочем, только железки делает, а с ОС заморачивался пока.


      1. makartarentiev
        09.10.2025 14:59

        Крутая железяка, есть мозможность что то в pcie воткнуть допом?


        1. makartarentiev
          09.10.2025 14:59

          Глянул, вроде как нет:/


        1. aik
          09.10.2025 14:59

          Через Oculink/usb4 разве что. Ну или через переходники в m2. Но внутри корпуса места уже нет, так что в любом случае придётся наружу это выводить.

          Есть ещё Minisforum N5 (Pro) - там есть место под однослотовую карту pci-e.


    1. Varowlord4
      09.10.2025 14:59

      Это вечный компромисс: производительность, компактность, цена. Выбери любые два. Компактный и мощный самосбор почти всегда будет либо дороже готового NAS, либо превратится в адский колхозинг с дремелем и 3D-принтером


    1. asatost
      09.10.2025 14:59

      У Streacom есть fanless корпуса с разным количеством отсеков под диски.
      Компактно точно. На счёт конечной цены - не уверен. :)


  1. Ilya_JOATMON
    09.10.2025 14:59

    Затевать это ради 2Тб дисков, из пушки по воробьям. И можно задешево купить на али бу рейд контроллер с поддержкой рейд 6. И сделать рейд6 - разгрузить проц и память.


    1. GulDilin Автор
      09.10.2025 14:59

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

      Ну и плюс помимо места я множество задач по развертыванию сервисов для личного использования закрыл, так что для меня вполне оправдано было, ещё и удовольствие получил в процессе.


      1. goletsa
        09.10.2025 14:59

        Я не понимаю выбора RAID контролера и ZFS.

        Есть дешевые HBA.

        Да и в целом вопрос энергоэффективности данной сборки не раскрыт.

        Суть NAS работать 24/7.

        Вместо 4*2.5 проще было бы поставить 2*3.5 в зеркале большого объёма.

        Очень много вопросов.


        1. astenix
          09.10.2025 14:59

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

          Когда понадобилось кое-что иметь в постоянном доступе отовсюду, взял место у городского хостера, чтобы не дергаться про взлом и «к сожалению, диски умерли, а бэкапы были на дисках».


  1. 2gusia
    09.10.2025 14:59

    В будущем возможно расширить массив новыми дисками

    Это как? Добавление диска в raidz допили?

    однако количество дисков для parity расширить не получится

    Если очень хочется - то можно. Делаем сразу raidz3. Но два диска "для parity" не подключаем. Имеем деградированный raidz3 функционально подобный raidz. Ну и небольшой оверхед по производительности и месту.

    Кстати, ваше описани parity в zfs весьма приблизительно. Возможно для целей статьи и ок.

    И зачем вообще пишу. Вы никак не упоминаете использование буквально магии zfs. Не используете?Снапшоты, клоны, zfs send. В частности дельту между двумя любыми снапшотами датасета можно отправить в поток, на том конце либо сохранить в файл либо развернуть на zfs. Как раз средство от малых файлов.


    1. M_AJ
      09.10.2025 14:59

      Это как? Добавление диска в raidz допили?

      Да, начиная с OpenZFS 2.3.0


    1. GulDilin Автор
      09.10.2025 14:59

      Если очень хочется - то можно. Делаем сразу raidz3. Но два диска "для parity" не подключаем. Имеем деградированный raidz3 функционально подобный raidz. Ну и небольшой оверхед по производительности и месту.

      Интересная идея кстати, возможно попробую как-нибудь

      Вы никак не упоминаете использование буквально магии zfs. Не используете?Снапшоты, клоны, zfs send. В частности дельту между двумя любыми снапшотами датасета можно отправить в поток, на том конце либо сохранить в файл либо развернуть на zfs. Как раз средство от малых файлов.

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


      1. 2gusia
        09.10.2025 14:59

        бэкапы снапшотов на облачное хранилище в самой ОС 

        Не обязательно ограничивать себя тем, что реализовали в гуе. У zfs понятное и отлично документированное управление из командной строки. А бекапы вообще в большинстве случаев должны делаться автоматически. И с использованием zfs send reseive написано немало скриптов автоматизации. Я даже сам как то пилил примитивный.

        Зато потом как хорошо.

        https://2gusia.livejournal.com/472988.html

        https://2gusia.livejournal.com/145124.html


        1. GulDilin Автор
          09.10.2025 14:59

          Не обязательно ограничивать себя тем, что реализовали в гуе

          Тут согласен конечно, изначально просто проще было настроить что уже есть. А за ссылки спасибо большое, материал интересный, попробую себе применить


          1. nidalee
            09.10.2025 14:59

            Рекомендую не писать велосипед и воспользоваться уже существующим: https://github.com/psy0rz/zfs_autobackup


        1. Lazhu
          09.10.2025 14:59

          Прям ностальгией окатило
          % cat /usr/local/bin/zfsbackup.sh
          #!/bin/sh
          
          # ZFS snapshots commands
          
          ## List snapshots
          ZLIST="zfs list -Ht snapshot"
          
          ## Take a snapshot
          ZSNAP="zfs snapshot -r"
          
          ## Destroy a snapshot
          ZDSTR="zfs destroy -r"
          
          ## Send a snapshot to a remote host
          ZSEND="zfs send -R -i"
          
          ## Receive a snapshot at a remote host
          ZRECV="zfs recv -Fdvu"
          
          # Source pool
          SPOOL="_spool_"
          
          # Destination pool
          DPOOL="_dpool_"
          
          # Destination host
          DHOST="x.x.x.x"
          
          # Today date
          TODAY=`date +%Y-%m-%d`
          
          # Keep alive threshold (2 months)
          OBSOLETE=`date -v-2m +%Y-%m`
          
          # Check for obsolete snapshots
          CHECK=`${ZLIST} | grep ${OBSOLETE} | wc -l`
          
          # Most recent snapshot
          LATEST=`${ZLIST} | grep "${SPOOL}@" | awk '{a[NR]=$1} END{print a[NR]}'`
          
          # Take a snapshot
          ${ZSNAP} ${SPOOL}@${TODAY}
          
          # Delete all obsolete snapshots
          if [ ${CHECK} -gt 0 ]; then
              ${ZLIST} | awk -v pool=${SPOOL} -v date=${OBSOLETE} '$0~pool"@"date{print $1}' | while read SNAPSHOT; do
                  ${ZDSTR} ${SNAPSHOT}
              done
          fi
          
          # Send the increment to the destination host
          ${ZSEND} ${LATEST} ${SPOOL}@${TODAY} | ssh ${DHOST} ${ZRECV} ${DPOOL}
          


  1. qwe101
    09.10.2025 14:59

    Сделал похожее на NAS4free, которая теперь XigmaNAS. 2 (было 3) raid-z на 4, 7, 7 TB, 1 на 8 TB. XigmaNAS может и не лучше, но привычнее. Подключение бытовых HDD (дешевле) через контроллеры ASM 1166 к обычной плате с i3-2100. 1GB lan. Медленно, но для дома хватает.


  1. radiolok
    09.10.2025 14:59

    Спасибо за обзор self-hosted приложений, утащил себе в заметки, буду пробовать Affine

    А как у вас получилась скорость записи в 15.5МВ/с? Это ж, мягко скажем, очень больно для файлохранилища.

    Ну и больше вопрос что там со скоростью доступа через сеть. Обычный хард на последовательном чтении/записи спокойно крутит 150-200мбайт/сек (после того как забил кеш). т.е. рабочий минимум - локалка 2.5гбит - что есть в большинстве современных материнок. А с NVMe я и свои домашние 10Гбит утилизирую под завязку.


    1. GulDilin Автор
      09.10.2025 14:59

      А как у вас получилась скорость записи в 15.5МВ/с? Это ж, мягко скажем, очень больно для файлохранилища.

      Спасибо, что заметили, я почему-то не обратил внимание. Сейчас понял, что оба теста провёл на рандомную запись, немного изменил команду и результат получился гораздо лучше (768 MB/s).

      fio --rw=write \
        --ioengine=sync \
        --directory=test-data \
        --size=100m \
        --bs=4k \
        --name=writetest
      WRITE: bw=746MiB/s (783MB/s), 746MiB/s-746MiB/s (783MB/s-783MB/s), io=100MiB (105MB), run=134-134msec

      При тестах записи на примапленный SMB диск выше 60MB/s не поднимается, возможно я сильно просчитался с материнской платой для сервера. Надо будет разобраться


    1. hochbar
      09.10.2025 14:59

      Если получится selfhost контейнер Affine запустить с доступом из Интернета- очень жду статью


      1. GulDilin Автор
        09.10.2025 14:59

        В целом в репозитории, что я к этой статье приложил уже такая конфигурация работает и все объединено с другими сервисами через SSO Keycloak.


  1. CrazyHackGUT
    09.10.2025 14:59

    А подскажите, как у вас себя чувствует мониторинг в TrueNAS, и в каком браузере смотрите, если хорошо.

    У меня в Firefox при стандартном в периоде "1 час" в целом неплохо, но чем больший период беру - тем тяжелее как-то оно вертится.

    TrueNAS я раньше напрямую крутил на тачке (i9-10920X, 128GB RAM), но в какой-то момент я устал бодаться с багами в QEMU, который там поставляется в операционной системе, и которым я пользуюсь для виртуальных машин, и я выкинул сам TrueNAS в виртуальную машину, прокинув целиком SATA-контроллер (обычные диски) в неё, эвакуировав все виртуалки в гипервизор уровнем выше.


    1. GulDilin Автор
      09.10.2025 14:59

      А подскажите, как у вас себя чувствует мониторинг в TrueNAS, и в каком браузере смотрите, если хорошо.

      Проблем замечено не было, использую Firefox. При смене детальности немного подтупливает, но не сильно.


  1. temporaryQWERTY
    09.10.2025 14:59

    Вопрос есть. Возможно ли чайна-плату с 2011-3, чипсетом с602 (вроде бы) и Xeon без встройки запустить без ВК? Попробовал, судя по звукам - post не проходит. Было предположение, что так и должно быть и дальше не заморачивался.

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


    1. nidalee
      09.10.2025 14:59

      Я не скажу за c602, но 2680v2 на хуанане x79 при посте истерически пищал, но запускался без видеокарты.


    1. aik
      09.10.2025 14:59

      Не все материнки запускаются без видеокарты. У некоторых в биосе есть опция "игнорировать видеокарту". У китайцев опций обычно дохрена, но вот работают ли они - второй вопрос..


    1. GulDilin Автор
      09.10.2025 14:59

      В моем случае без видеокарты запускается без проблем, по особенностям конкретных и плат чипсетов не знаю. Подключал ВК только для настроек в биосе и установки ОС.


    1. hochbar
      09.10.2025 14:59

      Нет, он изнчально запустил с видюхой, настроил доступ по ssh по сети, потом отцепил видюху


  1. dTi
    09.10.2025 14:59

    Пользуюсь +/- такой же конфигурацией и всегда было интересно, а что будет, если под ОС умрёт М2? Понятно, что бэкапы конфигов делаются. Можно ли будет в новую ОС импортировать старые пулы?


    1. nidalee
      09.10.2025 14:59

      Можно будет, просто zpool import <название>


    1. Lev3250
      09.10.2025 14:59

      Можно, импортируется без проблем. Удобнее, если под рукой есть старый конфиг - тогда всего восстановления на полчаса с завариванием кофе. НО! Ключи ssh в копию конфига не кладутся. Поэтому их надо бекапить заранее. Иначе после восстановления отвалятся все репликации, rsync и всё, что было на клбчи завязано. Придётся заново пересоздаватт


  1. nidalee
    09.10.2025 14:59

    Non-ECC (обычная память)

    Не подходит для ZFS/серверов (риск повреждения данных).

    Подходит, никаких особых рисков от связки ZFS и не-ECC памяти не существует, это миф:

    There's nothing special about ZFS that requires/encourages the use of ECC RAM more so than any other filesystem. If you use UFS, EXT, NTFS, btrfs, etc without ECC RAM, you are just as much at risk as if you used ZFS without ECC RAM.

    Matt Ahrens


    1. aegoroff
      09.10.2025 14:59

      поддержу - уже 4 года 24/7 работает TrueNAS дома, на обычной памяти - и все нормально. Аварийные отключения были и никаких с этим проблем не было


      1. the_vitas
        09.10.2025 14:59

        Более 10 лет, пока проблем не было.


  1. Anderusk
    09.10.2025 14:59

    Вопрос немножко не по теме а подскажите что даёт именно стрим видео? я просто расшариваю папку с видеофайлами и любой с любого устройства его смотрит в сети. Не нужны никакие доп программы. Ну только на андроиды ставлю vlc.


    1. shutkarmannbii
      09.10.2025 14:59

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

      Ps это не говоря про старые видео со специфичным кодеком, в которых только звук или наоборот открываются на современных плеерах/устройствах...


      1. buldo
        09.10.2025 14:59

        IMHO, видео в 100 гигов качаешь именно для того, чтобы смотреть его в высоком качестве. VLC на Android - достаточно нативный способ просмотра? Он у меня всё подряд жрёт.


        1. shutkarmannbii
          09.10.2025 14:59

          Так то да, однако моя приставка, даже на проводе, в такой конфигурации сильно тормозит, не хватает видимо мощности.

          Про просмотр на телефоне по WiFi можно вообще забыть.

          А стриминг этот вопрос почти полностью решает, так что кому как.

          Ps были случаи, что единственный файл, который доступен для скачивания как раз 100+ Гб и выбора уже нет...


    1. aik
      09.10.2025 14:59

      Стриминг с транскодингом позволяет снизить нагрузку на клиента и на канал. Важно, если вы своё видео из мира смотрите. А так все эти плексы - каталогизаторы, чтобы можно было с красивыми картинками в фильмах копаться, а не просто по папкам ходить. Плюс статистика, плюс возобновление просмотра на другом девайсе...


    1. GulDilin Автор
      09.10.2025 14:59

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


    1. the_vitas
      09.10.2025 14:59

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


    1. asatost
      09.10.2025 14:59

      В локальной сети - да. А если снаружи захочется посмотреть? В местах где даже 3G сеть едва шевелится? Будете нативный размер 4К гнать через VLC?


    1. ArtemSmit
      09.10.2025 14:59

      Если вы имеете ввиду в чем разница между сетевой папкой и каким-ниюудь Jellyfin или Plex - оно даёт красивый интерфейс, удобство выбора, возможность продолжить смотреть кино с того же места на другом телевизоре и т.д. А не прощелкивать в интерфейсе сотню файлов в духе Alien.Romulus.2024.1080p.AMZN.WEB-DL.DDP5.1.Atmos.H.264.MULTi-FLUX-RGB.mkv


  1. aik
    09.10.2025 14:59

    Аппаратный RAID и ZFS - это нерекомендуемое решение. Да и вообще, не люблю я аппаратные рейды для дома. Привязка к конкретному контроллеру, так просто диски не перекинуть и не прочитать.

    Что были халявные диски - это хорошо, но это тупик, если захотите ёмкость добавлять. Разве что вы сидите на источнике подобных дисков и сможете добыть их большего объёма. Но, подозреваю, что они толще будут. Потому я бы изначально их попытался продать и взял бы 3-4 обычных 3.5" диска.

    Если память нормальная, то без ECC жить можно. Плюс в файловых системах и своя защита бывает. У меня btrfs так помогла сбойную память отловить, падая в ридонли регулярно. Правда, сперва грешил на диск и даже менял, но проверил память - и оказался сбойный модуль.

    DeepCool CH160 - это для обычного компа корпус, не для сервера. Много дисков в него ставить тяжко будет, придётся сильно колхозить. Он больше для того, чтобы на ITX-плату поставить видюшку и большой кулер. Впрочем, можно попробовать 4-5 2.5" развесить по краям. И при покупке корпусов на али смотрите обязательно на стоимость доставки, китайцы часто цену разбивают почти пополам, в итоге корпус за 8000 превращается в корпус за 15 тысяч.

    На itx-материнках бывает один-два m2 слота, в которые можно ставить не только ссд, но и сата-контроллер, к примеру. Или видеокарту простенькую даже.


    1. Lev3250
      09.10.2025 14:59

      Если рейд0 создан нормальным контроллером, то диск просто окроется в режиме hba в винде (по крайней мере в perc 730 работает именно так. Из рисков прокидывания недорейда в трунас - отсутствие мониторинга состояния дисков. Однако вполне нормально работает годами, и даже переезжает между core-scale версиями

      С 24й версии трунаса можно расширять zfs пулы. Плюс можно пойти "заменой" дисков по кругу (рабочий вариант, если raidz2). Выдёргиваешб один, на ребилд втыкаешь диск побольше. Так по кругу. По итогу на последнем диске пул сам расширится (ну или толкнуть его через cli)


      1. aik
        09.10.2025 14:59

        В своё время приходилось создавать несколько raid0 из одного диска, а потом уже использовать их для софтверного рейда. Но, как правильно сказали, нет инфы о дисках в таком случае.

        А на счёт расширения - для дома я всё ещё предпочитаю массив unraid, он более гибок в данном плане. В zfs, впрочем, недавно прикрутили возможность диски разного размера использовать - может и до свободной замены дисков дойдут со временем.


    1. GulDilin Автор
      09.10.2025 14:59

      Аппаратный RAID и ZFS - это нерекомендуемое решение. Да и вообще, не люблю я аппаратные рейды для дома.

      Контроллер также бесплатно достался без поддержки passthrough режима, а так тоже читал что для ZFS лучше HBA обычный взять.

      Что были халявные диски - это хорошо, но это тупик, если захотите ёмкость добавлять.

      Когда упрусь в размер думаю буду пул по кругу обновлять дисками большего объёма.


      1. aik
        09.10.2025 14:59

        Так 2.5 если брать большего размера, то там опять придётся SAS ловить. Хорошо, если у вас есть источник халявных. Ибо sata 2.5" сегодня все smr, что с raidz несовместимо.


        1. GulDilin Автор
          09.10.2025 14:59

          Там мне скорее всего проще будет корпус поменять и взять SAS 3.5 уже.