Главная страница » Raspberry » Домашний NAS на Raspberry Pi + Samba

Домашний NAS на Raspberry Pi + Samba

Содержание

  1. Вступление
  2. Что я использовал для сборки своего NAS
  3. Настраиваем и создаем папку для общего доступа
  4. Создаем папку для авторизованных пользователей
  5. Создаем папку для конкретного пользователя
  6. Значения строк в конфигурационном файле Samba
  7. Заключение

Вступление

Скажу сразу, ниже многабукаф, которое можно смело пропустить.

Не так давно приобрел новое для себя устройство — TV-приставка на Android. Приставка расширяет возможности моего телевизора, в котором нет ни каких smart сервисов. Просто обычный телевизор с возможностью просматривать телеканалы. Телевизор меня полностью устраивает своей диагональю и картинкой, по этому не стал рассматривать покупку нового.

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

Есть несколько вариантов. К примеру можно включить показ фотографий с телефон. Зайдя в галерею можно включить трансляцию фото и видео на приставку. Со стационарного компьютера или ноутбука можно создать общую папку в которой можно хранить фото и видео для дальнейшего просмотра с приставки.

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

Достаточно долгое время я использовал примерно такую связку. У меня был настроен старенький компьютер под небольшой сервер, на котором была расшарена папка, в которой я хранил свои коллекции фото, видео, да и просто информацию, к которой нужен был доступ с различных устройств в домашней сети. Компьютер слабенький, блок питания на 250 ват — не много, но и не мало. Так же эта махина занимает достаточно много места, а вентиляторы охлаждения не самые тихие.

В определенный момент мне это надоело, решил приобрести себе NAS для хранения всех данных на нем. Они специально для этого предназначены, могут работать круглосуточно при минимальном энергопотреблении — в среднем до 50 Вт. Но вот цены на NAS достаточно высокие — от 13 490руб. и это без HDD. Да, есть модели чуть дешевле, но они всего на 1 HDD, мне такой не подходит.

Выборка с сайта www.citilink.ru

Было принято решение собрать из одноплатного ПК Raspberry Pi 3, т.к. один такой у меня лежал без дела.


Что я использовал для сборки своего NAS

  • Raspberry Pi 3 B+ 
  • карта памяти Samsung microSDHC EVO+ V2 32 GB — в дальнейшем отказался от нее.
  • блок питания Red Line NTC-2.4 A
  • кабель Greenconnect USB 2.0 GCR-50700, 3A, 1.5 М
  • 3.5″ Внешний бокс DEXP UA003
  • жесткий диск WD Blue 1 TB

Настраиваем и создаем папку для общего доступа

ОС можно использовать на свой выбор, как и одноплатный ПК, которых сейчас достаточно много.

ОС установил от самой компании Raspberry — Raspberry Pi OS Lite. Почему lite? Потому что на ней нет ни чего лишнего предустановленного, да и графическая оболочка нам будет не нужна.

Распаковываем ОС на флешку, не забываем добавить файл ssh без расширения на раздел boot, что бы не подключать к одноплатнику монитор и клавиатуру с мышью, а настроить все через подключение с помощью PuTTY по SSH.

В настройках роутера или с помощью сканера сети, к примеру Advanced IP Scanner, находим ip адрес нашего будущего NAS и подключаемся к нему с помощью PuTTY. Сразу меняем пароль пользователя pi командой

passwd

Далее устанавливаем статический ip адрес — инструкция в этой статье.

Обновляем индекс репозитория и систему

sudo apt update
sudo apt upgrade

Создаем папку, которую в дальнейшем будем расшаривать.

sudo mkdir -m 1777 /mnt/shared

Немного разжую что в этой команде используется.
mkdir — создает новую папку (каталог)
-m (—mode=режим) — назначить режим доступа (права). По умолчанию mod принимает значение 0777, что обеспечивает неограниченные права
1777 — значение устанавливает Sticky bit (1) (липкий бит — sticky bit используется в основном для каталогов, чтобы защитить в них файлы. Из такого каталога пользователь может удалить только те файлы, владельцем которых он является. Примером может служить каталог /tmp, в который запись открыта для всех пользователей, но нежелательно удаление чужих файлов.), чтобы предотвратить случайное удаление каталога и даёт каждому пользователю права на чтение/запись/выполнение (777)
/mnt/shared — путь к самой папке. Папка может быть где угодно. Просто мне так привычнее, а так же я использую внешний HDD для этой папки.

Подключаем HDD и назначаем его путь до нужной папки. Я отформатировал диск в NTFS. Если Raspberry Pi выйдет из строя или просто понадобится подключить HDD к ПК на Windows — ни каких дополнительных манипуляций проводить не придется, он просто отобразится в системе как жесткий диск.

