Домашний NAS на Debian: S3-хранилище и DLNA-сервер своими руками
Введение
Если кто-то не знает, то NAS (Network Attached Storage) — это сетевое хранилище, ваш личный файловый сервер, доступный на всех устройствах в вашей локальной домашней сети. Сейчас на рынке можно найти множество готовых NAS-решений от известных брендов, а также целую россыпь специальных дистрибутивов для быстрого развертывания хранилища. Однако все эти подходы развертывания NAS имеют ряд не самых приятных нюансов: в первом случае мы покупаем “коробку”, и не всегда понятно, что у нее внутри и какие есть ограничения, а во втором случае дистрибутив часто бывает перегружен функциями, которые вам могут никогда не понадобиться: вам ведь нужно NAS-хранилище, а не жнец, чтец, и на дуде игрец? Так или иначе, все эти решения объединяет одно: под капотом у них в большинстве случаев — Linux. Так почему бы нам не взять чистый дистрибутив Debian и не построить на его основе свое собственное хранилище. Команда ServerFlow считает, что так может сделать каждый, поэтому в этой статье мы расскажем вам, как развернуть домашнее NAS-хранилище и правильно настроить его, чтобы злобные корпорации никогда не добрались до ваших личных данных.
План
Сегодня мы не будем вдаваться в подробности о том, что такое NAS, какие NAS бывают и какие файловые системы существуют — об этом мы рассказывали в отдельной статье. Наша задача — объяснить вам все тонкости развертывания NAS, и мы приступаем к ней незамедлительно. Вот какой фронт настроек нам предстоит проделать для достижения цифрового суверенитета:
- SMB-сервер — для удобного доступа к файлам с Windows и macOS.
- S3-хранилище (MinIO) — современное объектное хранилище.
- Zeroconfig (Avahi) — для автоматического обнаружения нашего сервера в сети.
- Торрент-клиент (Transmission) — здесь объяснения не нужны.
- DLNA-сервер (MiniDLNA) — для просмотра медиаконтента на телевизоре и других устройствах.
- Уведомления в Telegram — для получения данных о состоянии дисков.
Шаг 1: Подготовка и установка системы
Переходим от слов к действию и начинаем разбор первого шага — подготовки аппаратного обеспечения и установки Debian.
В нашем случае будет использоваться плата материнская плата Supermicro X10SDV. Почему наш острый глаз пал именно на нее? Все дело в наличии двух 10-гигабитных сетевых портов Ethernet — для коммерческого NAS этого может быть маловато, но под домашнее хранилище хватит с лихвой. Кроме того, эта плата также поддерживает интеграцию модулей оперативной памяти с ECC, что критически важно, если вы не хотите потерять все свои фотографии из папки “Геленджик 2007” из-за системного сбоя.

В нашем хранилище установлено 64 ГБ RAM ECC, чего более чем достаточно для домашнего NAS. Об установки Debian говорить не будем — гайдов на эту тему в сети пруд пруди. После установки зайдите на сервер по SSH, узнайте IP-адрес, полученный по DHCP, через команду ip a, повысьте привилегии до суперпользователя через su -l, обновите список пакетов вводом apt update и, наконец, установите все необходимые нам пакеты командой apt install mdadm samba avahi-daemon transmission-daemon smartmontools minidlna.

Шаг 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-массива. Введите эту команду:
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sd{b,c,d,e}
Затем система запросит подтверждение — нужно согласиться. Процесс создания (ресинхронизации) массива может занять весьма продолжительное время, но работать с ним можно уже сейчас. Помните, что во время перестройки массива диски могут сильно нагреться — заранее подготовьте жидкий азот или хотя бы проверьте работу системы охлаждения.
Переходим к очень важному шагу: сохраняем конфигурацию массива, чтобы система автоматически собирала его после перезагрузки. Для этого создайте файл конфигурации и запишите в него информацию о нашем массиве:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

