zplCloud Blog
Weblink と CLI プロキシと CloudToBrowserPrint: 実際に必要な接続はどれか
3 つの通信方式には、それぞれ別の役割があります。いずれも外向きの接続のみを使い、違いは誰が接続を保持し、何を変換できるかにあります。
原理は同じ、仕組みは別
zplCloud からラベルを実際のプリンターに届ける方法は 3 つあります。これらは日常的に混同されており、選択を誤ると切り分けに 1 日を費やすことになります。
3 つに共通する性質が 1 つあります。接続は常に、ネットワークの内側から外側へ向かって確立されます。着信ポートも、ポート転送も、VPN も、インターネットに露出したプリンターも不要です。異なるのは、どのコンポーネント がその接続を保持するのか、そして印刷ジョブがプリンターに届くまでに何ができるのかです。
Cloud Connect / Weblink - プリンター側から接続する
Weblink は Zebra 自身の仕組みで、zplCloud から構成できます。ネットワーク内のリレーコンポーネントがプラットフォームへの外向き WebSocket を維持し、プリンターはフラッシュに書き込まれた 3 つの証明書ファイル (WEBLINK2_CA.NRD, WEBLINK2_CERT.NRD, WEBLINK2_KEY.NRD) を使って mTLS で認証します。
irm "https://zplcloud.com/weblink-deploy.ps1?hostname=printer01&apikey=sk_zplcloud_XXXX" | iex
curl -fsSL "https://zplcloud.com/weblink-deploy.sh?hostname=printer01&apikey=sk_zplcloud_XXXX" | bash
スクリプトはプリンターの証明書をダウンロードし、TCP 9100 (~DY) 経由でアップロードし、Weblink の URL と NTP 用の SGD 変数を設定して、プリンターをリセットします。ホスト名がネットワーク上で解決できない場合は &ip=10.0.0.5 を追加してください。証明書の選択には引き続きホスト名が使われ、IP は TCP の接続先としてのみ使われます。
適した場面: プリンターが常設の本番機で、デザイナー、Print View、バッチジョブ、Webhook、API といったプラットフォームのあらゆる場所から到達できる必要がある場合です。設置場所が固定された Link-OS プリンターでは、これが既定の選択になります。
必要条件: Link-OS 対応プリンター。GK420 など Link-OS 以前の機種では、Weblink はまったく利用できません。
zplCloud Proxy - 自分で動かすエージェント
プロキシは zplCloud CLI の一部です。LAN 内の任意のマシン (Windows、macOS、Linux、Raspberry Pi、またはコンテナー) で動作し、外向きの SignalR 接続 1 本でプリンターをワークスペースに登録します。
curl -fsSL https://zplcloud.com/install-cli.sh | sh
zplcloud proxy --agent "Warehouse Berlin" --service-install --api-key sk_zplcloud_XXXX
プリンターへは TCP 9100 または USB で到達します。ここが決定的な違いです。USB のみのデスクトッププリンターには、自分から接続するためのネットワークスタックがありません。そのため、クラウドに載せる唯一の方法がエージェントです。エージェントは プリンタープロファイル (濃度、速度、メディア、SGD 変数) の適用、生の ZPL の送信、.zpl/.prn ファイルのフォルダー監視も行い、データハブ向けに SQL Server、MongoDB、Kafka の接続を担うこともできます。
--service-install は、Linux と Raspberry Pi では systemd ユニット (zplcloud-agent.service, Restart=always) を、macOS では launchd ジョブを、Windows ではスケジュールされたタスクを作成します。
適した場面: 多数の機器を管理している、USB や旧型のプリンターがある、拠点をまたいで一貫したプロファイルが必要、あるいは同じエージェントにデータソースも担わせたい場合です。
CloudToBrowserPrint - Web ページ向けのローカルサービス
CloudToBrowserPrint は、作業者のマシン上で動くローカルの HTTP サービスです。
http://127.0.0.1:9100 (https://127.0.0.1:9101 - needed for Safari and any https page)
LAN 内の Web ページが、/hubs/print の SignalR ハブ経由も含めて直接やり取りします。プリンターの検出 (printers.json によるネットワークプリンター、USB、Bluetooth)、形式の変換、バーコードのデコード、生ジョブの送信を行います。経路にクラウドは含まれません。ページは zplCloud への往復なしで印刷できます。
irm https://zplcloud.com/install-cloudtobrowserprint-pshell | iex
このサービスはよく知られたポートにバインドするため、展開の前に競合を確認してください。9100 は他のソフトウェアでもよく使われるポートで、すでに使用中であればサービスが知らせます。
適した場面: 自社の Web アプリケーションから利用者のすぐ隣にあるプリンターへ印刷したい場合や、印刷経路そのものにクラウド依存のないブラウザー主導の印刷を行いたい場合です。
一覧で比較
| Weblink | CLI プロキシ | CloudToBrowserPrint | |
|---|---|---|---|
| 動作する場所 | LAN 内のリレーとプリンター上の証明書 | LAN 内のマシンまたはコンテナー上のエージェント | 利用者のマシン上のローカルサービス |
| プリンターへの経路 | Zebra Weblink (mTLS) | TCP 9100、USB | TCP 9100、USB、Bluetooth |
| 印刷にクラウドが必要か | はい | はい | いいえ |
| Link-OS 以外のプリンターで動くか | 不可 | 可 | 可 |
| 形式 | プラットフォームからの ZPL | 生の ZPL | ZPL、PDF、Office、画像、バーコード |
| 追加機能 | 証明書の配備、リモート管理 | プロファイル、監視フォルダー、データハブ | 検出、変換、バーコードのデコード |
| 代表的な用途 | 固定設置の本番プリンター | 管理対象の機器群、USB、遠隔拠点 | Web アプリ、随時のデスクトップ印刷 |
選び方
- 設置場所が固定で、プラットフォームから印刷する Link-OS プリンター → Weblink。
- USB プリンター、旧型プリンター、または自分で管理する機器群 → CLI プロキシ。(USB のみの古いデスクトッププリンターと Raspberry Pi の組み合わせだけで、ひととおり完結します。これについては別の記事があります。)
- 利用者のすぐ隣のプリンターへ印刷する自社の Web アプリ → CloudToBrowserPrint。
- 実際の現場 では、たいてい 2 つを併用します。本番プリンターには Weblink、機器群とデータソースにはエージェントです。