322 подписчика

Домашний сервер - это просто. Часть 5: Samba и Webdav

262 прочитали

5.1 Установка и настройка SAMBA

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.

Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.

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

Устанавливаем Samba:

sudo apt install samba -y

Добавляем права себе и root:

sudo adduser andrey sambashare
sudo adduser root sambashare

Предоставим общий доступ к нашему /mnt/raid_md0 целиком.

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

nano /etc/samba/smb.conf

В открывшемся конфигурационном файле в секции [global] добавляем:

map to guest = Bad Password

Это позволит воспринимать неавторизованных пользователей, как гостей.

Теперь в самом низу и добавляем следующее:

[raid_md0]
comment = Public Folder
path = /mnt/
raid_md0
public = yes
writable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777

  • [shared] — имя общей папки, которое увидят пользователи, подключившись к серверу.
  • comment — комментарий для удобства.
  • path — путь на сервере, где будут храниться данные.
  • public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
  • writable — разрешает запись на сетевой ресурс.
  • read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
  • guest ok — разрешает доступ к папке гостевой учетной записи.
  • create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются полные права.

Даем полные права:

chmod -R 777 /mnt/raid_md0

Добавляем в исключения UFW порт 445/tcp необходимый для работы Samba:

sudo ufw allow 445/tcp

Запускаем службу:

sudo systemctl restart samba
5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-2

Теперь на любом компьютере, подключённом к вашему роутеру в адресной строке проводника, можно набрать \\192.168.2.11 и увидеть папку «raid_md0 с содержащимися в ней файлами или подключить ее на постоянной основе как сетевой диск с адресом \\192.168.2.11\raid_md0

5.2. Настройка WebDav

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-3

11.1. Подготовка среды для установки

Включаем модули Apache2:

sudo a2enmod dav
sudo a2enmod dav_fs
sudo a2enmod auth_digest


Перезапускаем Apache:

sudo systemctl restart apache2


Создаем каталог, в котором будут храниться файлы расшариваемые по WebDav и делаем его владельцем web-сервер:

sudo mkdir /var/www/webdav
sudo chown www-data:www-data /var/www/webdav

Создаем новый каталог для хранения файла базы данных и делаем его владельцем web-сервер:

sudo mkdir -p /usr/local/apache/var/
sudo chown www-data:www-data /usr/local/apache/var

Параметр -p позволяет утилите mkdir создать все родительские каталоги в указанном вами пути (если какого-то из них не существует).

11.2. Настройка аутентификации.

Используем метод, называется дайджест-аутентификацией. Это более безопасный метод аутентификации для WebDAV, особенно в сочетании с HTTPS.

Дайджест-аутентификация работает с файлом, в котором хранятся имена и пароли доверенных пользователей – только они могут получить доступ к серверу WebDAV. Как и файл базы данных, такой файл должен храниться в месте, которое доступно веб-серверу Apache и которое не отображается на вашем сайте.

Создаем в папке /usr/local/apache/var/users пустой файл users.password и делаем его владельцем web-сервер:

sudo touch /usr/local/apache/var/users.password
sudo chown www-data:www-data /usr/local/apache/var/users.password

Следующая команда добавит в файл доверенного пользователя “аndrey”:

sudo htdigest -c /usr/local/apache/var/users.password webdav andrey

будет предложено ввести пароль и подтвердить его.

Преследующих пользователей можно добавлять той же командой без ключа «-с»:

sudo htdigest /usr/local/apache/var/users.password webdav masha


будет предложено ввести пароль и подтвердить его.

11.3.Создание файла конфигурации виртуального хоста

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

nano /etc/apache2/sites-available/wd.475cloud.conf

Добавляем в него:

DavLockDB /usr/local/apache/var/DavLock
<VirtualHost *:80>
ServerName wd.475cloud.ru
ServerAlias www.wd.475cloud.ru
DocumentRoot /var/www/webdav
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName wd.475cloud.ru
ServerAlias www.wd.475cloud.ru
DocumentRoot /var/www/webdav
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains>
</IfModule>

<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
</Directory>
</VirtualHost>

И сохраняем (Ctrl +O).

Включаем сайт (в /etc/apache2/sites-enabled создается ссылка на файл конфигурации виртуального хоста):

sudo a2ensite wd.475cloud.conf

Проверяем синтаксис конфигурации:

sudo apachectl configtest

Утилита apachectl выведет Syntax OK, если ошибок в файле нет.

Перезапускаем Apache:

sudo systemctl restart apache2

11.4.Установка сертификата Let’s Encrypt

Устанавливаем SSL-сертификат:

sudo certbot --apache -d wd.475cloud.ru -d www.wd.475cloud.ru

Перезапускаем Apache:

sudo systemctl restart apache2

После перезапуска Apache можно получить доступ к torrent-клиенту, используя web-адрес:

https://wd.475cloud.ru

Должно быть что-то вроде этого:

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-4

Для того, чтобы наша библиотека стала доступна по протоколу webdav смонтируем папку /mnt/raid_md0/ в каталог /var/www/webdav.

Есть один нюанс с которым я столкнулся при использовании файловых менеджеров на android - если смонтировать папку непосредственно в /var/www/webdav - они почему-то не видят ее содержимого, а если скопировать во вложенную папку и прописать ее в адресе сервера - все отлично работает.

Поэтому создадим в каталоге var/www/webdav папку raid_md0:

sudo mkdir /var/www/webdav/raid_md0

и уже в нее смонтируем папку /mnt/raid_md0

Вносим запись в файл /etc/fstab

nano /etc/fstab

Добавляем в конец:

/mnt/raid_md0 /var/www/webdav/raid_md0 none bind,auto,nofail 0 0

После внесения правок в fstab выполнить:

systemctl daemon-reload && systemctl restart local-fs.target

В результате в каталоге /var/www/webdav появилось содержимое нашего raid_md0 хотя на самом деле его там нет. Похоже на Shortcut в Windows, но не совсем. Здесь происходи прямое подключение файловой системы в точку монтирования.

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-5

По ссылке https://wd.475cloud.ru мы теперь увидим следующее:

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-6

В довершение сделанного я кинул в каталог /var/www/webdav PHP-файловый менеджер Simple File Manager предварительно отключив функции удаления и создания чего-либо. Просто откройте его текстовым редактором и сделайте так:

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-7

Лежит здесь:

https://github.com/jcampbell1/simple-file-manager

Нужен только index.php.

Тогда при открытии вы увидите что-то вроде этого:

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-8

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

В Play Market и других магазинах масса файловых менеджеров, поддерживающих протокол webdav. Я пользуюсь этим:

5.1 Установка и настройка SAMBA  Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID.-9

При подключении в FM в строке адреса нужно указывать не только адрес сервера, но и корневую папку:

https://wd.475cloud.ru/raid_md0/

Иначе файловый менеджер скажет, что ничего не нашел. Такой у него косяк.

Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.