LoginSignup
10
16

More than 5 years have passed since last update.

Raspberry PiをAirPrintサーバーにして親孝行する

Last updated at Posted at 2017-02-28

私の両親は共にiPhoneユーザーですが、残念ながらプリンターがAirPrintに対応していません。
そのため、Raspberry PiをAirPrintサーバーにしてプレゼントして親孝行をする作戦です。

準備するもの

  • Raspberry Pi 3
  • ケース
  • 電源
  • microSDカード

OSの選択

無難にRaspbianを選択しました。
本日時点の最新バージョンはこれでした。

RASPBIAN JESSIE WITH PIXEL
Version:January 2017
Release date:2017-01-11

OSインストール

microSDカードにインストールします。

Windowsの場合だと、「DD for Windows」を使う方法が一般的ですが、変わった方法として、「Chromebook リカバリ ユーティリティ」を使った方法を紹介します。

Chromebook リカバリ ユーティリティ

名前の通り、Chromebookをリカバリするときに使うツールです。
Chromeアプリですので、Chrome ウェブストアからインストールしてください。

image

インストール手順

  1. RaspbianのOSイメージをダウンロード、展開します。
  2. Chromebook リカバリ ユーティリティを起動します。
  3. 画面右上のギアアイコンから「ローカルイメージを使用」を選択します。
  4. OSイメージファイルを選択する。 ※拡張子「*.bin」でフィルタリングされているので、注意
  5. 次々進んでインストールを完了させます。

SSHの有効化

最近のRaspbianはSSHがデフォルトで無効になっているようです。
(リリースノートによると2016/11/25から)

bootパーティションにsshというファイルを作成すると有効にできますので、
ファイル作成します。

WindowsのエクスプローラーでSDカードのドライブを開き、
右クリック→新規作成→「テキストドキュメント」
ファイル名を「ssh」に変更

起動!

microSDカードをRaspberry Piに差し替え、電源を入れます。
Wi-Fiの設定はまだなので、一旦は有線Lanも接続します。

ログイン

SSHでログインします。

ssh pi@raspberrypi.local

Windowsで名前解決ができない場合は、iTunesかBonjour Print Services をインストールしましょう。
https://support.apple.com/kb/DL999?locale=ja_JP&viewlocale=ja_JP

設定

Raspberry Piの初期設定です。設定の詳細は他の方の投稿を参考にしてください。

sudo raspi-config

変更したもの
* パーティションの拡張
* ロケールを「en_US.UTF-8」と「 ja_JP.UTF-8」に変更。
* VNCの有効化

インストール&設定

OSアップデート

まずは手動で更新します。

sudo apt-get update    # 取得元からパッケージインデックスファイルの再同期を行うのに使用します。
sudo apt-get upgrade    # 現在システムにインストールされている全パッケージの最新バージョンを、/etc/apt/sources.list に列挙した取得元からインストールするのに使用します。
sudo apt-get dist-upgrade    # upgrade の機能に加え、新バージョンのパッケージに対する依存関係の変更を知的に操作します。

OS自動更新設定

Windows Update風に自動更新する設定をします。
https://wiki.debian.org/UnattendedUpgrades

sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

ウイルス対策ソフト

ClamAV
https://www.clamav.net/

sudo apt-get install clamav

このあとにfreshclamを実行しようとか、root権限にしようとか手順がよく紹介されていますが、どうも、勝手にサービス起動し、ウイルス定義ファイルの更新もしてくれているような。。

 service clamav-freshclam status
● clamav-freshclam.service - ClamAV virus database updater
   Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled)
   Active: active (running) since 火 2017-02-28 22:41:39 JST; 17min ago
     Docs: man:freshclam(1)
           man:freshclam.conf(5)
           http://www.clamav.net/lang/en/doc/
 Main PID: 7190 (freshclam)
   CGroup: /system.slice/clamav-freshclam.service
           └─7190 /usr/bin/freshclam -d --foreground=true

ログをAmazon CloudWatchに転送

急にAWSが出てきますが、今回はRaspberry Piを遠隔地(車で30分先の実家ですが)に配置するため、ログをAWSに転送したいと思います。
IAMユーザーの作成などは端折ってます。

CloudWatch Logs エージェント
http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
sudo python ./awslogs-agent-setup.py --region ap-northeast-1

とりあえず、 /var/log/auth.logのログをアップロードしてみます。
何のログだろう。

 Launching interactive setup of CloudWatch Logs agent ...

Step 1 of 5: Installing pip ...DONE

Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... DONE

Step 3 of 5: Configuring AWS CLI ...
AWS Access Key ID [None]: 「AWS Access Key ID」を入力
AWS Secret Access Key [None]: 「AWS Secret Access Key」を入力
Default region name [ap-northeast-1]:
Default output format [None]:

Step 4 of 5: Configuring the CloudWatch Logs Agent ...
Path of log file to upload [/var/log/syslog]: /var/log/auth.log
Destination Log Group name [/var/log/auth.log]:

Choose Log Stream name:
  1. Use EC2 instance id.
  2. Use hostname.
  3. Custom.
Enter choice [1]: 2

Choose Log Event timestamp format:
  1. %b %d %H:%M:%S    (Dec 31 23:59:59)
  2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36)
  3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54)
  4. Custom
Enter choice [1]: 1

Choose initial position of upload:
  1. From start of file.
  2. From end of file.
Enter choice [1]: 2
More log files to configure? [Y]: N

Step 5 of 5: Setting up agent as a daemon ...DONE


------------------------------------------------------
- Configuration file successfully saved at: /var/awslogs/etc/awslogs.conf
- You can begin accessing new log events after a few moments at https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logs:
- You can use 'sudo service awslogs start|stop|status|restart' to control the daemon.
- To see diagnostic information for the CloudWatch Logs Agent, see /var/log/awslogs.log
- You can rerun interactive setup using 'sudo python ./awslogs-agent-setup.py --region ap-northeast-1 --only-generate-config'
------------------------------------------------------

なぜかサービスが有効にならないので、自分でサービス有効化&起動

sudo systemctl enable awslogs
sudo service awslogs start

最終的にこんな感じにしました。

sudo cat /var/awslogs/etc/awslogs.conf
[/var/log/auth.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/auth.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/auth.log
[/var/log/clamav/freshclam.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/clamav/freshclam.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/clamav/freshclam.log
[/var/log/cups/error_log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/cups/error_log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/cups/error_log
[/var/log/unattended-upgrades/unattended-upgrades.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/unattended-upgrades/unattended-upgrades.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = end_of_file
log_group_name = /var/log/unattended-upgrades/unattended-upgrades.log

プリントサーバー

本題です。

CUPS
https://www.cups.org/

sudo apt-get install cups
sudo apt-get install printer-driver-all    # プリンタードライバー

プリンター管理ができるようにグループ追加

sudo gpasswd -a pi lpadmin

VNCでログインし、Chromiumブラウザで https://localhost:631 にアクセスします。

VNCもChromeアプリで提供されています。
https://chrome.google.com/webstore/detail/vnc%C2%AE-viewer-for-google-ch/iabmpiboiopbgfabjmgeedhcmjenhbla

image

怒られても気にしない。

詳細設定 → localhostにアクセスする(安全ではありません) をクリック

image

何だこの解像度は。
設定を進めましょう。

  • [管理]タブを選択
  • [サーバー]→[サーバー設定]
    • 「このシステムに接続されているプリンターを共有」にチェック
    • 「リモート管理を許可」にチェック
    • 「所有者以外のユーザーにもジョブのキャンセルを許可」にチェック
  • 「設定の変更」ボタンをクリック
  • ログインダイアログが出たら、piユーザーのアカウント/パスワードを入力

これで他のパソコンからもアクセスできます。

  • [管理]タブを選択
  • [プリンター]→[プリンターの追加]ボタンクリック
  • 設定したいプリンターを選択
  • 「このプリンターを共有する」にチェック

今回は実家に設置するので印刷に失敗したら、ジョブをキャンセルするようにします。
「デフォルトオプション」の中の「ポリシー」を選び、エラーポリシーを「abort-job」にします。

その他

最終的にはVNCもSSHも無効にしようかと計画中。
そしてTeamViewerをインストールしようかな。
https://www.teamviewer.com/ja/download/linux/

参考サイト

http://qiita.com/torch32171/items/c816acd5afa45fddabfe
http://qiita.com/tomiyan/items/77c7794074f9445ea548
http://qiita.com/ryosy383/items/ac450750e9419b5bcf75
http://orangain.hatenablog.com/entry/unattended-upgrades
http://l-chika.hatenablog.com/entry/2017/01/27/190853

10
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
16