Отлично, с RAID закончили, поэтому переходим к развертыванию файловой системы. Мы будем использовать проверенную временем систему ext4, которая широко известна своей отказоустойчивостью. Введите команду mkfs.ext4 /dev/md0, чтобы создать ext4. Теперь настроим автоматическое монтирование нашего раздела при загрузке системы. Для этого создаем директорию для монтирования командой mkdir /mnt/storage. Затем узнаем UUID нашего нового раздела (использовать UUID корректнее, чем имена /dev/md0) командой blkid, скопируйте его и откройте файл /etc/fstab командой nano /etc/fstab. Добавьте в конец файла следующую строку, подставив свой UUID:
UUID="ffa7c082-7613-4dbc-ae62-3f5508652cf6" /mnt/storage ext4 defaults 0 0
Сохраните файл ( CTRL+O ) и выйдите ( CTRL+X ). Осталось только примонтировать все разделы, указанные в fstab, используя команду mount -a, и в конце проверить свободное место на дисках командой df -h. Если вы видите примонтированный раздел со свободным местом (в нашем случае 10 ТБ), значит, все сделано корректно.

Шаг 3: Настройка файлового сервера (Samba)
Надеюсь, вы еще не сдались, ведь основной процесс только начинается — теперь займемся настройкой файлового сервера. Для этого будем использовать самое популярное ПО для обращения к файлам под названием Samba. Сначала создадим директории для наших сетевых папок командами:
mkdir /mnt/storage/smbshare
mkdir /mnt/storage/downloads
mkdir /mnt/storage/media
Теперь откроем конфигурационный файл 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

Следующий шаг — создать пользователя для доступа. Важно учесть, что пользователя сначала нужно создать в самой файловой системе, и только потом задать ему пароль для Samba. Пользователь и пароль создаются так:
useradd ИМЯ ПОЛЬЗОВАТЕЛЯ -m -s /bin/bash
passwd ВАШ ПАРОЛЬ
После этого задайте Samba-пароль для созданного пользователя такой командой:
smbpasswd -a ИМЯ ПОЛЬЗОВАТЕЛЯ
Перезапускаем сервис Samba командой systemctl restart smbd и вуа-ля, все готово!
Теперь вы можете зайти с другого компьютера в вашей сети и увидите новые общие папки.

Шаг 4: Настройка S3-хранилища (MinIO)
Почти половина пути пройдена, но еще осталось несколько преград, одной из которых является настройка S3-хранилища, для чего мы рекомендуем использовать MinIO. MinIO — это популярный сервис объектного хранилища, совместимый с Amazon S3 API. Он идеально подходит для хранения бэкапов, медиафайлов и статики для веб-приложений. По сути, это ваше личное, безопасное и, что не менее важно, бесплатное облако для хранения данных. Приступаем к развертыванию: качаем актуальную версию пакета MinIO на официальном сайте проекта. Затем устанавливаем ее командой:
dpkg -i minio_20250907161309.0.0_amd64.deb
Для обеспечения безопасности запустите MinIO от имени специального пользователя:
groupadd -r minio-user
useradd -M -r -g minio-user minio-user

Теперь создадим директорию для данных S3 и дадим нашему пользователю права на нее через команды:
mkdir /mnt/storage/s3
chown -R minio-user:minio-user /mnt/storage/s3
Отлично, подготовка S3-хранилища завершена, но теперь нужно настроить его. Откройте параметры хранилища с помощью команды nano /etc/default/minio и приведите его к следующему виду, задав логин, пароль и путь к данным:
MINIO_VOLUMES="/mnt/storage/s3"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER="anton"
MINIO_ROOT_PASSWORD="mypasswd"
Затем запустите и добавьте сервис в автозагрузку командами:
systemctl start minio
systemctl enable minio
Теперь откройте браузер и зайдите по адресу http://<IP-адрес-сервера>:9001. Если все настроено верно, вы увидите веб-панель MinIO.

