Поднимаем webdav-сервер в Linux и Windows

от
Soft   webdav, linux, windows, file storage, файловое хранилище

В этой статье я расскажу, как быстро развернуть webdav-хранилище под Linux или Windows. Это может понадобиться для подобных сценариев:
– Открыть доступ к папке с фотографиями на домашнем ПК, чтобы просмотреть их с телефона или выгрузить туда новые фотографии.
– Открыть доступ к фонотеке и иметь возможность проигрывать музыку на Android-устройстве или с другого компьютера, к которому подключены колонки.

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

СодержаниеНастраиваем webdav-сервер
Подключаемся с Android
Подключаемся с Windows
Подключаемся с Linux
Автозапуск сервера при загрузке системы


Настраиваем webdav-сервер1. Заходим на страницу https://github.com/hacdias/webdav/releases и качаем последнюю версию под свою систему (там множество сборок под все возможные платформы).

2. Распаковываем архив в удобную папку и создаём файл конфигурации config.yml:
  1. address: 192.168.1.139
  2. port: 8082
  3. auth: true
  4. tls: false
  5.  
  6. users:
  7.   - username: admin
  8.     password: "{bcrypt}$2y$12$E4n7DvySA7UfzyBTNikkFeSFuQ8sEDxI37hjCTZQyjouLm.Ox6G.2"
  9.     modify: true
  10.     scope: "E:/MUSIC/"
  11.   - username: share
  12.     password: 12345
  13.     modify: true
  14.     scope: "E:/MUSIC/Share/"
2.1. В поле address указываем IP адрес компьютера в вашей локальной сети
2.2. В поле port укажите удобный свободный порт (убедитесь, что порт открыт и фаерволл не блокирует к нему доступ).
2.3. В users указываются пользователи, их пароли для входа и путь к директории, которая будет доступна им (используйте прямой слэш / для путей). В данном случае у пользователя admin будет полноценный доступ ко всей папке с музыкой, а пользователь share имеет доступ только к папке для обмена файлами.
2.4. Пароль можно задавать в открытом виде, как это сделано для пользователя share, но для администратора так делать не рекомендуется. Чтобы задать пароль, идём на https://bcrypt-generator.com/, в поле String to encrypt указываем желаемый пароль и нажимаем кнопку Hash
bcryptuser.png
В данном случае для пароля
My5uper5ecretPa$$w0rd
получили хэш
$2y$12$E4n7DvySA7UfzyBTNikkFeSFuQ8sEDxI37hjCTZQyjouLm.Ox6G.2
Записываем в конфиг это значение с префиксом {bcrypt} и в двойных кавычках:
"{bcrypt}$2y$12$E4n7DvySA7UfzyBTNikkFeSFuQ8sEDxI37hjCTZQyjouLm.Ox6G.2"

3. Запускаем программу из консоли/терминала, передав файл конфига:
  1. webdav -c config.yml
Если всё пройдёт успешно, покажется сообщение "Listening on 192.168.1.139:8082"


Подключаемся с AndroidЯ буду использовать MiXplorer, но подойдёт любой файловый менеджер с поддержкой webdav.
1. В боковом меню добавляем новое хранилище
shot-20200407T144819.png

2. Выбираем из списка WebDav
shot-20200407T145058.png

3. Вводим адрес, заполняем логин и пароль. Жмём Save.
shot-20200407T145423.png

4. Подключаемся и видим список наших файлов с полноценным доступом по сети.
shot-20200407T150027.png


Подключаемся с WindowsДля подключения можно воспользоваться WinSCP:
В диалоге создания сессии добавьте новый сайт, укажите протокол WebDAV и заполните значения
shot-20200407T160828.png

Также можно добавить хранилище в плеере AIMP:
Переходим на вкладку Мои облака, жмём ПКМ и Добавить хранилище
shot-20200407T163804.png
Заполняем данные
shot-20200407T162417.png
Если всё успешно, можно будет проигрывать музыку, которая находится на удалённом компьютере:
shot-20200407T162629.png

Также возможен вариант подключения через RaiDrive:
Выбираем Add, во вкладке NAS выбираем WebDAV, убираем галочку https (4), заполняем IP, порт, данные пользователя и нажимаем OK
shot-20200407T164915.png
Если сделали всё правильно, откроется проводник с указанной папкой, а в списке дисков появится новый диск Z:/
shot-20200407T165412.png


Подключаемся с LinuxНа примере Ubuntu. Заходим в Files -> Other Locations и внизу в поле Connect to Server вводим строку:
dav://192.168.1.139:8082
shot-20200407T171256.png
Жмём Connect и вводим данные пользователя:
shot-20200407T171457.png
После чего webdav-хранилище будет доступно в файловом менеджере.


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

В Linux можно добавить задачу в cron:
  1. (crontab -l ; echo "@reboot cd /path/to/webdav/binary && webdav -c config.yml") | crontab -
Либо добавить юнит для сервиса systemd.

В Windows так просто сервис не создать, но на помощь приходит NSSM. Скачиваем архив с программой и помещаем nssm.exe в папку %WINDIR% (обычно C:\Windows). В папке с webdav.exe открываем командную строку и вводим:
  1. nssm install
В появившемся окне выбираем программу webdav.exe, автоматически заполнится поле Path и Startup directory.
shot-20200407T181906.png
В Arguments вписываем
-c config.yml
А в Service name желаемое имя сервиса. После этого жмём Install service.
При желании можно заполнить описание на вкладке Details и выбрать желаемый способ запуска сервиса на вкладке Log on (по умолчанию сервис будет стартовать при входе в систему Windows).

Теперь в диспетчере задач будет виден новый сервис
shot-20200407T182601.png
Также можно проверить статус из командной строки:
  1. nssm status webdav
Остановить службу:
  1. nssm stop webdav
Запустить её вновь:
  1. nssm start webdav
Или вовсе удалить:
  1. nssm remove webdav
+6   6   0
2825