Экскурсовод раздаёт аудиогиды: свой сервер вместо приложения за проценты
Вы записали аудиогид, залили его в стороннее приложение для экскурсий, настроили QR-коды на точках маршрута — и всё работает. Но каждая продажа проходит через площадку, и часть выручки уходит ей просто за то, что она разместила ваш файл на своих серверах. При этом вы не управляете ни ценой показа, ни оформлением плеера, ни тем, что произойдёт, если приложение решит поменять условия или вовсе закрыться. Собрать раздачу аудиогидов на собственном сервере — это несколько часов настройки один раз, а дальше вы отдаёте туристам файлы напрямую, без посредника между вами и вашей же экскурсией.
Содержание
- Почему платформа берёт свою долю и чем это оборачивается
- Как выглядит раздача аудиогида со своего сервера
- Раздача файлов через nginx: конфиг и нюансы
- QR-коды на маршруте: как сделать без переклейки каждый сезон
- Продажа доступа: платный аудиогид без сторонней платформы
- Хранение и организация десятков маршрутов
- Резервные копии: маршрут не должен пропасть за день до сезона
Почему платформа берёт свою долю и чем это оборачивается
Экскурсионные приложения зарабатывают именно на транзакции: пользователь платит через них, они удерживают комиссию и переводят остаток вам. Это удобно — не нужно ничего настраивать, приложение уже стоит у части туристов, есть каталог и отзывы. Но у модели есть обратная сторона, которую замечаешь не сразу.
Во-первых, комиссия — это факт, а не деталь мелким шрифтом: часть цены билета на аудиогид платформа оставляет себе на любой продаже, и вы не можете на это повлиять. Во-вторых, вы не владеете каналом продажи — если приложение меняет правила модерации, добавляет обязательную подписку для слушателей или просто теряет аудиторию, ваш заработок падает вместе с ним, а альтернативы искать поздно. В-третьих, гид на площадке — это чужой UI: свой брендинг, логотип агентства, ссылку на соцсети или на следующий тур вставить некуда, максимум — короткое описание в карточке.
Отдельная больная тема — доступ без интернета. Турист идёт по маршруту, где сотовая связь то есть, то нет (в подвале крепости, в узких улочках старого города, в парке за городом), и приложение либо не грузит трек вовремя, либо требует докачки. Если вы отдаёте файлы напрямую по прямой ссылке с вашего сервера, вы хотя бы знаете, что происходит на вашей стороне, и можете сделать разумный кеш и офлайн-скачивание, а не зависеть от чужой логики.
Как выглядит раздача аудиогида со своего сервера
Схема простая и проверенная временем: у вас есть сервер (аренда VPS с любым техническим уровнем достаточна — это не требует мощного железа), на нём лежат аудиофайлы экскурсии, разбитые по точкам маршрута, и веб-страница с плеером. На каждой точке маршрута — табличка или наклейка с QR-кодом, который ведёт на прямую ссылку вида https://ваш-домен/tour/kreml/tochka-3. Турист сканирует код камерой телефона, открывается страница с плеером, трек начинает играть — без установки приложения, без регистрации, без сторонней комиссии.
Технически это статический или почти статический сайт: HTML-страница с HTML5-audio плеером и файлы .mp3 рядом. Никакой базы данных для самого прослушивания не нужно — она нужна только если вы продаёте доступ (об этом ниже). Структура каталогов на сервере может выглядеть так:
/var/www/audioguide/
├── kreml/
│ ├── tochka-1.mp3
│ ├── tochka-1.html
│ ├── tochka-2.mp3
│ ├── tochka-2.html
│ └── ...
├── staryj-gorod/
│ └── ...
└── index.html
Минимальная страница точки маршрута:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Кремль — точка 3: Успенский собор</title>
</head>
<body>
<h1>Успенский собор</h1>
<audio controls preload="metadata" style="width:100%">
<source src="/kreml/tochka-3.mp3" type="audio/mpeg">
</audio>
<p>Длительность: 4:12</p>
</body>
</html>
Это база, которую можно расширять: добавить фото точки, текстовую расшифровку для тех, кто без наушников, кнопку «следующая точка», логотип и ссылку на бронирование следующей экскурсии.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверРаздача файлов через nginx: конфиг и нюансы
Аудиофайлы отдаёт обычный веб-сервер. Для nginx конфиг для раздела с аудиогидами выглядит примерно так:
server {
listen 443 ssl http2;
server_name tour.вашдомен.ru;
ssl_certificate /etc/letsencrypt/live/tour.вашдомен.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tour.вашдомен.ru/privkey.pem;
root /var/www/audioguide;
index index.html;
location ~* \.mp3$ {
add_header Accept-Ranges bytes;
add_header Cache-Control "public, max-age=2592000, immutable";
expires 30d;
}
location / {
try_files $uri $uri/ =404;
}
}
Важные детали, которые часто упускают:
Accept-Ranges bytesобязателен для аудио — без него плеер не сможет перематывать трек и докачивать его частями, что критично на нестабильном мобильном интернете. nginx отдаёт статические файлы с поддержкой range-запросов из коробки, но стоит явно проверить заголовок в ответе (curl -Iи смотреть наAccept-Ranges).- Кеширование на месяц и дольше — аудиофайл экскурсии не меняется каждый день, поэтому смело ставьте длинный
max-age. Это разгружает сервер, если несколько туристов проходят маршрут одновременно, и экономит трафик на повторных заходах. - HTTPS обязателен, потому что iOS и Android современных версий блокируют автовоспроизведение и доступ к некоторым API на http-страницах, а часть турагентских сайтов уже требуют защищённого соединения по умолчанию. Сертификат Let's Encrypt настраивается один раз и обновляется автоматически — детали разбирали в статье про настройку Let's Encrypt SSL на VPS.
- Если сомневаетесь между nginx и другими вариантами реверс-прокси перед сервером с сертификатами, сравнение подходов есть в статье про выбор между nginx и альтернативами.
QR-коды на маршруте: как сделать без переклейки каждый сезон
QR-код — это просто закодированная ссылка, поэтому главное правило: делайте ссылки короткими и стабильными, чтобы не пришлось переклеивать таблички при любом изменении структуры сайта. Не кодируйте в QR длинный URL с параметрами — заведите короткие пути вида /t/1, /t/2 для каждой точки, а редирект на реальный файл делайте через конфиг сервера:
location = /t/1 { return 301 /kreml/tochka-1.html; }
location = /t/2 { return 301 /kreml/tochka-2.html; }
Так вы можете хоть каждый месяц менять структуру каталогов, тексты и даже переписывать треки — таблички на маршруте останутся актуальными, потому что ссылка /t/1 всегда работает, а куда она ведёт — решаете вы на сервере.
Генерировать сами QR-коды можно бесплатными онлайн-генераторами или библиотекой qrencode прямо на сервере:
sudo apt install qrencode
qrencode -o tochka-1.png -s 10 "https://tour.вашдомен.ru/t/1"
Печатайте коды на плотном материале или ламинируйте — таблички на маршруте живут под дождём и солнцем, а не в помещении.
Продажа доступа: платный аудиогид без сторонней платформы
Если аудиогид не бесплатный бонус к живой экскурсии, а самостоятельный продукт, который вы продаёте, схема усложняется, но остаётся полностью под вашим контролем. Самый практичный вариант — не городить полноценный личный кабинет с регистрацией, а продавать одноразовую ссылку или код доступа:
- Турист оплачивает доступ на вашей странице (можно использовать любой сервис приёма платежей на своих условиях, без привязки к экскурсионной платформе).
- После оплаты сервер генерирует уникальную ссылку с токеном, например
https://tour.вашдомен.ru/access/a1b2c3d4/. - Ссылка живёт ограниченное время (сутки, неделя маршрута) и открывает доступ ко всем точкам конкретного тура.
Проверку токена можно реализовать простым скриптом на сервере — не обязательно поднимать сложный бэкенд, для одного-двух туров хватит легковесного обработчика, который сверяет токен со списком выданных и либо отдаёт страницу с плеерами, либо показывает 403. Если туров и продаж становится много, имеет смысл вынести список выданных токенов в отдельную базу (даже SQLite достаточно на первое время) и добавить админку для их выписки и отзыва.
Здесь та же логика, что у авторов онлайн-курсов, которые устали отдавать треть выручки платформе и переносят уроки к себе — сама идея разобрана в статье про перенос уроков курса на свой сервер: чем понятнее продукт (аудиофайл + доступ по ссылке), тем меньше причин делиться с посредником, который просто хранит ваши файлы.
Хранение и организация десятков маршрутов
Когда экскурсий становится больше пяти-семи, плоская структура каталогов на одном диске перестаёт быть удобной, и хочется единого способа управлять файлами, а не лазить по SSH при каждом обновлении. Здесь помогает связка веб-сервера с S3-совместимым хранилищем на том же сервере — например, MinIO, который отдаёт файлы по HTTP и умеет версионирование, что удобно, если вы периодически перезаписываете треки после правок текста. Подробности разворачивания разобраны в статье про S3-совместимое хранилище у себя, а готовый Docker-образ MinIO — в отдельной статье про MinIO в Docker Compose.
Практическая структура для агентства с несколькими гидами:
| Уровень | Что там | Кто отвечает |
|---|---|---|
| Бакет/каталог тура | все аудиофайлы и HTML одного маршрута | гид, который ведёт этот тур |
Общий каталог /shared | логотип, общий плеер-шаблон, шрифты | администратор агентства |
Каталог /access | скрипт проверки токенов, список выданных ссылок | администратор агентства |
Такая структура даёт каждому гиду свою зону ответственности, но не плодит десятки разрозненных подписок на сторонние сервисы — один сервер закрывает все маршруты сразу.
Резервные копии: маршрут не должен пропасть за день до сезона
Аудиофайлы — это часы записи, монтажа и иногда работы с профессиональным диктором, поэтому потерять их обиднее, чем любой другой контент на сервере. Базовая схема бэкапа не требует ничего экзотического: ежедневный rsync каталога с аудиогидами на второй сервер или в объектное хранилище, плюс хранение исходников (немонтированных дорожек) отдельно от того, что раздаётся туристам.
# простой ежедневный бэкап каталога с гидами
rsync -avz --delete /var/www/audioguide/ user@backup-server:/backup/audioguide/
Добавьте эту команду в cron на раз в сутки, желательно ночью, когда нагрузка на сервер минимальна:
0 3 * * * rsync -avz --delete /var/www/audioguide/ user@backup-server:/backup/audioguide/ >> /var/log/audioguide-backup.log 2>&1
Если вы уже пользуетесь готовыми решениями для бэкапов, логика та же, что в общих материалах по резервному копированию VPS — важно, чтобы копия хранилась физически на другом сервере или в другом хранилище, а не просто в соседней папке того же диска.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Нужен ли мощный сервер, чтобы раздавать аудиогиды нескольким турам одновременно?
Нет. Раздача статических аудиофайлов — одна из самых нетребовательных задач для сервера: нагрузка на процессор минимальна, узкое место — только исходящий трафик при пиковом числе одновременных слушателей. Небольшой VPS справляется с раздачей десятков и сотен одновременных прослушиваний.
Что если турист откроет ссылку без интернета на маршруте?
Полностью офлайн со своего сервера не решить — файл нужно скачать хотя бы раз. Но можно смягчить проблему: делать страницу с кнопкой «скачать все точки маршрута» до начала тура (пока есть Wi-Fi у входа) и использовать preload="auto", чтобы браузер закешировал файл заранее, если сеть на старте маршрута есть.
Можно ли защитить аудиофайлы от прямого скачивания и раздачи третьим лицам?
Полностью — нет, любой аудиофайл, который проигрывается в браузере, технически можно сохранить. Но можно усложнить: раздавать через одноразовые токенированные ссылки с ограниченным сроком жизни, не индексировать страницы в поисковиках (robots.txt с запретом) и не давать прямых постоянных URL на mp3-файлы в открытом виде.
Стоит ли переносить существующий каталог аудиогидов сразу целиком или лучше постепенно?
Практичнее постепенно: перенесите один-два маршрута, протестируйте QR-коды и плеер на реальном туре, и только убедившись, что всё стабильно работает в поле — с реальными телефонами и реальным качеством связи — переносите остальные, не отключая старое приложение до полного перехода.
Нужен ли отдельный домен под аудиогиды или можно на существующем сайте агентства?
Можно на существующем в отдельном разделе (вашсайт.ru/tour/...), а можно на поддомене (tour.вашсайт.ru) — поддомен удобнее, если разделы сайта обслуживают разные серверы или вы хотите отдельную настройку кеширования именно под аудиофайлы, не трогая основной сайт.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →