Если кто-то не знает, то NAS (Network Attached Storage) — это сетевое хранилище, ваш личный файловый сервер, доступный на всех устройствах в вашей локальной домашней сети. Сейчас на рынке можно найти множество готовых NAS-решений от известных брендов, а также целую россыпь специальных дистрибутивов для быстрого развертывания хранилища. Однако все эти подходы развертывания NAS имеют ряд не самых приятных нюансов: в первом случае мы покупаем “коробку”, и не всегда понятно, что у нее внутри и какие есть ограничения, а во втором случае дистрибутив часто бывает перегружен функциями, которые вам могут никогда не понадобиться: вам ведь нужно NAS-хранилище, а не жнец, чтец, и на дуде игрец? Так или иначе, все эти решения объединяет одно: под капотом у них в большинстве случаев — Linux. Так почему бы нам не взять чистый дистрибутив Debian и не построить на его основе свое собственное хранилище. Команда ServerFlow считает, что так может сделать каждый, поэтому в этой статье мы расскажем вам, как развернуть домашнее NAS-хранилище и правильно настроить его, чтобы злобные корпорации никогда не добрались до ваших личных данных.
План
Сегодня мы не будем вдаваться в подробности о том, что такое NAS, какие NAS бывают и какие файловые системы существуют — об этом мы рассказывали в отдельной статье. Наша задача — объяснить вам все тонкости развертывания NAS, и мы приступаем к ней незамедлительно. Вот какой фронт настроек нам предстоит проделать для достижения цифрового суверенитета:
SMB-сервер — для удобного доступа к файлам с Windows и macOS.
Zeroconfig (Avahi) — для автоматического обнаружения нашего сервера в сети.
Торрент-клиент (Transmission) — здесь объяснения не нужны.
DLNA-сервер (MiniDLNA) — для просмотра медиаконтента на телевизоре и других устройствах.
Уведомления в Telegram — для получения данных о состоянии дисков.
Шаг 1: Подготовка и установка системы
Переходим от слов к действию и начинаем разбор первого шага — подготовки аппаратного обеспечения и установки Debian.
В нашем случае будет использоваться плата материнская плата Supermicro X10SDV. Почему наш острый глаз пал именно на нее? Все дело в наличии двух 10-гигабитных сетевых портов Ethernet — для коммерческого NAS этого может быть маловато, но под домашнее хранилище хватит с лихвой. Кроме того, эта плата также поддерживает интеграцию модулей оперативной памяти с ECC, что критически важно, если вы не хотите потерять все свои фотографии из папки “Геленджик 2007” из-за системного сбоя.
Материнская плата Supermicro X10SDV для развертывания NAS-хранилища.
В нашем хранилище установлено 64 ГБ RAM ECC, чего более чем достаточно для домашнего NAS. Об установки Debian говорить не будем — гайдов на эту тему в сети пруд пруди. После установки зайдите на сервер по SSH, узнайте IP-адрес, полученный по DHCP, через команду ip a, повысьте привилегии до суперпользователя через su -l, обновите список пакетов вводом apt update и, наконец, установите все необходимые нам пакеты командой apt install mdadm samba avahi-daemon transmission-daemon smartmontools minidlna.
Модули оперативной памяти с емкостью 32 ГБ и поддержкой ECC.
Шаг 2: Настройка дискового пространства (RAID 5)
NAS-хранилище с дисками RAID-уровней — это кружка с дыркой, поэтому следующим шагом станет настройка дискового пространства и создание RAID-массива. В нашей системе используется 4 диска, из которых мы соберем программный RAID 5 с помощью утилиты mdadm. Почему именно программный, а не аппаратный RAID? Так проще, надежнее и дешевле. Для начала проверим, видит ли система наши диски командой lsblk. В нашем случае используются диски с именами sdb, sdc, sdd и sde.
Перед созданием массива нужно удалить с дисков старую информацию о других RAID, если таковая имеется. Это делается следующей командой:
mdadm --zero-superblock --force /dev/sd{b,c,d,e}
Удалили? Отлично! Ой, забыли вас предупредить: эта команда полностью стирает все данные с дисковых накопителей! Убедитесь, что используете правильные имена дисков, чтобы не удалить важные файлы.
Если все указано верно, можно приступать к созданию RAID-массива. Введите эту команду:
Затем система запросит подтверждение — нужно согласиться. Процесс создания (ресинхронизации) массива может занять весьма продолжительное время, но работать с ним можно уже сейчас. Помните, что во время перестройки массива диски могут сильно нагреться — заранее подготовьте жидкий азот или хотя бы проверьте работу системы охлаждения.
Переходим к очень важному шагу: сохраняем конфигурацию массива, чтобы система автоматически собирала его после перезагрузки. Для этого создайте файл конфигурации и запишите в него информацию о нашем массиве:
Создание RAID-5 массива в системе на базе 4 дисков.
Отлично, с RAID закончили, поэтому переходим к развертыванию файловой системы. Мы будем использовать проверенную временем систему ext4, которая широко известна своей отказоустойчивостью. Введите команду mkfs.ext4 /dev/md0, чтобы создать ext4. Теперь настроим автоматическое монтирование нашего раздела при загрузке системы. Для этого создаем директорию для монтирования командой mkdir /mnt/storage. Затем узнаем UUID нашего нового раздела (использовать UUID корректнее, чем имена /dev/md0) командой blkid, скопируйте его и откройте файл /etc/fstab командой nano /etc/fstab. Добавьте в конец файла следующую строку, подставив свой UUID:
Сохраните файл ( CTRL+O ) и выйдите ( CTRL+X ). Осталось только примонтировать все разделы, указанные в fstab, используя команду mount -a, и в конце проверить свободное место на дисках командой df -h. Если вы видите примонтированный раздел со свободным местом (в нашем случае 10 ТБ), значит, все сделано корректно.
Монтирование разделов файловой системы.
Шаг 3: Настройка файлового сервера (Samba)
Надеюсь, вы еще не сдались, ведь основной процесс только начинается — теперь займемся настройкой файлового сервера. Для этого будем использовать самое популярное ПО для обращения к файлам под названием Samba. Сначала создадим директории для наших сетевых папок командами:
Теперь откроем конфигурационный файл Samba с помощью команды nano /etc/samba/smb.conf. Там вы увидите секцию [global], параметры которой должны выглядеть именно так:
workgroup = WORKGROUP
server role = standalone server
unix password sync = yes
В самый конец файла добавьте описание ваших общих папок. У нас это выглядит так:
Папка [smbshare]:
path = /mnt/storage/smbshare
guest ok = no
writable = yes
browsable = yes
Папка [downloads]:
path = /mnt/storage/downloads
guest ok = no
writable = yes
browsable = yes
Папка [media]:
path = /mnt/storage/media
guest ok = no
writable = yes
browsable = yes
Настройка секции global в конфигурационном файле сервиса Samba.
Следующий шаг — создать пользователя для доступа. Важно учесть, что пользователя сначала нужно создать в самой файловой системе, и только потом задать ему пароль для Samba. Пользователь и пароль создаются так:
useradd ИМЯ ПОЛЬЗОВАТЕЛЯ -m -s /bin/bash
passwd ВАШ ПАРОЛЬ
После этого задайте Samba-пароль для созданного пользователя такой командой:
smbpasswd -a ИМЯ ПОЛЬЗОВАТЕЛЯ
Перезапускаем сервис Samba командой systemctl restart smbd и вуа-ля, все готово!
Теперь вы можете зайти с другого компьютера в вашей сети и увидите новые общие папки.
Общая папка, созданная с помощью сервиса Samba.
Шаг 4: Настройка S3-хранилища (MinIO)
Почти половина пути пройдена, но еще осталось несколько преград, одной из которых является настройка S3-хранилища, для чего мы рекомендуем использовать MinIO. MinIO — это популярный сервис объектного хранилища, совместимый с Amazon S3 API. Он идеально подходит для хранения бэкапов, медиафайлов и статики для веб-приложений. По сути, это ваше личное, безопасное и, что не менее важно, бесплатное облако для хранения данных. Приступаем к развертыванию: качаем актуальную версию пакета MinIO на официальном сайте проекта. Затем устанавливаем ее командой:
dpkg -i minio_20250907161309.0.0_amd64.deb
Для обеспечения безопасности запустите MinIO от имени специального пользователя:
Отлично, подготовка S3-хранилища завершена, но теперь нужно настроить его. Откройте параметры хранилища с помощью команды nano /etc/default/minio и приведите его к следующему виду, задав логин, пароль и путь к данным:
Самый важный шаг на этом этапе — выдать права. Сервис Transmission работает от имени пользователя debian-transmission, поэтому для выдачи прав вводим такие команды:
На этом все, сохраняем и запускаем сервис командой:
systemctl start transmission-daemon
Осталось только проверить! Зайдите в браузере по адресу http://<IP-адрес-NAS>:9091. Чтобы проверить автоматическую загрузку, скопируйте .torrent файл в сетевую папку downloads/watch.
Шаг 6: Настройка DLNA-сервера (MiniDLNA)
Мы почти у финиша! Предпоследний шаг — настроить DLNA-сервер, чтобы запускать скачанные кинчики на Smart-TV или смартфоне:
В первую очередь создадим директории для медиаконтента:
mkdir -p /mnt/storage/media/{video,music,photos}
Затем нужно настроить права доступа. Сервис работает от имени пользователя minidlna, поэтому введите следующие команды:
Для создания папки хранения базы данных введите эту команду:
db_dir=/var/cache/minidlna
Нужна еще одна папка для логов:
log_dir=/var/log/minidlna
Теперь установите имя, под которым сервер будет виден в сети:
friendly_name=MyDebianNAS
После этого включите автоматическое обнаружение новых файлов командой:
inotify=yes
В конце сохраните файл и перезапустите сервис:
systemctl restart minidlna
Для проверки закиньте пару фильмов в папку media/video. На вашем Smart TV или смартфоне в разделе “Медиасерверы” должен появиться MyDebianNAS.
Шаг 7: Настройка уведомлений о состоянии дисков в Telegram
Чтобы не допустить ситуации, когда ваши диски неожиданно выйдут из строя, стоит подключить Telegram-уведомления о состоянии дисков через бота. Для начала, такого бота нужно создать:
Найдите в Telegram бота @BotFather и отправьте ему команду /newbot.
Придумайте имя (например, MyNAS Monitor Bot) и юзернейм (например, mynas_alert_bot).
BotFather пришлёт вам токен вида 1234567890:ABC....XYZ. Сохраните его.
Найдите своего бота в поиске и отправьте ему любое сообщение (например, /start).
Чтобы узнать ваш CHAT_ID, откройте в браузере ссылку, подставив свой токен: https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates. В ответе найдите "chat":{"id":<ВАШ_ID>}. Это и есть ваш ID.
Теперь создайте скрипт для отправки уведомлений:
Bash
nano /usr/local/bin/smart-telegram.sh
Вставьте в него следующий код, заменив YOUR_BOT_TOKEN и YOUR_CHAT_ID на ваши данные:
Если уведомление пришло, сохраните скрипт и сделайте его исполняемым командой:
chmod +x /usr/local/bin/smart-telegram.sh
Теперь настройте smartd для вызова скрипта. Для этого откройте файл командой /etc/smartd.conf, найдите строку DEVICESCAN и приведите её к такому виду (или добавьте, если ее нет): DEVICESCAN -a -H -m root -M exec /usr/local/bin/smart-telegram.sh.
-a — отслеживать все атрибуты SMART.
-H — следить за общим состоянием здоровья диска.
-M exec — выполнять внешнюю команду.
В конце перезапускаем сервис smartmontools командой:
systemctl restart smartmontools
На этом все — если с одним из дисков возникнут проблемы, вы получите уведомление в Telegram.
Выводы
Теперь ваш собственный, домашний NAS-сервер полностью готов к эксплуатации. Как вы видите, ничего сложного в этом нет. Преимущество такого подхода заключается в том, что вы можете добавлять на сервер только те сервисы, которые нам действительно нужны, и вы точно будете знать, как он устроен и работает.
Несколько вопросов.
1) Почему не raidZ?
2) Почему не ZFS?
3) Для дома и семьи можно поставить OpenMediaVault, почему вы решили сами собирать?
Serverflow
В целом ZFS была бы в тему, но наш специалист решил остаться на EXT4 для удобства. Причина простая: EXT4 вообще не требует ничего от железа, а вот ZFS требует.
Из этого вытекает ответ на первый вопрос: Raid-Z это для ZFS, а не EXT4.
Касательно Вашего третьего вопроса: OpenMediaVault противоречит концепции. Мы хотели минималистичный NAS с полной настройкой своими руками.
Будут еще вопросы, можете смело писать, постараемся ответить :)
Скидка 3 000 ₽ или бесплатная доставка — уже сейчас 🔥
Мы ценим вашу обратную связь. После покупки оставьте отзыв о ServerFlow на Яндексе и условия акции будут исполнены.
* — скидка предоставляется при покупке от 30 000 рублей, в ином случае предусмотрена бесплатная доставка.
Продолжная использовать наш сайт, вы даете согласие на использование файлов Cookie, пользовательских данных (IP-адрес, вид операционной системы, тип браузера, сведения о местоположении, источник, откуда пришел на сайт пользователь, с какого сайта или по какой рекламе, какие страницы
открывает и на какие страницы нажимает пользователь) в целях функционирования сайта, проведения статистических исследований и обзоров. Если вы не хотите, чтобы ваши данные обрабатывались, покиньте сайт.