Шаг 5: Настройка торрент-клиента (Transmission)
Торрент-клиент очень удобно использовать для создания домашнего NAS, и у этого есть ряд весомых причин:
- Автоматическое добавление торрент-файлов — клиент сканирует папку для скачивания и импортирует файлы с расширением .torrent напрямую
- Настройка времени общего пользования — можно указать, сколько часов после завершения скачивания файл будет доступен для отдачи.
- Можно выбрать ограничение скорости скачивания и выгрузки, а также доступен выбор пула портов bittorrent.
Чтобы настроить торрент-клиент, нужно создать необходимые директории для загрузок через команду:
mkdir -p /mnt/storage/downloads/{completed,incomplete,watch}
Самый важный шаг на этом этапе — выдать права. Сервис Transmission работает от имени пользователя debian-transmission, поэтому для выдачи прав вводим такие команды:
chown -R debian-transmission:debian-transmission /mnt/storage/downloads
chmod -R 777 /mnt/storage/downloads
Теперь отредактируйте файл настроек вводом команд:
systemctl stop transmission-daemon
nano /etc/transmission-daemon/settings.json
Обязательно остановите сервис перед редактированием, иначе ваши изменения будут перезаписаны!
После этого найдите и измените следующие строки:
"download-dir": "/mnt/storage/downloads/completed",
"incomplete-dir": "/mnt/storage/downloads/incomplete",
"incomplete-dir-enabled": true,
"rpc-authentication-required": true,
"rpc-password": "ВАШ_пароль",
"rpc-username": "anton",
"rpc-whitelist-enabled": false,
"watch-dir": "/mnt/storage/downloads/watch",
"watch-dir-enabled": true,
На этом все, сохраняем и запускаем сервис командой:
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, поэтому введите следующие команды:
chown -R minidlna:minidlna /mnt/storage/media
chmod -R 777 /mnt/storage/media
Теперь создайте отдельную папку для базы данных и логов и снова настройте права:
mkdir -p /var/cache/minidlna /var/log/minidlna
chown -R minidlna:minidlna /var/cache/minidlna /var/log/minidlna
Переходим к правке конфигурационного файла. Для этого введите команду nano /etc/minidlna.conf.
Внесите следующие изменения в конфигурацию, внеся комментарии и изменения в следующие строки для указания пути к папкам контента:
media_dir=V,/mnt/storage/media/video
media_dir=A,/mnt/storage/media/music
media_dir=P,/mnt/storage/media/photos
Для создания папки хранения базы данных введите эту команду:
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 на ваши данные:
#!/bin/bash
# --- НАСТРОЙКИ ---
TOKEN="YOUR_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
# -----------------
Затем напишите сообщение для уведомления:
MESSAGE="Внимание! Обнаружена проблема с диском на NAS!
```
$(/usr/sbin/smartctl -H $SMARTD_DEVICE)
$SMARTD_MESSAGE
```
"
Далее отправляем уведомление через curl:
/usr/bin/curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage"
-d chat_id="$CHAT_ID"
-d text="$MESSAGE"
-d parse_mode="Markdown" > /dev/null
Если уведомление пришло, сохраните скрипт и сделайте его исполняемым командой:
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-сервер полностью готов к эксплуатации. Как вы видите, ничего сложного в этом нет. Преимущество такого подхода заключается в том, что вы можете добавлять на сервер только те сервисы, которые нам действительно нужны, и вы точно будете знать, как он устроен и работает.
Рекомендуемые товары
- Новое
- Выгодно
- Под заказ
- Б/У
Артикул: SF-00003249
Нет в наличии
Видеокарта AMD Radeon Instinct MI50 32GB HBM2 [100-506194] [Новый]
- Сокет AM4
- Сокет AM4
- Сокет AM4
- Сокет AM4
29 800 ₽
- Цена включает НДС 7%
- Гарантия: 1 год
- Новое
- Выгодно
- Под заказ
- Б/У
Артикул: SF-00001431
Нет в наличии
Видеокарта NVIDIA A100 OEM 40GB HBM2 [900-21001-0000-000] [Новый]
- Сокет AM4
- Сокет AM4
- Сокет AM4
- Сокет AM4
529 800 ₽
- Цена включает НДС 7%
- Гарантия: 1 год
- Новое
- Выгодно
- Под заказ
- Б/У
Артикул: 285
Нет в наличии
SSD-накопитель Intel (HP) S3700 400GB 2.5" 6Gb/s [SSDSC2BA400G3P] [Новый]
- Сокет AM4
- Сокет AM4
- Сокет AM4
- Сокет AM4
13 100 ₽
- Цена включает НДС 7%
- Гарантия: 1 год
- Новое
- Выгодно
- Под заказ
- Б/У
Артикул: 1350
Нет в наличии
HBA адаптер Broadcom 9500-16i (NVMe/SAS/SATA 12GB/s, no cache) [Новый]
- Сокет AM4
- Сокет AM4
- Сокет AM4
- Сокет AM4
53 900 ₽
- Цена включает НДС 7%
- Гарантия: 1 год
- Новое
- Выгодно
- Под заказ
- Б/У
Артикул: 5136
Нет в наличии
Кабель Supermicro SFF8643 (NVMe) - SFF8643 (NVMe) 0.7м [Новый]
- Сокет AM4
- Сокет AM4
- Сокет AM4
- Сокет AM4
3 000 ₽
- Цена включает НДС 7%
- Гарантия: 1 год