Затем устанавливаем Samba

sudo apt install samba samba-common-bin

Настраиваем samba, для этого изменяем файл конфигурации. Для начала сделаем резервную копию файла конфигурации

cp /etc/samba/smb.conf /etc/samba/smb.conf_sample

Далее редактируем конфигурационный файл samba

sudo nano /etc/samba/smb.conf

Удаляем все строки. Вставляем следующее

[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no

Так же добавляем

[shared]
  comment = Pi shared folder
  path = /mnt/shared
  browseable = yes
  writeable = Yes
  create mask = 0777
  directory mask = 0777
  public = yes
  guest ok = yes

Параметр «comment =» — не обязательный, дает обозначение папки.

Сохраняем файл ctrl+o, закрываем ctrl+x

Перезагружаем сервер Samba

sudo service smbd restart

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

Но что, если нам нужна папка, к которой будет доступ только при вводе пароля?

Создадим еще одну папку

sudo mkdir -m 1777 /mnt/myshared

Добавим ее в файл конфигурации samba

[myshared]
  path = /mnt/myshared
  browseable = yes
  writeable = yes
  guest ok = no
  create mask = 0777
  directory mask = 0777

Теперь для доступа к папке потребуется указать логин и пароль к папке

Пароль для пользователя Samba устанавливаем следующей командой

sudo smbpasswd -a pi

Для вступления новых настроек в силу перезагрузим сервис samba

sudo service smbd restart

Создаем папку, к которой доступ только у определенного пользователя

sudo mkdir -m 1777 /mnt/user

Создадим пользователя и установим пароль

sudo adduser user1
sudo smbpasswd -a user1

Добавим ее в файл конфигурации samba

[user]
  path = /mnt/user

  valid users = user1
  guest ok = no
  browseable = yes
  writeable = Yes
  create mask = 0777
  directory mask = 0777

Для вступления новых настроек в силу перезагрузим сервис samba

sudo service smbd restart

В таком виде доступ к папке user по шаре будет только у пользователя user1.

Объясню значения строк в конфигурационном файле Samba

Конфигурационный файл состоит из трех секций

global — данная секция отвечает за общие настройки Samba-сервера

public и private — секции описания настроек директорий общего доступа

В секции global присутствуют пять параметров:

  • workgroup — рабочая группа. Для упрощения работы пользователей WORKGROUP указывается, как группа по умолчанию. Если в вашей сети имя рабочей группы изменено, то следует изменить это значение и для Samba
  • security — уровень безопасности сервера. Значение user означает авторизацию по паре логин/пароль
  • map to guest — параметр определяет способ обработки запросов. Значение bad user означает, что запросы с неправильным паролем будут отклонены, даже если такое имя пользователя существует
  • wins support — включить или выключить поддержку WINS
  • dns proxy — возможность проксирования запросов к DNS

Настройки директорий выполняются в соответствующих секциях:

path — полный путь до директории на жестком диске

guest ok — возможность доступа к каталогу без пароля (гостевой)

browsable — показывать ли каталог (“шару”) на сервере среди прочих. Если параметр установлен как “no”, то доступ будет возможен по полному пути, например ip-addresshidden_directory

force user — пользователь от которого ведется работа с каталогом. Для повышения безопасности сервера, обычно используют nobody. Главное, не использовать пользователя root — это небезопасно

writable — установка значения как “yes” позволяет пользователю выполнять действия над файлами внутри каталога — переименование, добавление, удаление, перемещение в подкаталог и копирование

valid users — список пользователей у которых есть доступ к каталогу. Если пользователей несколько, их имена указываются через запятую. Если необходим доступ для пользователей принадлежащих группе, перед именем группы устанавливается символ ”at” @ (“собака”)

Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.

Проверяем настройки с помощью команды

testparm -s

Заключение

Такую связку я использую уже около двух лет. Все это работает 24/7. Около полугода назад реанимировал свой старенький бесперебойник, заменив в нем аккумулятор. Пришлось сделать это из-за частых выключений электроэнергии в моем районе.

Ранее я использовал для операционной системы карту памяти Samsung microSDHC EVO+ V2 32 GB, но не так давно пришлось от нее отказаться. Перенес ОС на жесткий диск, разбив его на разделы. Начиная с Raspberry Pi 3 B+ одноплатник без костылей поддерживает загрузку ОС с USB устройств. Скорость загрузки дольше, т.к. упирается в USB 2.0, но на работу хранилища не повлияло.

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

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

Метки: