diff --git a/family/how-to/truenas-infrastructure.md b/family/how-to/truenas-infrastructure.md index ccc044cf..4bd061c9 100644 --- a/family/how-to/truenas-infrastructure.md +++ b/family/how-to/truenas-infrastructure.md @@ -417,6 +417,29 @@ nc -z 192.168.2.197 631 # проверить порт наружу - Принтер: `usb://Samsung/CLX-216x%20Series?serial=9566BAGQ213134Z.&interface=1` (USB ID `04e8:3425` Samsung CLX-216x). - Порт 631: открыт наружу после подъёма. +### ✅ mDNS/AirPrint анонс принтера — включён 2026-08-31 (Android print service видит принтер) + +Проблема: Android **штатная служба печати** (в отличие от Samsung Mobile Print, который ходит прямо по IP) ищет принтер **только через mDNS/Bonjour** (`_ipp._tcp.local`). CUPS не анонсировал: в контейнере не было `avahi-daemon`, а `printer-dns-sd-name` в IPP был `no-value` → Android помечал принтер «недоступен», даже добавленный вручную по IP. + +**Решение (выполнено):** пересобрали cups-splix — теперь запускает `dbus-daemon` + `avahi-daemon` рядом с cupsd через `entrypoint.sh`, и в `cupsd.conf` включено `Browsing On` + `BrowseLocalProtocols dnssd`. После этого CUPS регистрирует принтер в avahi → mDNS-анонс с **`mopria-certified=1.3`** на IPv4 `192.168.2.197` физического интерфейса `enp3s0`. Android (Mopria) теперь находит принтер сам в локальной сети. + +**Что изменилось в конфиге** (папка `/mnt/RED_2TB/docker/cups/`): +- `Dockerfile`: добавлен `avahi-daemon` в apt, написан `entrypoint.sh`, `ENTRYPOINT` вместо `CMD` (`.old` образ сохранён как `cups-splix-old`). +- `entrypoint.sh`: стартует `dbus-daemon --system`, затем `avahi-daemon --no-drop-root`, затем `exec cupsd -f`. +- `data/cupsd.conf`: `Browsing Off` → `Browsing On` + добавлена строка `BrowseLocalProtocols dnssd` (бэкап `cupsd.conf.pre-avahi`). + +**⚠️ Важный питфолл:** после правки конфига НЕ использовать `docker restart cups-splix` — он убивает avahi-daemon (defunct), перед новым подъёмом обязателен **`docker stop cups-splix && docker rm cups-splix && docker compose up -d`** (полный пересоздание, чтобы entrypoint перевыполнился с нуля). + +**Проверка анонса:** +```bash +docker exec cups-splix sh -c "timeout 6 avahi-browse -rt -p _ipp._tcp | grep ';enp3s0;IPv4;'" +# должно показать: ... Samsung\032CLX-216x... truenas.local;192.168.2.197;631; "mopria-certified=1.3" ... +``` + +**Бэкап конфига (2026-08-31):** `/mnt/RED_2TB/docker/cups/backup_20260831-003619.tar.gz` (md5 `0e303a6a57ae767d1e14cd72c8039fe4`) — tar из /etc/cups, /var/spool/cups, /var/cache/cups. + +> Диагностика и полное объяснение: [[mac-print-shared-services]] + > ⚠️ **2026-08-31: топология изменена.** TrueNAS больше НЕ в локальной сети (только публичный DNS `mallexxx.duckdns.org`). `192.168.2.197` из телефона/внешки недостижим, и **снаружи `mallexxx.duckdns.org:631` закрыт**. Подтверждено SSH: `cups-splix` **Up**, принтер idle/enabled/accepting, CUPS слушает `0.0.0.0:631`, но наружу не проброшен. → Samsung Mobile Print (app) печатает (у него адрес вписан вручную/закэширован), а штатная Android print service с `ipp://192.168.2.197:631/...` показывает «недоступен» (ожидаемо, локального пути нет). **Дополнительно (2026-08-31):** корень «недоступен» в штатной службе — не только сеть, но и **отсутствие mDNS/AirPrint-анонса** (avahi-daemon не запущен; `printer-dns-sd-name = no-value`). План исправления (новый Dockerfile + entrypoint с avahi, бэкап, образ собран) — в [[mac-print-shared-services]] раздел «PLAN + ПРАВКИ»; пересоздание контейнера ждёт OK Alex. Подробный разбор: [[mac-print-shared-services]]. ## Связанные заметки diff --git a/personal/tech/mac-print-shared-services.md b/personal/tech/mac-print-shared-services.md index bfdaab5e..20c49527 100644 --- a/personal/tech/mac-print-shared-services.md +++ b/personal/tech/mac-print-shared-services.md @@ -34,7 +34,6 @@ created: 2026-08-26 ## ✅ НаСТОЯЩИЙ ДИАГНОЗ (2026-08-26, подтверждено SSH на TrueNAS) **Корень проблемы: cups-splix контейнер НЕ запущен на TrueNAS.** - - На TrueNAS **нет ни одной работающей службы печати**: `lpstat`/`cupsd` в системе не установлены, порт 631 закрыт (и локально, и снаружи). - Ни одного docker-контейнера по печати в `docker ps` нет (cup/sprint/ipp — пусто). **Официальный список контейнеров** (docker ps -a): immich(redis/server/postgres), modbus-bridge, mbusd, zigbee2mqtt, webdav, vless-proxy, hermes-taiga, portainer(-mcp), homeassistant, caddy, watchtower, transmission, syncthing, ser2net, rclone, nodered, mosquitto, library, inpxer, inpx-web, gitea, filebrowser. **`cups-splix` отсутствует.** - Образ `cups-splix` не собран (`docker images | grep cups|splix` → пусто).