長らくお世話になっていたmstdn.jpが2020年6月末で閉鎖ということで、自立すべくラズパイを購入。


 Raspberry Pi 4BはRAMが4GBまで増強されており安定した稼働が期待できる。


・購入

 まず購入品リストである。サーバーとして稼働するのでモニターケーブルは買わずにヘッドレスでセットアップする。値段は全部税抜き。

品名 備考 値段
Raspberry Pi 4B RAM 4GB ¥6262
ACアダプタ USB-C, 5V3A ¥1250
MicroSDカード 64GB ¥1000
ケース ヒートシンク・ファン付き ¥2000

 以上合計で¥10512(税抜)である。

・組み立て

 説明書通りに組み立てる。

・ブートメディア作成

 適当に公式サイトからRaspbian(最近Raspberry Pi OSに改名したらしい)をダウンロードする。本体が対応しているかは各自きちんと確かめてからダウンロードしよう。今回はデスクトップ環境を使わないので一番容量が小さいLiteでよろしい。ダウンロードできたらzipファイルを解凍して、適当なソフト(公式のドキュメントに載っている)でSDカードに焼く。SDカードは事前にフォーマットしておこう。ざっと2~3分で書き込みが完了する。

 書き込みが完了したら、ヘッドレスセットアップ用に2つほど設定ファイルを追加する。
 まずはSSH接続ができるようにするためのssh(拡張子なし)という名前のファイル。中身は空で良い。
 もう1つは無線LANに接続するためのwpa_supplicant.confファイルで、中身は以下のような感じ。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSID"
    psk="password"
}

 もちろんSSIDpasswordは各自のアクセスポイントのものに書き換えておく。
 上記2つのファイルはSDカードのルートに置いておく。
 ここまで出来たらSDカードを取り出してラズパイにぶっ刺す。

・起動

 SDカードがラズパイに刺さったら、電源ケーブルを挿す。赤のランプが点灯し、緑のランプがチカチカしてしばらくすると点灯するはずだ。そうしたらSSH接続を試みる。Windows10からはコマンドプロンプトからSSHが使えるようになったので以下のコマンドをそのままコマンドプロンプトから実行する。10以前の(そろそろサポートが切れそうな)Windowsを使っている人はSSHクライアント上で実行する。

> ssh pi@raspberrypi.local

 そうしたらパスワードを要求されるので、初期パスワードであるraspberryを入力してログインする。そうすると

pi@raspberrypi:~ $

となってラズパイ上のターミナルに入れる。とりあえず

$ sudo apt update
$ sudo apt upgrade -y

でソフトウェアを更新しておく。これはまあまあ時間がかかるのでまったり(*´ω`)待っておく。

 また、いつまでもpiユーザーで作業するのも嫌なので、新規にユーザーを作る。ここではsrという名前にしておこう。

$ sudo adduser sr

 そうするとパスワードの入力を求められるので入力・確認する。その後なんかユーザーの情報を入力を求められるが、全部空でいい。そしたらsudo権限を付けてやる。

$ sudo gpasswd -a sr sudo

 一旦ログアウトして、さっき作ったユーザーsrで入りなおす。

$ logout
> ssh sr@raspberrypi.local

・IPの固定

 続いてはIPの固定をする。事前にルーターの設定を確認しておこう。ここではルーターのIPが192.168.128.1, サブネットマスクが255.255.255.0, 動的IP(DHCP)の範囲が192.168.128.100~192.168.128.200とする。静的IPはこの範囲外に置く必要があるので、適当に192.168.128.82を割り当てることにしよう。

 /etc/dhcpcd.confを編集し、固定IPの設定を追記する。デフォルトではExample static IP configuration: と書かれた箇所があるので、その付近に書いておくとよいだろう。

interface wlan0
static ip_address=192.168.128.82/24
static routers=192.168.128.1
static domain_name_servers=192.168.128.1 8.8.8.8

 DNSサーバーの8.8.8.8とかはお好みでいい。そしたら再起動して、192.168.128.82で接続できるかを試してみる。

$ sudo shutdown -r now
> ssh sr@192.168.128.82

 接続できればOK。

・key-basedログインにする

 ログインの度にパスワードを打っているのでは面倒臭いし、パスワードベースのログインはセキュリティ的に微妙なので、ここは思い切って公開鍵認証方式に切り替えてしまおう。まずはキーペアを生成する。(余談: 最初は既存のPGPのキーペアでやろうとしたが全然形式が違ったっぽくてダメだった)

> ssh-keygen -t ed25519 -f .ssh/id_ed25519

-fオプションで鍵ファイルの生成場所を指定するが、ホームディレクトリ下の.sshフォルダに作るのが一般的であろう。これを実行すると、秘密鍵ファイルと、末尾に.pubがついた公開鍵ファイルが生成される。公開鍵ファイルの方をラズパイに転送しておく。

> scp .ssh/id_ed25519.pub sr@192.168.128.82:/home/sr/

 続いてラズパイ側の設定をする。まずは先ほど転送した公開鍵ファイルを.sshフォルダ内のauthorized_keyファイルに書き込み、権限設定をする。そうしたら元のファイルは要らないので消してしまう。


$ mkdir .ssh
$ cat id_ed25519.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_ed25519.pub

 続いて/etc/ssh/sshd_configを編集する。#でコメントアウトされている部分から以下の4項目を探して編集する。


PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

 ただしPasswordAuthenticationをnoにしてしまうと、万が一設定ファイルに問題があった時にssh接続が完全に不可能になり1からやり直し(SDカードのフォーマットから)なので、心配な人はPasswordAuthenticationは保留して接続テストをし、ちゃんと接続できたあとで書き換えるとよい。ちなみに1回やらかした。

 編集したら

$ sudo /etc/init.d/ssh restart

でSSHサーバを再起動してからSSHを繋ぎなおす。パスワードを入力せずにログイン出来たら成功である。


 とりあえず準備は整ったので次回はネットワークの設定をしていく。

【Raspberry Pi】mastodonインスタンスを建てる(ヘッドレスセットアップ編)

投稿ナビゲーション


コメントを残す

メールアドレスが公開されることはありません。