adblock check

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

Создать сетевое хранилище для дома можно самому. Всё, что для этого нужно — Raspberry Pi, накопитель и немного свободного времени

Домашний NAS — пожалуй, лучшее решение для хранения ценных данных и обмена ими в локальной сети. Грубо говоря, это подключенный к Интернету компьютер с несколькими дисками и специальным программным обеспечением. Проблема лишь в том, что готовые устройства, предназначенные специально для этого, стоят недёшево — цены на них начинаются от 10 тысяч рублей, и это без учёта самих накопителей. Конечно, можно собрать обычный ПК из б/у-компонентов — это даже выйдет дешевле, но он будет слишком шумным и неэнергоэффективным для сервера, работающего 24/7. Компактный одноплатный компьютер Raspberry Pi подойдет как нельзя кстати для создания сетевого хранилища с одним или несколькими дисками. Разумеется, речь идёт не о серьёзных решениях с десятками больших накопителей.

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

Что для этого нужно

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

Для сборки NAS достаточно минимального набора компонентов: сама плата Raspberry Pi со всем необходимым для неё оборудованием, диск SSD или HDD, переходник для подключения его по USB. Желательно выбирать из новых моделей микрокомпьютера, ведь только у них есть порт Gigabit Ethernet — полезно, если в наличии есть роутер с гигабитным портом, а сама «малина» будет подключена к Интернету по проводу. Для отказоустойчивости следует использовать хотя бы два диска в режиме RAID1 (о том, что это такое, расскажу позже). В моём случае используются Raspberry Pi 4B, SSD-накопитель Kingston A400 на 250 ГБ и переходник SATA-USB. Объем диска маловат для нормального домашнего хранилища, да и RAID-массив для надежности сделать не получится, но в качестве примера для этой статьи его вполне хватит.

Подготовка ОС

Разворачивать домашнее сетевое хранилище проще всего с использованием официальной операционной системы Raspberry Pi OS Lite. Она не имеет графического интерфейса, но тот и не понадобится для конфигурации и работы NAS.

Для дальнейшей настройки сетевого хранилища следует включить SSH, сконфигурировать Wi-Fi (если подключение к Интернету будет осуществляться с его помощью), подключиться к Raspberry Pi через приложение Termius, а также сменить стандартный пароль. Подробно о том, как подготовить систему, я рассказывал в предыдущей статье — просто следуйте ей по порядку, после чего можете переходить к следующему разделу уже этого материала.

Быстрая настройка через терминал (для опытных пользователей)

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

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

Подготовка диска

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

Команда lsblk выводит подключенные к Raspberry Pi диски. В моём случае это /dev/sda/. Создание раздела на диске производим командой sudo fdisk/dev/sda. Вместо sda подставьте имя вашего диска. Далее введите n для создания нового раздела на диске, подтвердите клавишей Enter. На следующие вопросы также отвечайте нажатием клавиши Enter до тех пор, пока не появится сообщение Created a new partition 1. После этого введите w, подтвердите. Программа fdisk должна закрыться. Если используете сразу несколько дисков, проделайте для них ту же самую операцию, заменив лишь имя накопителя.

Создание RAID-массива

Следующим шагом станет создание RAID-массива. Смело переходите к этапу «Монтирование диска», если в наличии всего 1 накопитель.

RAID — избыточный массив независимых дисков, иными словами, это технология объединения нескольких физических дисков в один логический, для повышения производительности либо отказоустойчивости. Например, тип RAID0 позволяет увеличить скорость чтения/записи данных почти в два раза за счёт того, что данные поочерёдно записываются на несколько накопителей блоками. Главный недостаток такого метода — низкая надёжность. На помощь приходит RAID1 — зеркалирование дисков. Не самый выгодный с точки зрения объёма способ хранения данных, зато он привлекает надёжностью — если выйдет из строя один диск, вся информация сохранится, будучи продублированной на другом накопителе. Помимо этих двух типов RAID, есть огромное количество других — выбор конкретного зависит от задач.

Для работы с RAID-массивами нужно установить утилиту mdadm:

sudo apt install -y mdadm

