古いハードウェアを蘇らせる:CUPSでLinuxプリントサーバーを構築する

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

専用のLinuxプリントサーバーを構築するメリット

昨年、私はデスクの後ろのケーブルがスパゲッティ状態になっているのに嫌気がさしました。古いHP LaserJet P1102と高性能なEpsonのフォトプリンターがあり、これらは完璧に動作していましたが、Wi-Fi機能がありませんでした。

ネットワークアダプターに200ドルを費やしたり、まだ使えるハードウェアを買い替えたりする代わりに、物置に眠っていた4GBのRAMを搭載した埃を被ったDell OptiPlexを取り出しました。LinuxとCUPS(Common Unix Printing System)をインストールすることで、その「電子廃棄物」を専用のプリントサーバーに変えたのです。現在、それは一度も不具合を起こすことなく、オフィスのすべてのドキュメントを管理しています。

CUPSはLinuxにおける印刷のバックボーンです。Internet Printing Protocol (IPP) を使用してキューを管理し、ネットワーク全体でハードウェアを共有します。さらに、モバイルデバイス向けのAirPrintも有効にできます。180日間の連続稼働を経て、このセットアップは多くの最新の「スマート」プリンターに内蔵されているネットワーク機能よりも信頼性が高いことが証明されました。

基本インストール:迅速な立ち上げ

コアサービスは約3分で稼働させることができます。今回はUbuntu 22.04を使用しましたが、これらの手順はほとんどのDebianベースのシステムで動作します。

1. CUPSパッケージのインストール

まず、リポジトリを更新し、最新のCUPSバイナリを取得します:

sudo apt update
sudo apt install cups -y

2. サービスの管理

停電や再起動後に自動的に開始されるように、サービスを有効にします:

sudo systemctl enable --now cups

3. リモート管理の開放

標準的なCUPSのインストールでは、Webインターフェースlocalhost:631 に制限されています。ノートPCからサーバーを管理するには、CUPSにネットワークをリッスンするように指示し、ユーザーに管理権限を付与する必要があります:

sudo cupsctl --remote-admin --remote-any
sudo usermod -aG lpadmin $USER

ブラウザで https://[サーバーのIPアドレス]:631 にアクセスしてダッシュボードを表示します。ブラウザは自己署名証明書をリスクとして警告しますが、「詳細設定」をクリックしてダッシュボードに進んでください。

日常的な運用のための設定の強化

基本的な設定はホームラボには適していますが、忙しいオフィスではさらなる安定性が必要です。主な設定は /etc/cups/cupsd.conf にあります。

本番サーバーでは、100MBを超える大きなPDFファイルが時折遅延を引き起こすことに気づきました。メモリ割り当てを調整して、印刷デーモンを優先するようにしました。これらの変更を行って以来、サーバーは高解像度の画像バッチを大幅に速く処理できるようになりました。

設定の微調整

設定ファイルを開いて、特定のアクセスルールを設定します:

sudo nano /etc/cups/cupsd.conf

Find the Listen ディレクティブを探します。セキュリティを向上させるため、サーバーを不特定のIPではなく、静的な内部IPに制限します:

# 特定のローカルネットワークIPにバインドする
Listen 192.168.1.50:631

<Location /> ブロックを確認して、ローカルデバイスのみが管理パネルにアクセスできることを確認します:

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

CLI経由でのプリンターの追加

Web UIは素晴らしいですが、一括作業にはコマンドラインの方が高速です。PostScript Printer Description (PPD) ファイルがある場合は、次のコマンドを使用して即座にプリンターを追加できます:

lpadmin -p Office_LaserJet -E -v usb://HP/LaserJet%20P1102 -m everywhere

-m everywhere フラグは大幅な時間の節約になります。これは IPP Everywhere を利用し、特定のドライバーを探すことなく最新のプリンターを自動的に構成します。

モバイル印刷とAirPrint

チームにとって本当に感動的だったのは、iPhoneから直接印刷できるようになったことです。これは、プリンターの場所をWi-Fiネットワーク全体に通知する Avahi (mDNS) を介して動作します。

Avahiのインストール

sudo apt install avahi-daemon -y
sudo systemctl enable --now avahi-daemon

Avahiがアクティブになると、CUPSはプリンターの通知を開始します。同じサブネット上のiPhoneユーザーの印刷メニューには、自動的に「Office_LaserJet」が表示されます。この機能だけで、内部からの「プリンターの使い方がわからない」というサポート依頼が約40%減少しました。

印刷クォータ(制限)の設定

共有スペースでは、一人が個人のプロジェクトでトナーカートリッジを使い果たしてしまうことがよくあります。CUPSでは、ユーザーごとにハードリミットを設定できます:

lpadmin -p Office_LaserJet -o job-quota-period=604800 -o job-page-limit=150

この特定のコマンドは、ユーザーを7日間で150ページまでに制限します。

本番運用6ヶ月から得られた教訓

このシステムを管理することで、ドキュメントでは省略されがちなことがいくつか分かりました。これらのヒントは、トラブルシューティングの時間を節約するのに役立ちます:

  • IPアドレスを固定する: 静的IPアドレスを使用してください。ルーターがDHCP経由でサーバーのIPを再割り当てすると、オフィスのすべてのコンピュータがプリンターへの接続を失います。
  • Ghostscriptを最新の状態に保つ: CUPSは複雑なPDFのレンダリングに Ghostscript を使用します。印刷が文字化けしたり、フォントが欠落したりする場合は、通常 sudo apt upgrade ghostscript で解決します。
  • ログを確認する: ジョブが消えてしまった場合は、推測せずに /var/log/cups/error_log を確認してください。ほとんどのエラーは /var/spool/cups ディレクトリの権限の問題に起因します。
  • 汎用ドライバーの活用: 特定のドライバーが見つからない場合、「Generic PCL」または「Generic PostScript」オプションが、オフィスプリンターの10台中9台で動作します。
  • PDFが最適: チームにはPDFから印刷することを勧めてください。WordやExcelの生ファイルは、ネットワーク経由で送信される際にフォーマットが崩れることがあります。

キューのクリア

破損したファイルが原因でオフィス全体の印刷が止まってしまうことがあります。サーバーを再起動しないでください。cancel コマンドを使用してシステムをフラッシュします:

# 特定のプリンターのすべてのジョブをクリアする
cancel -a Office_LaserJet

# サーバー上のすべてのジョブをクリアする
cancel -a

CUPSサーバーは、基本的には「一度設定すればあとはお任せ」のツールです。たまに発生する紙詰まりの解消を除けば、ソフトウェアはネットワークの中で最も信頼できる部分の一つであり続けています。これは、コストを節約し、まだ十分に使えるハードウェアを埋立地から守る、やりがいのあるプロジェクトです。

Share: