Ubuntu 24.04 LTSを使用して、ローカルネットワーク内にあるクライアントから印刷できるプリンタサーバーを、CUPSを使って構築する方法をご紹介します。
プリンタサーバーの核となるCUPSとは?
CUPS (Common UNIX Printing System) は、LinuxやmacOSなどのUNIX系オペレーティングシステムで標準的に利用されている印刷システムです。
CUPSを利用することで、Ubuntuをプリンタサーバーとして機能させることができます。
基本的な仕組みとしては、サーバーとなるUbuntuにプリンタを登録し、他のコンピューターからの印刷ジョブを受け付けて、登録されたプリンタで印刷を行います。
CUPSのインストール
aptを使ってCUPSをUbuntuにインストールします。
$ sudo apt update $ sudo apt install cups
cpusの起動と自動起動設定を行います。
$ sudo systemctl start cups $ sudo systemctl enable cups
インストール後、CUPSサービスが正常に動作しているか確認します。
$ sudo systemctl status cups * cups.service - CUPS Scheduler Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled; preset: enabled) Active: active (running) since Sun 2025-04-20 00:00:01 JST; 13h ago TriggeredBy: * cups.socket * cups.path Docs: man:cupsd(8) Main PID: 21444 (cupsd) Status: "Scheduler is running..." Tasks: 1 (limit: 9378) Memory: 932.0K (peak: 3.0M swap: 1.4M swap peak: 1.4M) CPU: 30ms CGroup: /system.slice/cups.service `-21444 /usr/sbin/cupsd -l Apr 20 00:00:01 xxx systemd[1]: Starting cups.service - CUPS Scheduler... Apr 20 00:00:01 xxx systemd[1]: Started cups.service - CUPS Scheduler.
「Active: active (running)」と表示されていれば正常に起動しています。
リモートアクセスを許可するためのCUPS設定
初期状態では、CUPSの設定はlocalhostからしか行えません。
他のコンピューターからWebインターフェースを通じて管理できるように、CUPSの設定ファイル「/etc/cups/cupsd.conf」をテキストエディタ編集します。
$ sudo cp -p /etc/cups/cupsd.conf /etc/cups/cupsd.conf_$(date "+%Y%m%d_%H%M%S") $ sudo vi /etc/cups/cupsd.conf
編集内容
ファイルの編集内容は以下のとおりです。
- Listen localhost:631をPort 631に変更
- Browsing OffをBrowsing Onに変更
- <Location />ディレクティブにAllow @LOCALを追加
- <Location /admin>ディレクティブにAllow @LOCALを追加
Listen localhost:631をPort 631に変更
「Listen localhost:631」という行を探し、行頭に「#」を付けてコメントアウトし、「Port 631」という行を追加します。
これにより、すべてのインターフェースからの接続を受け付けるようになります。
# Listen localhost:631 Port 631
Browsing OffをBrowsing Onに変更
「Browsing Off」の行頭に「#」を付けてコメントアウトし、「Browsing On」という行を追加します。
これにより、ネットワーク上にプリンタ情報がブロードキャストされます。
#Browsing Off Browsing On
<Location />ディレクティブにAllow @LOCALを追加
「Order allow,deny」の次に「Allow @LOCAL」を追記し、ローカルネットワークからのアクセスを許可します。
「@LOCAL」は「127.0.0.1」「[::1](IPv6のループバック)」および「サーバと同じネットワーク」からのアクセスを許可する設定です。
# 変更前 <Location /> Order allow,deny </Location> # 変更後 <Location /> Order allow,deny Allow @LOCAL </Location>
<Location /admin>ディレクティブにAllow @LOCALを追加
「Order allow,deny」の次に「Allow @LOCAL」を追記し、ローカルネットワークからのアクセスを許可します。
# 変更前 <Location /admin> Order allow,deny </Location> # 変更後 <Location /admin> Order allow,deny Allow @LOCAL </Location>
※より厳密にアクセスを制御したい場合は、「Allow from 192.168.1.0/24」といったのように特定のIPアドレス範囲を指定することもできます。
設定反映
cupsを再起動して設定を反映させます。
$ sudo systemctl restart cups
TCP/UDP 631番ポート通信許可設定
ファイアウォール (ufw) を有効にしている場合は、CUPSが使用するポート (TCP/UDP 631) での通信を許可する必要があります。
$ sudo ufw allow 631
lpadminグループにユーザー登録
CUPSのWebインターフェースでプリンタを登録する際には認証が必要です。
この認証には、「lpadmin」グループに所属しているUbuntuのユーザーアカウント(ユーザー名とパスワード)を使用するので、認証に使用したいユーザを以下のコマンドで「lpadmin」グループに追加します。
$ sudo usermod -aG lpadmin ユーザー名
avahi-daemonインストール
iOSやAndroidデバイスなどが、このプリンタサーバーをネットワーク上で自動的に発見できるようにするため、「avahi-daemon」をインストールします。
これは、ローカルネットワーク内でサービス(プリンタ共有など)を通知・発見するためのデーモンです。
$ sudo apt install avahi-daemon
インストール後、avahi-daemonの起動と自動起動設定を行います。
$ sudo systemctl start avahi-daemon $ sudo systemctl enable avahi-daemon
UDP 5353番ポート通信許可設定
ファイアウォールが有効になっている場合は、avahi-daemonが通信に使用するUDPの5353番ポートの通信許可設定を行います。
$ sudo ufw allow 5353/udp
CUPSへのプリンタ登録
Webブラウザで「http://サーバーのIPアドレス:631」に接続して、CUPSのWebインターフェースにアクセスします。
あとは、以下の手順でプリンターを追加してください。
- 「管理」をクリック
- 「プリンター」セクションにある「プリンターの追加」ボタンをクリック
- ログインの認証(ユーザー名とパスワード)を求められた場合は、lpadminグループに追加したUbuntuのユーザーアカウント情報を入力しログインボタンをクリック
- 追加したいプリンタを選択し「続ける」ボタンをクリック
- 新しいプリンターの追加セクションで、プリンターの「名前」「説明」「場所」を入力し、「このプリンターを共有する」にチェックをいれて「続ける」ボタンをクリック
- 適切なプリンタの「メーカー」と「モデル」を選択し「プリンターの追加」ボタンをクリック
- 正常にプリンターがされた場合は、その旨のメッセージが表示されます
適切なモデルが見つからない場合
プリンターを追加する際に適切な「モデル」が一覧にない場合は、以下の方法を試してみてください。
- プリンタメーカーのウェブサイトからドライバをダウンロードしてインストール
- PPD(PostScript Printer Description)ファイルをダウンロードしてきて、「ファイルを選択」ボタンをクリックしてアップロード
- 「Generic」(汎用)ドライバや「Raw Queue」(ドライバ処理をクライアントに任せる)を選択
PPDファイルについて
Mac用のプリンタドライバに
テストプリント
プリンターの登録が完了しましたら、テストプリントを行って正常に印刷できるか試してみてください。
上部メニューの「プリンター」をクリックし表示された画面の、「キュー名」部分に表示されているプリンターをクリックします。
プリンターの詳細情報が表示された画面が表示されるので、左側のメニューから「テストページの印刷」を選択します
これでテストページの印刷が始まります。
コメント