はじめに
Raspberry Piを購入したのでRaspbian Buster Liteを導入してサーバーを構築して遊んだ記録である。
今回はサーバー用途のヘッドレス運用を行うため、基本的にRaspberry PiへはSSHで接続して作業を行っている。
作業環境はWindows 10 Pro 1909 64bitのPCで、SSHクライアントはRLoginを使用した。
今回セットアップしたRaspberry Piは3B+で、Raspbianのバージョンは10.3(Buster)。
Raspbian Lite導入
ダウンロード
Raspberry Pi 公式サイトの「Download Raspbian for Raspberry Pi」より「Raspbian Buster Lite」をダウンロードする。
microSDへ書き込み
公式サイトでダウンロードできるのはディスクイメージのZIPアーカイブなので展開しておくこと!
RaspbianのディスクイメージをmicroSDに書き込む。
作業PCがWindowsの場合は下記のソフトウェアが使えました。
SSH有効化
ヘッドレス運用の場合はこの操作を忘れると操作できなくなるのでやっておくこと!
microSDのbootパーティション直下にssh
という名前の空のファイルを作成する。
Windowsの場合の手順は下記の通り。
- エクスプローラーでmicroSDのbootパーティションを開く
- 右クリックをして新規作成でテキストドキュメントを作成
- ファイル名を
ssh
に変更
Wi-Fi無効化
用途によってはWi-Fiが不要な場合があるので、そのときは無効化しておくとよい。
無効化するにはmicroSDのbootパーティション直下のconfig.txt
をメモ帳等のテキストエディターで開き下記内容を追記する。
・・・
dtoverlay=pi3-disable-wifi
起動
- Raspberry PiのmicroSDスロットにRaspbian Liteのディスクイメージを書き込んだmicroSDカードを挿入
- Raspberry Piに電源を接続
- (ある場合は)電源スイッチをON
初期設定
ソフトウェア更新
RaspbianはDebian系のLinuxディストリビューションなのでapt
を使用してインストールされているソフトウェアの更新を行う。
sudo apt update && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean
ソフトウェア更新自動化
ソフトウェア更新を自動化するにはunattended-upgrades
パッケージを使用する。
sudo apt install unattended-upgrades
設定は/etc/apt/apt.conf.d/50unattended-upgrades
を編集して行う。
Raspbianには当てはまる項目がないので、Origins-Pattern
に"o=${distro_id},n=${distro_codename}";
を追加する。
・・・
Unattended-Upgrade::Origins-Pattern {
・・・
"o=${distro_id},n=${distro_codename}";
・・・
}
・・・
Raspberry Pi設定ソフトウェア
raspi-config
を使用してRaspberry Piの設定を行う。
sudo raspi-config
とりあえずやっておきたい設定は下記の通り。
デフォルトユーザーのパスワード変更
メニューのChange User Passwword
を選択して指示に従い設定する。
ホスト名設定
メニューのNetwork Options
→Hostname
を選択して指示に従い設定する。
ロケール設定
メニューのLocalisation Options
→Change Locale
を選択して指示に従い設定する。
日本語を使うのでja_JP.UTF-8
を選択し、デフォルトのロケールをja_JP.UTF-8
に設定する。
タイムゾーン設定
メニューのLocalisation Options
→Change Timezone
を選択して指示に従い設定する。
日本で使うので日本標準時(JST)となるAsia
→Tokyo
を選択する。
キーボード設定
メニューのLocalisation Options
→Change Keyboard Layout
を選択して指示に従い設定する。
直接Raspberry Piにキーボードを接続する場合は設定する必要があるが、SSH接続のみで操作を行う場合は設定しなくてもよい。
Wi-Fi国設定
メニューのLocalisation Options
→Change Wi-fi Country
を選択して指示に従い設定する。
Wi-Fiを使用する場合はJP
を選択する。
ファイルシステム拡張
microSDの容量を目一杯使うようにする設定。
メニューのAdvanced Options
→Expand Filesystem
を選択して指示に従い設定する。
メモリー設定
GPU用のメモリー設定。
メニューのAdvanced Options
→Memory Split
を選択して指示に従い設定する。
デフォルトでは64
が設定されているが、ヘッドレス運用では最小限で十分なので16
を設定する。
IPアドレスの固定化
/etc/dhcpcd.conf
を編集してIPアドレスを固定する。
interface eth0
# IPアドレスとサブネットマスク
static ip_address=192.168.100.251/24
# デフォルトゲートウェイ
static routers=192.168.100.1
# DNSサーバー
static domain_name_servers=192.168.100.1
SSH接続ポート番号変更
RaspbianのSSHは接続ポート番号がデフォルトの22番になっている。
サーバー用途ではこれを変更しておいた方がセキュリティ的に望ましいと思われる。
/etc/ssh/sshd_configを編集
デフォルトの22番はコメントアウトされているので、その下にPort 12345
(数字は変更したいポート番号)を追記する。
・・・
#Port 22
Port 12345
・・・
sshdを再起動
sudo systemctl restart sshd.service
SSHホスト鍵更新
既存のホスト鍵を削除して再作成する。
sudo rm -v /etc/ssh/ssh_host*
sudo dpkg-reconfigure openssh-server
NTPクライアント設定
Raspberry Piの時刻合わせをネットワークで行うNTPクライアントの設定を行う。
NTPはsystemd-timesyncd
を利用しているので、確認はtimedatectl status
で行う。
timedatectl status
Local time: 火 2020-03-24 20:43:37 JST
Universal time: 火 2020-03-24 11:43:37 UTC
RTC time: n/a
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: inactive
RTC in local TZ: no
NTP service
がactive
ならNTPクライアントが有効になっている。
inactive
の場合は無効になってるのでsudo timedatectl set-ntp true
で有効にする。
sudo timedatectl set-ntp true
同期元サーバーの設定は/etc/systemd/timesyncd.conf
を編集して行う。
[Time]
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com
設定を変更したらtimedatectl
を再起動する。
sudo systemctl restart systemd-timesyncd
SWAP設定
Raspberry Piの用途によって設定を変更する。
サービスdphys-swapfile
の設定を行う。
SWAPを無効にする場合
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
SWAPを有効にする場合
sudo systemctl enable dphys-swapfile
sudo systemctl start dphys-swapfile
SWAPの容量を変更する場合
まずはSWAPを停止する。
sudo systemctl stop dphys-swapfile
次にSWAPサイズを変更する。/etc/dphys-swapfile
を編集してCONF_SWAPSIZE
の数値を変更する。
単位はMBでデフォルト値は100である。
そして最後に設定した値を有効にするためにSWAPを起動する。
sudo systemctl start dphys-swapfile
avahi無効化
avahiはDNS無しでホスト名.local
でのアクセスを提供するソフトウェア。
内向きDNSが存在する場合は不要なので無効にする。
sudo systemctl stop avahi-daemon
sudo systemctl disable avahi-daemon
デフォルトユーザー名変更
サーバー用途ではデフォルトのパスワードとともにユーザー名を変更しておいた方が望ましい。
ただしデフォルトのpi
ユーザーを削除して別のユーザーを再作成して利用するのは、削除されたpi
ユーザーのファイルがどこかに残っている可能性があるのでおすすめしない。
ここではpi
ユーザーをraspi
に変更する例を示す。
仮ユーザー作成
pi
ユーザーでログインして仮のユーザーtmp
を作成する。
# 仮ユーザー(tmp)を作成する
sudo useradd -M tmp
# tmpユーザをsudoグループに追加(そうしないとsudoが使えない)
sudo gpasswd -a tmp sudo
# tmpユーザのパスワードを設定
sudo passwd tmp
# ログアウトする
exit
ユーザー名変更
pi
ユーザーをraspi
に変更する。
# usermod -lでユーザー名をpiからsamba-piに変更
sudo usermod -l raspi pi
# usermod -dでホームディレクトリを/home/piから/home/raspiに変更
sudo usermod -d /home/raspi -m raspi
# groupmod -nでpiグループをraspiグループに変更
sudo groupmod -n raspi pi
# ログアウト
exit
仮ユーザー削除
新しいユーザーraspi
でログインして仮のユーザーtmp
を削除する。
# 仮ユーザtmpを削除
sudo userdel tmp
パスワード無しのsudo無効化
設定は/etc/sudoers.d/010_pi-nopasswd
で行う。
ファイルのpi ALL=(ALL) NOPASSWD: ALL
をコメントアウトする。
またはファイル自体が不要なので削除してしまってもよい。
バックアップ
microSDのディスクイメージでのバックアップを行う。
Windowsではディスクイメージの書き込みにも使えるWin32 Disk ImagerやUSB Image Toolを用いるとよい。
おわりに
私がやってみたRaspberry Piの初期設定はこんな感じです。
他にもこうやったほうがいいとかあるような気がするし、今後導入するソフトウェア次第で設定を変更するようになるかも知れない。
とりあえずここからRaspberry Piをいろいろいじってみようと思っています。