Как стать автором
Поиск
Написать публикацию
Обновить

История разработки офлайн‑медиасервера: от идеи до open-source проекта

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.3K

💡 Идея

Всё началось с простой, но насущной проблемы: я хотел быстро передать файлы между своими устройствами — без интернета, без Bluetooth и без облаков.

Существующие способы были либо медленными, либо ограниченными:

  • Bluetooth — устаревший и слишком медленный для видео и больших папок

  • Облачные сервисы — требуют авторизации, интернета, да ещё и часто сжимают файлы

  • Airdrop — работает только между устройствами Apple

  • Флешка — не всегда под рукой, да и не подходит для телефонов

🧠 Тогда я задал себе вопрос:

Почему нельзя просто открыть ссылку в браузере и мгновенно получить доступ к файлам с другого устройства?

Так появилась идея — создать локальный медиасервер, который:

  • работает по Wi‑Fi, без интернета

  • запускается одним кликом

  • доступен из любого браузера в локальной сети

  • предоставляет простой и понятный файловый интерфейс

Sapar Mini должен был стать локальной альтернативой Google Drive или Airdrop, но полностью офлайн, без регистрации, и максимально лёгким.

⚙️ Реализация

Чтобы идея стала реальностью, мне нужно было три вещи:

  • Запускать локальный сервер на любом компьютере

  • Предоставить простой интерфейс для доступа к файлам

  • Обеспечить доступ к этому серверу с других устройств в сети

📦 Технологии

Я выбрал стек, который позволяет собрать приложение в виде десктопной программы, но с силой веба:

  • Electron — упаковывает Node.js и фронтенд в одно кроссплатформенное приложение

  • Node.js + Express — локальный HTTP‑сервер, который обрабатывает все запросы к файлам

  • EJS — простая серверная генерация HTML

  • Bootstrap 5 — адаптивный и лёгкий UI без перегрузки

  • Vanilla JS — всё без React/Vue, чтобы было быстро и нативно

🖥 Интерфейс

Главный принцип: максимальная простота без обучения.

  • Отображение файлов и папок в виде списка

  • Drag & drop для загрузки

  • Предпросмотр медиа (видео, изображения) прямо в браузере

  • Создание/удаление/переименование папок

  • Навигация через «хлебные крошки»

  • Адаптивность — интерфейс работает как на ПК, так и на телефоне

📡 Работа по локальной сети

Когда пользователь запускает приложение:

  • Sapar Mini автоматически определяет локальный IP (например, 192.168.0.104)

  • Использует этот IP в качестве адреса сервера — без порта

  • Сразу открывает интерфейс в браузере, например:

Например, http://192.168.0.104

💡 Это значит, что тебе не нужно запоминать порт — достаточно просто открыть IP в любом браузере устройства, подключённого к той же Wi‑Fi сети.
Интерфейс мгновенно загружается, и ты получаешь доступ к файлам как к локальному "облаку".

Такой подход особенно удобен:

  • в школах, офисах, поездках

  • при раздаче Wi‑Fi с ноутбука (без роутера)

  • в местах без интернета, где нужна быстрая локальная передача

🔐 Безопасность

Несмотря на простоту использования, я сразу понимал: если любой в сети сможет открыть твой IP — это потенциальный риск.

Поэтому в Sapar Mini реализована базовая, но надёжная защита.

🧩 Авторизация

  • При первом запуске Sapar Mini предлагает создать пароль — ты становишься хостом

  • Все последующие входы требуют ввода этого пароля

  • Пароль можно изменить в настройках в любой момент

  • Без ввода пароля доступ к интерфейсу полностью блокируется — даже если кто-то знает IP

📌 Таким образом, даже в открытой сети никто не сможет подключиться к твоим файлам без разрешения.

🕵️‍♂️ Приватность по умолчанию

Sapar Mini создан как офлайн-инструмент, а значит:

  • Он не требует интернета

  • Не использует сторонние API или облака

  • Не собирает аналитику и не отправляет данные наружу

Все действия — загрузка, удаление, просмотр — происходят только локально, на твоём устройстве.

Это делает Sapar Mini особенно удобным для:

  • домашних сетей

  • учебных заведений

  • поездок, где нет доступа к интернету

🛠 Разработка

Когда идея была сформулирована, я сразу начал писать код — без долгих планов или сложной архитектуры.
Цель была простая: сделать, чтобы работало.

🔁 Процесс

Всё началось с базового Express-сервера:

  • Отображение файлов из выбранной папки

  • Возможность скачивания

  • Примитивный HTML-шаблон на EJS

  • Отсутствие стилей и авторизации

Постепенно я добавлял функции:

  • загрузку через drag & drop

  • предпросмотр изображений и видео

  • навигацию по папкам

  • авторизацию

  • адаптивный UI с Bootstrap

🧪 MVP

Минимально рабочая версия включала:

  • локальный запуск

  • просмотр папок

  • скачивание файлов

  • простую авторизацию

Даже в таком виде это уже было удобно. Я показал MVP:

  • родственникам (обмен фото и видео)

  • друзьям (стриминг фильмов по локалке)

  • преподавателю, который скинул презентации студентам прямо на телефоны

🗣️ Отзывы были одинаковыми:

«А почему так не работает по умолчанию на всех устройствах?..»

После этого я понял: проект не только для себя — он реально полезен другим. Так начался путь к полноценному релизу.

🚀 Релиз и будущее

Когда MVP был стабилен, интерфейс стал удобным, а обратная связь — положительной, я понял: пора выпускать.

📦 Публикация

Я оформил проект как open-source:

  • Описал всё в README.md

  • Добавил лицензию MIT

  • Подключил сборку через GitHub Actions

  • Запустил автосборку для Windows (.exe), macOS (.dmg) и Linux (.AppImage)

  • Выложил всё в Releases

📁 Теперь любой человек может:

  • скачать готовую версию

  • установить без зависимостей

  • и использовать офлайн сразу после запуска

🌍 Open Source

Я решил сделать Sapar Mini полностью открытым, потому что:

  • хочу, чтобы им могли пользоваться не только разработчики

  • верю в ценность офлайн-инструментов без слежки и рекламы

  • хочу, чтобы другие могли учиться на примере кода или дорабатывать под себя

Каждый коммит — прозрачный. Нет скрытых API, нет трекеров, нет подписок. Всё работает локально и навсегда.

🛤 Планы

Sapar Mini уже полезен, но я хочу развивать его дальше:

  • 🧭 Автоопределение сервера через Bonjour (sapar.local)

  • 📱 Улучшенный UI для телефонов

  • 🔑 Авторизация с сессионным доступом

  • 🎨 Тёмная тема

  • 🔒 Ограничение доступа к выбранным папкам

  • 💬 Локальный чат между устройствами

  • 💾 Сборка для Raspberry Pi как автономного медиасервера

Если тебе интересна идея — ⭐ поставь звёздочку на GitHub, напиши фидбэк или просто попробуй.

Спасибо, что дочитал.
Sapar Mini — это маленький шаг для сети, но большой шаг к офлайн‑свободе.

Теги:
Хабы:
+1
Комментарии14

Публикации

Ближайшие события