Перейти до змісту

Мобільний доступ та PWA

Фронтенд BamDude повністю адаптивний і постачається як встановлюваний Progressive Web App (PWA). Окремих застосунків для iOS/Android немає — вебзастосунок сам є застосунком, а на Chromium / iOS Safari його можна додати на головний екран для повноекранного запуску.

Ця сторінка пояснює, що працює на телефоні, як встановити PWA, сумісність із браузерами, а також підводні камені з HTTPS, push-сповіщеннями та віддаленим доступом.


Що працює на мобільному

Увесь UI зручний для дотику й адаптивний — сторінок «лише для десктопа» немає.

Розділ Підтримка на мобільному
Картки принтерів і живий стан Так — картки переходять у компактний режим нижче 768px
Потоки камер (MJPEG / снепшот) Так — ті самі ендпоінти, що й на десктопі
Керування чергою друку Так — drag-and-drop працює дотиком
Огляд архіву й деталі Так — довге натискання відкриває контекстне меню
Бібліотека / файловий менеджер Так
Дашборди статистики Так — графіки переформатовуються в один стовпчик
Налаштування сповіщень Так
Налаштування Так

Нижня панель навігації в портретному режимі

На вузьких портретних екранах у телефонному форматі замість десктопного сайдбара з'являється компактна панель навігації. Гамбургер-меню розгортає повний список.


Встановлення PWA

manifest.json BamDude оголошує display: standalone, колір теми, іконки та чотири ярлики запуску (Принтери, Архіви, Черга, Проєкти) — тож після встановлення довге натискання на іконку (Android) показує ярлики.

iOS Safari (Додати на екран «Початок»)

  1. Відкрийте BamDude у Safari (інші браузери на iOS не вміють встановлювати PWA).
  2. Натисніть кнопку Поділитися (квадрат зі стрілкою вгору).
  3. Прокрутіть униз і натисніть На екран «Початок».
  4. Відредагуйте назву за потреби, потім натисніть Додати.

Застосунок запускається повноекранно без панелей браузера.

Android Chrome / Edge (Встановити застосунок)

  1. Відкрийте BamDude у Chrome або Edge.
  2. Натисніть меню з трьох крапок.
  3. Натисніть Встановити застосунок (або На головний екран на старіших Chromium).
  4. Підтвердьте кнопкою Встановити.

Десктоп (Chrome / Edge)

