From 2fab8793cd33734de27999b25ae6cf1173b11fc7 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 2 Sep 2026 15:58:05 +0600 Subject: [PATCH] [2026-09-02] eagle: family/how-to/truenas-infrastructure.md personal/tech/mac-print-shared-services.md --- family/how-to/truenas-infrastructure.md | 2 ++ personal/tech/mac-print-shared-services.md | 32 ++++++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/family/how-to/truenas-infrastructure.md b/family/how-to/truenas-infrastructure.md index 3414ee59..a8745eb8 100644 --- a/family/how-to/truenas-infrastructure.md +++ b/family/how-to/truenas-infrastructure.md @@ -521,6 +521,8 @@ docker exec cups-splix sh -c "timeout 6 avahi-browse -rt -p _ipp._tcp | grep ';e > ⚠️ **2026-08-31: топология изменена.** TrueNAS больше НЕ в локальной сети (только публичный DNS `mallexxx.duckdns.org`) — из других подсетей/внешки `192.168.2.197` недостижим, и **снаружи `mallexxx.duckdns.org:631` закрыт**. НО **из самой подсети `192.168.2.x` TrueNAS достижима** (телефон `192.168.2.141` успешно печатал по `192.168.2.197:631` — CUPS access_log это подтверждает). → Samsung Mobile Print (app) печатает (висит на локальном IPP внутри подсети), а штатная Android print service с `ipp://192.168.2.197:631/...` показывала «недоступен» из-за **отсутствия mDNS/AirPrint-анонса** (avahi-daemon не запущен; `printer-dns-sd-name = no-value`). ✅ **Исправлено** (см. раздел «✅ mDNS/AirPrint анонс принтера»): cups-splix пересобран с avahi-daemon, cupsd.conf получил `Browsing On` + `BrowseLocalProtocols dnssd` → принтер анонсируется по mDNS (`mopria-certified=1.3`, IPv4 `192.168.2.197`); Android-служба теперь находит принтер сама. Детали и откат: [[mac-print-shared-services]]. +> ✅ **2026-09-02: печать ИЗВНЕ сети TrueNAS работает через SSH → cups-splix.** Хотя `mallexxx.duckdns.org:631` (IPP) снаружи закрыт, документ (PDF, 1 стр A4) успешно напечатан с клиента вне подсети: `scp` → TrueNAS `/tmp` → `docker cp` внутрь `cups-splix:/tmp` → `docker exec cups-splix lp -d Samsung_CLX-216x_Series -o media=A4 file.pdf` → job в `completed`, `Rendering completed`. CUPS сам конвертит PDF→PS (gs/pdftops есть, PPD `*cupsFilter: 0 pstoqpdl`). Полный рецепт — [[mac-print-shared-services]] (раздел «Печать PDF извне сети TrueNAS»). + ## Связанные заметки - [[truenas-access]] — SSH-доступ - [[truenas-rclone-backup]] — система бэкапов diff --git a/personal/tech/mac-print-shared-services.md b/personal/tech/mac-print-shared-services.md index a551e507..bab8cc72 100644 --- a/personal/tech/mac-print-shared-services.md +++ b/personal/tech/mac-print-shared-services.md @@ -1,9 +1,14 @@ --- type: tech topic: print -tags: [print, printer, samsung, cups, macos] -created: 2026-08-26 -updated: 2026-08-31 +tags: + - print + - printer + - samsung + - cups + - macos +created: 2026-08-26T00:00:00.000Z +updated: '2026-09-02T00:00:00.000Z' --- # Печать и общие сервисы (Mac + сеть) @@ -95,6 +100,27 @@ nc -z 192.168.2.197 631 # 631 OPEN снаружи Полный рецепт на будущее продублирован в `truenas-infrastructure.md` → раздел «Печать / cups-splix». +## ✅ Печать PDF извне сети TrueNAS (когда клиент НЕ в подсети, `mallexxx.duckdns.org:631` закрыт) + +Когда принтер физически в TrueNAS, а клиент НЕ в подсети `192.168.2.x` → прямой IPP до `:631` закрыт. Печатать через SSH `mallexxx.duckdns.org` в контейнер `cups-splix` (проверено 2026-09-02): + +```bash +# 1. Залить PDF на TrueNAS +scp -i ~/.ssh/id_rsa file.pdf truenas_admin@mallexxx.duckdns.org:/tmp/evrika_print.pdf +# 2. Скопировать внутрь контейнера +ssh -i ~/.ssh/id_rsa truenas_admin@mallexxx.duckdns.org \ + 'docker cp /tmp/evrika_print.pdf cups-splix:/tmp/evrika_print.pdf' +# 3. Отправить в очередь (CUPS сам конвертит PDF→vnd.cups-postscript→pstoqpdl; gs+pdftops в контейнере есть) +ssh -i ~/.ssh/id_rsa truenas_admin@mallexxx.duckdns.org \ + 'docker exec cups-splix lp -d Samsung_CLX-216x_Series -o media=A4 /tmp/evrika_print.pdf' +``` + +**Проверка успеха:** `lpstat -W completed | grep ""` (искомый job появляется строкой `Samsung_CLX-216x_Series- ... <дата>`), очередь пуста (`lpstat -o`), принтер `idle … Rendering completed`. access_log контейнера: `Create-Job successful-ok` + `Send-Document successful-ok`. + +**Важно:** `lp -d file.pdf` сам создаёт job (`Create-Job`) — НЕ комбинировать с отдельным print-job-id, иначе `client-error-not-found`. PPD CLX-216x принимает `application/vnd.cups-postscript` (`*cupsFilter: 0 pstoqpdl`), поэтому чистый PDF конвертится автоматически. Job в `lpstat -W completed` показывает владельцем `root` (выполняется через docker по SSH) — это нормально. + +Полный шаги: залить → `docker cp` → `docker exec cups-splix lp` → проверить `completed` → убрать временные файлы (`/tmp/...` на хосте и внутри контейнера). + ## ⚠️ ТОПОЛОГИЯ ИЗМЕНЕНА (2026-08-31) — TrueNAS больше НЕ в локальной сети TrueNAS ушла из локальной сети и доступна **только** через публичный DNS `mallexxx.duckdns.org` (внешка `90.189.160.148`). Локальный `192.168.2.197` физически **недостижим** (пинг 100% потеря) — TrueNAS не в `192.168.2.x` и не в сети телефона.