AirPrint非対応プリンタのプロキシサーバを立てる(Docker)

自宅のプリンターはEP-802Aという2009年発売のものを未だに使用しています.
壊れないのでそのまま使い続けてきたのですが, このプリンターはiOSから印刷を直接可能なAirPrintに非対応となっています.
直接印刷できないのは不便と言われてしまったので, AirPrintの印刷を代理で引き受けて印刷してくれるプロキシサーバを立てようと思います.

AirPrintのプロキシサーバプロジェクト

プロキシサーバをDockerで動かせるプロジェクトが既に存在しています.
docker-cups-airprint
それをARM64(Raspberry Pi向け?)でも動くように変更したと思われるフォークプロジェクトに
docker-composeのスクリプトがあったのでこちらを使用したいと思います.
cups-avahi-airprint

cups-avahi-airprintの導入

自宅のサーバにはdocker-composeが導入済みなので適当にクローンして実行します.

1
2
3
4
cd ~/
git clone git@github.com:chuckcharlie/cups-avahi-airprint.git
cd cups-avahi-airprint
docker-compose up

(状況を確認したいのでフォアグラウンドで実行した)
準備され起動が完了したらプリンタのセットアップを行います.

http://<dockerhost>:631/にアクセスします.
(ポート開放は忘れずに)
日本語化されているのには驚きました.
cups_setup_home

上部の管理に移動するとBASIC認証が求められます.
クローンしたまま起動した場合はcups/cupsで入れます.
色々と試した結果プリンターの追加を選択.
cups_setup_menu
「AppSocket/HP JetDirect」を選択.
cups_setup_addprinter
アドレスには「socket://<PRINTERIP>:9100」を入力.
cups_setup_addr
必要事項を記入し共有にもチェック.
cups_setup_printerinfo

ここでメーカーを指定して型番を選択すれば追加は完了です.
が, EP-802Aは存在しなかったので似ている「Epson EP 801A - CUPS+Gutenprint v5.3.4 Simplified」を選択しました.
(EP-801Aでも複数ありますがこれはiOSから検索ができたのでうまくいかない場合はどれか試すと良いかもしれない)
cups_setup_maker

これで導入は完了です.

導入後のテスト

プリンターの詳細ページからテストページの印刷を選択するとテストページが印刷されます.
これでCUPS<->プリンター間の接続は確認できました.
cups_testprint

次にiOSから印刷を試します.
iosprint
インクの情報まで見れるようです.
iosprinterinfo
無事印刷できました.

ただ時間が立つとiOSからプリンターの検出ができなくなっており, その点は今後の課題です.

関連記事