Выполните следующую команду, подставив в --raid-devices количество используемых дисков, заменив sda1 и sdb1 именами ваших накопителей, а в --level подставьте тип RAID. К примеру, для RAID10 нужно прописать --level=10.

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Создадим точку монтирования (raid1 везде замените на выбранный тип). 

sudo mkdir -p /mnt/raid1

Отформатируем логический диск в файловую систему ext4.

sudo mkfs.ext4 /dev/md0

Примонтируем диск к созданной точке монтирования.

sudo mount /dev/md0 /mnt/raid1

Откроем файл fstab, который хранит информацию о том, как диски используются в системе.

sudo nano /etc/fstab

Добавим в него следующие строки:

/dev/md0 /mnt/raid1 ext4 defaults,noatime 0 1

Сохраним файл сочетанием клавиш Ctrl+X и подтвердим вводом Y.

Введём эту команду, чтобы система знала, какие RAID-массивы ей нужно инициализировать при запуске:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Перезагрузим Raspberry Pi командой sudo reboot и заново подключимся через Termius. Переходим сразу к установке SMB.

Монтирование диска

С одним обычным диском процесс монтирования будет чуть проще, но в целом, он аналогичен описанному выше методу.

Создаём точку монтирования.

sudo mkdir -p /mnt/disk1

Отформатируем диск в файловую систему ext4.

sudo mkfs.ext4 /dev/sda1

Примонтируем диск к созданной точке монтирования.

sudo mount /dev/sda1 /mnt/disk1

Откроем файл fstab, который хранит информацию о том, как диски используются в системе.

sudo nano /etc/fstab

Добавим в него следующие строки:

/dev/sda1 /mnt/disk1 ext4 defaults,noatime 0 1

Сохраним файл сочетанием клавиш Ctrl+Xподтвердим вводом Yи нажмем Enter.

Перезагрузим Raspberry Pi командой sudo reboot и заново подключимся через Termius.

Установка SMB

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

SMB — сетевой протокол для удалённого доступа к данным, который поддерживается многими операционными системами, в том числе и Windows. Убедитесь, что вы обновили пакеты сразу после установки ОС. Если ещё не сделали этого, выполните следующую команду:

sudo apt-get update && sudo apt-get upgrade -y

Установим на Raspberry Pi приложение:

sudo apt install -y samba samba-common-bin

Настройка SMB

Создадим директорию на настроенном ранее диске и предоставим права на чтение, запись и исполнение:

sudo mkdir /mnt/disk1/shared
sudo chmod -R 777 /mnt/disk1/shared

Отредактируем файл конфигурации:

sudo nano /etc/samba/smb.conf

В середине файла находим строчку map to guest = bad userи меняем её на map to guest = never. Делаем это для того, чтобы не возникало ошибок при подключении с Windows. В самый конец открытого файла, предварительно заменив disk1 именем своей точки монтирования, введём:

[shared]
path = /mnt/disk1/shared
writeable = yes
browsable = yes
security = SHARE
create mask = 0777
directory mask = 0777
public = no

Сохраним файл сочетанием клавиш Ctrl+X, подтвердим вводом Y и нажмём Enter.

Перезапустим сервис Samba:

sudo systemctl restart smbd

Создаём нового пользователя pi (можно назвать иначе):

sudo smbpasswd -a pi

Вводим новый надёжный пароль и подтверждаем его. Активируем пользователя:

sudo smbpasswd -e pi

Готово, можете переходить к разделу статьи про подключение.

Лёгкая настройка с OpenMediaVault (для неопытных пользователей)

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

Установка OpenMediaVault

По очереди введите следующие команды в терминале для того, чтобы обновить список доступных для установки пакетов и уже установленные пакеты, если не сделали это ранее:

sudo apt-get update
sudo apt-get upgrade -y

После успешного выполнения введите следующую команду:

wget -O — github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

Запустится автоматическая загрузка и установка программы OpenMediaVault, которая будет длиться 15-30 минут (в зависимости от модели и скорости соединения). После успешной инсталляции Raspberry Pi перезагрузится и сменит свой локальный IP-адрес.

Настройка OpenMediaVault

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

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

Далее надо вставить найденный IP в адресную строку браузера и перейти. На открывшейся странице вводим логин adminи пароль openmediavault — это откроет доступ к множеству настроек.

Первым делом заходим в раздел «Общие настройки» и во вкладке «Пароль Web Администратора» меняем стандартный openmediavault на свой безопасный пароль, который будет использоваться для доступа к веб-панели. Не забываем подтверждать любое изменение кнопкой «Сохранить».

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

Далее в разделе «Пользователи» создаём нового пользователя nas. Пишем надёжный пароль и добавляем созданный аккаунт в группы adm, backup, sambashare, ssh, sudo, users. Сохраняем текущую конфигурацию. Эти данные будем использовать для подключения по SSH и использования сетевой папки.

Самая важная часть конфигурации: форматирование накопителя и создание сетевой папки. Сразу обращу внимание на то, что OpenMediaVault не даёт возможности собрать RAID-массив из подключенных по USB дисков, аргументируя это низкой надёжностью.

Для начала перейдите в раздел «Диски», выберите диск, который будете использовать, нажмите «Стереть». В открывшемся окне нажмите кнопку «Быстро». После успешной очистки накопителя закройте окно и перейдите во вкладку «Файловые системы». Нажмите «Создать», в выпадающем меню выберите только что очищенный накопитель, в поле «Метка» введите желаемое название (в моём случае data), подтвердите выбор. Форматирование может занять несколько минут.

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

Личный сервер дома: собираем полноценный NAS на базе Raspberry Pi

Финальным этапом настройки OMV станет включение сервиса SMB в соответствующем разделе, а также добавление созданной папки в разделе «Общие ресурсы». Там можно более детально настроить различные атрибуты папки, например, включить функцию Time Machine для создания бэкапов компьютеров на macOS или открыть гостевой доступ.

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

Подключение к NAS

На macOS и iOS подключение к файловому серверу максимально простое. В первом случае заходим в Finder, открываем вкладку «Сеть» на левой панели, выбираем устройство с IP-адресом NAS или же названием RASPBERRYPI, нажимаем Connect as и вводим логин/пароль пользователя SMB, которого создали ранее. На iOS же заходим в стандартное приложение Files, нажимаем на кнопку меню в правом верхнем углу, выбираем Connect to Server, вводим IP-адрес и логин/пароль пользователя SMB.

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

На Windows нужно зайти в «Проводник», открыть вкладку «Сеть» на левой панели и выбрать компьютер с названием RASPBERRYPI. Если там он отсутствует, то следует нажать ПКМ на «Этот компьютер», выбрать пункт «Добавить новый элемент в сетевое окружение», в открывшемся окне вписать \\IP-адрес Raspberry\shared, при надобности ввести логин и пароль SMB-пользователя. Также можно подключить папку как сетевой диск. Для этого надо выбрать пункт «Добавить сетевой диск», нажав ПКМ на «Этот компьютер». Далее вписать \\IP-адрес Raspberry\shared и поставить галочку около пункта «Использовать другие учётные данные». После ввода логина и пароля аккаунта SMB, откроется доступ к сетевому хранилищу.

Krokodil707 Krokodil707
>_<。
4 комментария по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
guraoleg1996 1 год
А если я хочу иметь доступ к серверу из любой точки мира, это можно как то сделать?
alexsandrskopin 8 месяцев
Это чуть сложнее, тебе надо иметь(купить/арендовать статический IP у своего домашнего провайдера) Тогда ты сможешь по этому IP подключаться с любой точки мира, так работают сервера для сайтов. Но так же стоит подумать о безопасности фаервол как минимум нужен, ну и пароль должен быть не qwerty ^_^. Ибо если брутом(перебором) подберут к тебе пароль получат доступ к твоим данным, чего как мне кажется ты не хочешь.
id709937792 2 года
Ребят, а ссылка:

wget -O — github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

ещё действительна?

А то после загрузки по данной ссылке, мой роутер перестал видеть Raspberry. Загрузка программы длилась пару секунд, после чего Raspberry не перезагружалась!
rimusport 1 год
Сначала

wget github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install

Потом

sudo bash install