Шукайте іконку встановлення (маленький комп'ютер зі стрілкою вниз) в адресному рядку, або скористайтеся Меню → Встановити BamDude…. Встановлений застосунок поводиться як звичайний десктопний — його можна закріпити на панелі, перемикати через Alt-Tab, він має власне вікно.


Вимога HTTPS

Функції PWA (запит на встановлення в Chromium, service worker, офлайн-кеш) вимагають HTTPS або localhost. Якщо ви відкриваєте BamDude лише по plain HTTP, наприклад http://192.168.1.50:8000:

  • Запит на встановлення в Chrome / Edge не з'явиться (Safari iOS толерантніший — Add to Home Screen працює і по HTTP).
  • Service worker все ще реєструється на localhost, але не на plain-HTTP LAN IP у новіших Chromium.

Для розгортання в LAN є два чисті варіанти:

  • Reverse proxy з TLS — поставте nginx, Caddy або Traefik перед BamDude і нехай він термінує HTTPS. Див. Reverse proxy і HTTPS.
  • Tailscale — діставайся BamDude (і його віртуальних принтерів) через свій tailnet без port-forward. BamDude може показати tailnet-адресу VP, щоб вставити її у слайсер; імпорт CA в сам слайсер усе одно потрібен. Див. Tailscale.

Обидва шляхи дають справжню https://… адресу, що задовольняє вимогу встановлення PWA та розблоковує усі сучасні функції браузера.


Сумісність із браузерами

Браузер Встановлення Офлайн-кеш Web Push
Chrome / Edge (Android) Так (HTTPS) Так Так
Chrome / Edge (Десктоп) Так (HTTPS) Так Так
Safari (iOS 16.4+) Так Так Так (з обмеженнями)
Safari (iOS < 16.4) Так Так Ні
Safari (macOS 16.4+) Так Так Так
Firefox (Android / Десктоп) Ні Так Ні (Firefox не має Web Push)

Firefox не постачає Web Push для сайтів

UX встановлення в Firefox на десктопі також зник. Сайт нормально працює у Firefox — просто не отримаєте іконки на головному екрані / доку.


Push-сповіщення

BamDude підтримує кілька каналів сповіщень — більшість мобільних користувачів тримає завжди-онлайн варіанти, замість того щоб покладатися на браузерний Web Push:

  • Telegram — найпопулярніше для мобільного; бот пушить через застосунок Telegram, встановлення PWA не потрібне.
  • ntfy — встановіть застосунок ntfy, підпишіться на ваш топік.
  • Pushover
  • Discord, Email, Home Assistant, WhatsApp (через CallMeBot).

Налаштовуйте їх у Settings → Notifications. Деталі по кожному каналу — у Сповіщеннях.

Чому Telegram переграє браузерний push для принтерів

Браузерний Web Push залежить від того, що пристрій + браузер залишаються підписаними. Telegram — окремий фоновий сервіс і переживає перезавантаження, чистку кешу й перевстановлення PWA без повторної підписки.


Потоки камер на мобільному

Ті самі MJPEG / snapshot URL, що працюють на десктопі, працюють і на мобільному. Потоки рендеряться в <img>-тегах з короткими стрім-токенами, які фронтенд автоматично ротує.

Особливості платформ:

  • iOS Safari ставить фонові вкладки на паузу приблизно через 60 секунд — коли ви повертаєте вкладку у фокус, потік перепідключається автоматично (хук синхронізації стрім-токенів запускається повторно при focus).
  • Стільниковий трафік — MJPEG-потоки витрачають близько 5 МБ/хв залежно від роздільної здатності й FPS. На лімітованому трафіку розгляньте зниження FPS у Settings → Camera або перегляд снепшотів.
  • Service worker свідомо не кешує /camera/stream і /camera/snapshot — у Safari були баги з потоковими відповідями через SW, тому ці запити йдуть прямо в мережу.

Віддалений доступ (поза LAN)

Щоб користуватися BamDude поза домашньою мережею, потрібен один із варіантів:

Підхід Зусилля на налаштування Найкраще для
Домашній VPN (WireGuard / OpenVPN) Середні Самохости, що вже мають VPN-шлюз
Tailscale Легко Більшості користувачів — нуль файрволу, автоматичний HTTPS через MagicDNS
Публічний reverse proxy + TLS Середні Користувачі з реальним доменом, що хочуть прямий браузерний доступ

Див.:

  • Tailscale — рекомендований шлях; дає кожному пристрою у вашому tailnet HTTPS-доступ без виставлення чого-небудь у публічний інтернет.
  • Reverse proxy і HTTPS — для тих, хто хоче публічний https://printer.example.com.

Не виставляйте plain HTTP в інтернет

Авторизація BamDude надійна, але plain HTTP зливає кожен логін у мережу. Якщо йдете в публіку — термінуйте TLS на проксі або використовуйте Tailscale.


Офлайн-кеш

Service worker (/sw.js) кешує оболонку застосунку — HTML, JS, CSS, іконки — за стратегією network-first для HTML/JS/CSS і cache-first для зображень. Коли мережа відвалюється:

  • UI завантажується з кешу, тож можна навігуватися оболонкою застосунку.
  • Живі дані (стан принтерів, черга, список архівів) — лише для читання, застарілі. WebSocket перепідключиться автоматично, коли мережа повернеться.
  • API-запити повертають 503 {"error": "offline"}, тож UI може показати офлайн-плейсхолдери.

Цього достатньо, щоб поглянути на «що було на екрані востаннє» без інтернету, але це не повноцінний офлайн-режим для реальних операцій.


Поради щодо батареї й трафіку

  • Закривайте потоки камер, коли активно не моніторите — це найбільший витратник батареї й трафіку.
  • Знижуйте FPS потоку у Settings → Camera, якщо вам не треба 30 fps для побіжного перегляду.
  • Використовуйте Wi-Fi для живого моніторингу; на стільниковому переходьте у режим лише снепшотів.
  • Telegram > вкладка браузера для «друк завершився?»-сповіщень — щоб вкладка BamDude не висіла відкритою, спалюючи батарею.

Обмеження

  • Немає окремих iOS/Android застосунків — лише PWA. Застосунок Bambu Handy не пов'язаний з BamDude.
  • Web Push на iOS має жорсткіші фонові ліміти, ніж десктоп, і працює лише на iOS 16.4+ із встановленою PWA (не з простої вкладки Safari).
  • Приватний / інкогніто-режим у деяких браузерах вимикає реєстрацію service worker, що означає відсутність запиту на встановлення й офлайн-кешу.
  • Поки що немає нативного share-target завантаження — сьогодні ви не можете «Поділитися в BamDude» 3MF з іншого застосунку. Завантажуйте через файловий менеджер у застосунку або через FTP віртуального принтера. Див. Файловий менеджер.

Усунення несправностей

Опція «Додати на екран» / «Встановити» відсутня
  • У Chrome / Edge переконайтеся, що ви на HTTPS — див. Вимогу HTTPS вище.
  • Переконайтеся, що відкритий саме origin BamDude, а не прев'ю документації на docs.bamdude.top.
  • Перезавантажте сторінку, щоб маніфест і service worker встигли зареєструватися перед запитом.
  • На Android у приватному режимі Chrome пригнічує опцію встановлення.
Push-сповіщення ніколи не приходять
  • Дозвіл браузера для сайту має бути Allowed (перевірте налаштування сайту).
  • Перевірте версію браузера — iOS < 16.4 взагалі не має Web Push.
  • Простіший шлях: використовуйте Telegram або ntfy — вони не залежать від того, чи переживуть push-підписки чистку кешу.
Камера показує чорний прямокутник після повернення з фону
  • Стрім-токен у кешованому service worker міг застаріти. Потягніть для оновлення один раз — нові токени підвантажуються.
  • На iOS Safari це нормальна поведінка після тривалої фонової паузи — потік авто-перепідключається.
Логін у нескінченному циклі після встановлення PWA
  • Очистьте дані сайту PWA: довгий тап на іконку → App info → Storage → Clear, потім відкрийте знову.
  • Це майже завжди — застарілий refresh-token cookie з періоду до встановлення.

Далі