Как я собирал себе NAS сервер или обретаем независимость своих данных от корпораций

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

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

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

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

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

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

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

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

Выбор железа

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

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

Готовые 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-контроллер (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 кабель

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

Корпус

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

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

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

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

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

Корпус Jonsbo

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

Корпус Exegate

Exegate FL-102 (Mini ITX)

Корпус Jonsbo C6

Jonsbo C6

Корпус DeepCool

DeepCool CH160

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

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

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

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

Память

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Registered ECC (RDIMM)

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

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

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

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

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

  • Плюсы:

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

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

  • Минусы:

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

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

Load-Reduced ECC (LRDIMM)

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

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

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

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

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

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

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

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

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

    • Дороже RDIMM.

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

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

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

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

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

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

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

Блок питания

Блок питания формата 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
Корпус с дисками 2

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

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

Я выбрал TrueNAS в качестве ОС. Это мощная система для хранения данных, основанная на операционной системе FreeBSD (TrueNAS CORE) или Linux (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 (Samba протокол) позволяет удобно работать с данными с компьютеров на Windows внутри одной сети. Диски автоматически будут подключены в разделе Network проводника. Там же вы можете выбрать диск и примонтировать сразу для быстрого доступа, задав сетевому диску букву.

    Скриншот проводника с видимостью 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 хранилища системы

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

Данные терять очень не хочется, поэтому без резервного копирования никуда. Благо для этих целей в системе 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

Мини итог

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

Сервисы

Для развертывания замен корпоративным решениям я использовал 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

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

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

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

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

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

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

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

Интерфейс Maybe Finance

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

Интерфейс Actual Budget

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

Интерфейс 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

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

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

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

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

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

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

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

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

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

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

Тест

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

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

5.5 MB/s

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

15.5 MB/s

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

65 MB/s

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

675 MB/s

Советы

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

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

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

Данные о правообладателе фото и видеоматериалов взяты с сайта «Хабрахабр», подробнее в Условиях использования
Анализ
×
Гурин Евгений
Google
Сфера деятельности:Образование и наука
205
Avito Holding AB
Организации
176
УНИВЕРСИТЕТ ИТМО
Сфера деятельности:Образование и наука
71
Dell Technologies
Сфера деятельности:Связь и ИТ
61
Октябрь
Места