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

Інтеграція з Tailscale

BamDude може показати tailnet-адресу віртуального принтера — його 100.x.x.x IP та MagicDNS-ім'я — щоб слайсер, який працює десь інде у твоїй мережі Tailscale, міг до нього під'єднатись. Без port-forward, без додаткового VPN-клієнта, без виставляння чогось у публічний інтернет.

Це опційно для кожного VP і є суто відображенням адреси, яку треба вставити у слайсер. На захист самого VP це не впливає.


Коли це доречно

Наявна альтернатива — режим VP proxy — теж працює для віддаленого друку, але проганяє кожен байт через власний TCP-релей BamDude. Мережа Tailscale швидша (пряме peer-to-peer, якщо можливо, інакше через DERP) і дає слайсеру говорити з VP так, ніби він у тій самій LAN.

Сценарій Рекомендований шлях
Слайсинг на лептопі в тій самій LAN, що й BamDude Звичайний VP, Tailscale не потрібен.
Слайсинг на лептопі / телефоні поза мережею (кафе, відпустка) Tailscale.
Слайсинг із CI / GitHub Actions раннера Режим VP proxy (Tailscale на VM — надлишок).
Мультитенантний міст хмара → BamDude Режим VP proxy + твій наявний TLS.

Tailscale виграє саме тоді, коли машина зі слайсером і так уже в Tailscale, і ти хочеш, щоб вона діставала принтер напряму.


Передумови

  1. Демон Tailscale на хості BamDude. BamDude ніколи не запускає tailscaled сам — він читає хостовий. Встанови tailscaled і виконай tailscale up.

  2. Тільки Docker: змонтуй сокет демона. Образ BamDude містить CLI tailscale, але CLI може говорити з демоном лише через його сокет, який живе на хості:

    services:
      bamdude:
        volumes:
          - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
    

    Можливо, доведеться також дозволити користувачу контейнера звертатись до демона:

    sudo tailscale set --operator=$(id -un)
    

    Монтування присутнє, але закоментоване у постачуваному docker-compose.yml — розкоментуй його. Нативним інсталяціям нічого додатково не треба: вони користуються хостовими CLI та сокетом напряму.

  3. MagicDNS увімкнений у твоєму tailnet (перемикач на сторінці DNS в адмінці Tailscale), якщо хочеш зручне *.ts.net ім'я поряд із сирим IP. Сам IP працює й без нього.

  4. Віртуальний принтер. Перемикач — для кожного VP окремо.


Увімкнення для VP

На картці віртуального принтера ввімкни Показати Tailscale адресу. Якщо демон на хості доступний, картка покаже tailnet-IP та MagicDNS-ім'я — кожне з кнопкою копіювання.

Вставляй IP у діалог Add Printer свого слайсера.

Використовуй IP, а не ім'я хоста

Діалог Add Printer у Bambu Studio та OrcaSlicer приймає IP-адресу, а не hostname. MagicDNS-ім'я показується, бо стане в пригоді деінде (закладки, SSH, власні нотатки), але слайсеру потрібна саме адреса 100.x.x.x.

Перемикач саме per-VP, бо деяким інсталяціям треба водночас мати VP-A у LAN (виробничий цех) і VP-B доступним через tailnet (віддалений слайсер інженерної команди).


Сертифікати: Tailscale їх не змінює

Tailscale змінює лише мережевий доступ. Довіру до TLS віртуального принтера він не змінює.

Ти все одно один раз імпортуєш CA-сертифікат BamDude (bbl_ca.crt) у свій слайсер — так само, як для VP у LAN. Див. Віртуальний принтер.

Чому немає шляху через Let's Encrypt

Рання версія цієї інтеграції виписувала справжні сертифікати Let's Encrypt через tailscale cert і анонсувала tailnet-FQDN по SSDP, щоб слайсер довіряв VP без жодного імпорту. Це було видалено, бо воно не може працювати: Bambu Studio й OrcaSlicer перевіряють MQTT-з'єднання з принтером лише проти власного вбудованого CA-сховища Bambu, а не системного. Публічно підписаний ланцюг відхиляється на перевірці видавця, ще до будь-якої логіки з hostname — а їхній діалог Add Printer і так приймає IP, якому сертифікат на *.ts.net ніколи не відповідатиме.

Тож одноразовий імпорт CA неминучий, а роль Tailscale — суто мережевий доступ: той самий тягар довіри, що й у звичайній LAN.


Дозволи та безпека

  • Нових дозволів BamDude немає. Перемикач per-VP входить у наявний дозвіл на оновлення віртуального принтера; читання статусу tailnet потребує settings:read.
  • BamDude не має поверхні авторизації Tailscale. Хто саме в tailnet — цілком справа Tailscale. BamDude виконує tailscale status --json і читає відповідь; він ніколи не автентифікується, не приєднується і нічого не змінює.
  • Код доступу VP усе одно діє. Tailscale приводить мережу до принтера; код доступу так само стереже сам принтер.
  • Оточення підпроцесу обрізане. BamDude викликає CLI лише з тими змінними ОС/шелу, які потрібні для пошуку сокета й конфігу — секрети застосунку (JWT-ключі, URL бази, пароль SMTP) не передаються.

Застереження

  • tailscaled мусить працювати на хості. Образ BamDude містить CLI, але свідомо не демон: tailscaled потребує сирого netlink, каталогу стану та потоку авторизації, які погано поєднуються зі stateless-контейнером. Монтування хостового сокета і безпечніше, і поважає твою наявну конфігурацію Tailscale.
  • Лише приватні tailnet. Виставити VP у публічний інтернет цим шляхом неможливо — для цього є режим proxy.
  • Тільки відображення. Вимкнення перемикача нічого не від'єднує — воно лише припиняє показ адреси. Ні сертифікати VP, ні SSDP-анонс, ні життєвий цикл від нього не залежать, і перемикання ніколи не перезапускає VP.

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

Картка показує Tailscale як недоступний, або перемикач нічого не відкриває:

Симптом / повідомлення в лозі Причина Виправлення
tailscale binary not found Нативна інсталяція без CLI. (Docker-образи його містять.) Встанови tailscale на хості.
Running in Docker but /var/run/tailscale/tailscaled.sock is not mounted Одноразова підказка на старті: CLI є, але демона, з яким говорити, немає. Додай монтування сокета з розділу Передумови.
Сокет змонтовано, але CLI все одно не дістає демона Користувачу контейнера не дозволено ним користуватись. sudo tailscale set --operator=<користувач-контейнера> на хості.
Tailscale not connected (no DNSName) Демон працює, але хост не приєднався до tailnet. tailscale up на хості та автентифікація.
Немає MagicDNS-імені, лише IP MagicDNS вимкнений у tailnet. Увімкни на login.tailscale.com/admin/dns. IP усе одно працює.
Картка каже «недоступно», у лозі таймаут Завислий tailscaled — виклик CLI обмежений 5 секундами. Перезапусти демон на хості.

Виклик статусу ніколи не кидає виняток: що б не сталось, картка деградує до «недоступно», а VP далі працює за своєю LAN-адресою.


Пов'язане