Эта статья полностью ориентирована на Linux-окружение с доступом к общим ресурсам, реализованным с помощью программы Samba. Если Вы никогда не сталкивались с конфигурированием общих сетевых папок в Linux — настоятельно рекомендую ознакомиться с этим постом.
Мною использовался дистрибутив операционной системы Ubuntu Server версии 20.04 (Focal Fossa).
Посты, посвященные ОС Linux Ubuntu и её базовой настройке можно найти по тегу ubuntu.
Допустим, у нас имеется какое-то количество платформ, которые с помощью VLC media player показывают один и тот же зацикленный видеофайл из сетевой папки. Теперь усложним — видеофайл требуется заменить на какой-то другой или же внести в него изменения. Само собой, так как файл читается — он занят и любые манипуляции с ним будут недоступны.
Есть три варианта решения этой задачи:
- останавливать на всех платформах VLC media player и/или заменять ссылку на файл;
- перезагружать платформы и стремительно заменять файл на новый;
- потратить немного времени и перевести доступ к файлу на http.
Обращение к файлам по протоколу http полностью решает проблему блокировки файлов на сервере. А при правильно настроенном плеере — можно заменить файл и платформа сразу начнет воспроизведение.
Проблема блокировки файлов при прямом доступе уже упоминалась ранее, когда я касался конкатенации видеофайлов с помощью утилиты ffmpeg.
В принципе, размещение файлов с доступом по http применимо для любого вида информации — вещаемой, демонстрационной, справочной, исполняемой и архивной.
В этом посте я расскажу как организовать простейшее файловое хранилище с доступом по протоколу http на ОС Ubuntu Server с помощью веб-сервера Nginx.
Разумеется, для начала требуется установить веб-сервер Nginx:
sudo apt-get install nginx -y
После установки проверяем статус службы nginx в системе:
systemctl status nginx
Служба должна быть загружена и запущена. Если по какой-то причине служба оказалась не активна поочерёдно выполните команды:
sudo systemctl enable nginx sudo systemctl start nginx
Первой командой мы включаем автозагрузку службы, а второй — стартуем её.
Теперь редактируем основную конфигурацию веб-сервера (/etc/nginx/nginx.conf) с помощью редактора nano:
sudo nano /etc/nginx/nginx.conf
В конфигурации веб-сервера есть два основных блока — events и http.
В блок http необходимо добавить субблок server:
server {
listen 80;
server_name HOSTNAME IP;
location / {
root /share;
index index.html index.htm;
}
}

В этой конструкции обозначается порт прослушивания — listen 80, имя текущего сервера и его IP-адрес — server_name HOSTNAME IP (заменяем HOSTNAME на имя сервера, а IP — IP-адресом сервера).
Далее в субблоке server задаётся ещё один субблок — location, в котором надо обозначить папку, где будут размещаться файлы и индексная страница сервера. После внесения изменений в конфигурационный файл — сохраняемся и выходим из редактора nano.
Важно! При внесении изменений в конфигурационные файлы не желательно использование табуляции для выравнивания строк.
Теперь попробуем провести тестирование файла конфигурации Nginx:
sudo nginx -t
Ознакомиться с параметрами командной строки можно в документации программы Nginx.
Если изменения в файл nginx.conf были внесены корректно — то терминал вернёт ответ:

В случае ошибок тестирования — утилита укажет номер строки с ошибкой и примерное описание. В моём случае, проблемы возникали только с нехваткой фигурных скобок.
Теперь немного о настройке брандмауэра в Ubuntu, если — само собой — он включён и используется. Подробную документацию по командам UFW можно найти вот здесь.
Итак, в процессе установки Nginx создаёт свои правила в брандмауэре UFW и с их помощью можно проводить открытие и закрытие необходимых портов.
Просмотреть все доступные правила UFW можно с помощью команды:
sudo ufw app list
Вывод будет примерно таким:

На скриншоте видно, что в настоящее время доступны пять правил: три из них создал Nginx, а остальные OpenSSH и Samba. В Вашем выводе список может быть другим, но правила Nginx там должны быть обязательно.
Всего Nginx создаёт три правила:
- Nginx Full: полный набор правил. Открыты порты 80 (стандартный http порт для нешифрованного трафика) и 443 (порт с TLS/SSL шифрованием трафика);
- Nginx HTTP: правило открывает только 80 порт.
- Nginx HTTPS: правило открывает только 443 порт.
Для рассматриваемой здесь задачи необходимо открыть только 80 порт. Для этого активируем правило Nginx HTTP:
sudo ufw allow 'Nginx HTTP'
Теперь все файлы, которые будут размещены в папке /share на нашем сервере будут доступны по протоколу http. Адреса для файлов будут иметь вот такой вид (URL) — http://IP-адрес-сервера/filename.format.
Возвращаясь к основной задаче поста касательно общего видеофайла: на всех задействованных платформах необходимо будет «скормить» программе VLC media player получившийся URL файла в любом удобном для Вас виде.
Постскриптум
Кстати, можно создать и разместить в общей папке страницу index.html, которая бы загружалась при переходе по http://IP-адрес-сервера в браузере. Для воспроизведения всё того же видеофайла предлагаю обратиться к video.js. Это наиболее простой и современный html5 плеер. Подключение и настройка займут несколько минут даже если вы не специалист в связках html/css/js.
Например, вот код странички с зацикленным воспроизведением файла video.mp4 (при условии, что вся скриптовая база video.js лежит в общей папке в директории videojs):
<html>
<head>
<title>VIDEOPLAY</title>
<link href="videojs/video-js.min.css" rel="stylesheet">
<script src="videojs/video.min.js"></script>
<style type="text/css">
body
{
margin: 0;
background: #000000;
}
.play
{
width: 100%;
height: auto;
display: inline-block;
border: 0;
margin: 0;
padding: 0;
margin-left: auto;
margin-right: auto;
display: block;
max-height: 100%;
}
</style>
</head>
<body>
<div class="play">
<video id="video" class="video-js vjs-default-skin vjs-16-9 vjs-big-play-centered" autoplay muted loop preload="none" data-setup='{"fluid": true}'>
<source src="video.mp4" type="video/mp4">
</video>
</div>
</body>
</html>
У данного метода воспроизведения есть один минус — при зацикливании воспроизведения, браузеры игнорируют звуковую дорожку файла, делая из видео слайд-шоу.
Для создания киоска под управлением Linux Ubuntu с автозапуском браузера Chromium — рекомендую ознакомиться с этим постом.