Мобільний доступ та 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 (Додати на екран «Початок»)¶
- Відкрийте BamDude у Safari (інші браузери на iOS не вміють встановлювати PWA).
- Натисніть кнопку Поділитися (квадрат зі стрілкою вгору).
- Прокрутіть униз і натисніть На екран «Початок».
- Відредагуйте назву за потреби, потім натисніть Додати.
Застосунок запускається повноекранно без панелей браузера.
Android Chrome / Edge (Встановити застосунок)¶
- Відкрийте BamDude у Chrome або Edge.
- Натисніть меню з трьох крапок.
- Натисніть Встановити застосунок (або На головний екран на старіших Chromium).
- Підтвердьте кнопкою Встановити.
Десктоп (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 з періоду до встановлення.