はじめに
Raspberry Piを追加導入したのでUbuntu Serverを導入してサーバーを構築して遊んだ記録である。
今回もサーバー用途のヘッドレス運用を行うため、基本的にRaspberry PiへはSSHで接続して作業を行っている。
作業環境はWindows 10 Pro 2004 64bitのPCで、SSHクライアントはRLoginを使用した。
今回セットアップしたRaspberry Piは4Bで、Ubuntu Serverのバージョンは20.04 LTS(Focal Fossa)。
Ubuntu Server導入
ダウンロード
Ubuntu公式サイトの「Download」→「Ubuntu for IoT」→「Raspberry Pi」より、4B用の「Ubuntu 20.04 LTS 64bit」をダウンロードする。
インストール
公式サイトでダウンロードできるのはディスクイメージのZIPアーカイブなので展開しておくこと!
Ubuntu ServerのディスクイメージをmicroSDに書き込む。
作業PCがWindowsの場合は下記のソフトウェアが使えました。
起動
- Raspberry PiのmicroSDスロットにUbuntu Serverのディスクイメージを書き込んだmicroSDカードを挿入
- Raspberry Piに電源を接続
- (ある場合は)電源スイッチをON
初期設定
デフォルトユーザーは ubuntu
で、デフォルトパスワードは ubuntu
である。
パスワード変更
初回ログイン時に変更を要求される。
ホスト名設定
sudo hostnamectl set-hostname <ホスト名>
IPアドレス固定
ネットワークの設定はnetplanで行われ、デフォルトは /etc/netplan/50-cloud-init.yaml
に書かれている。/etc/netplan/
に辞書順であとになるように設定ファイルを置くことでデフォルト値を上書きして設定することが出来る。
例としてファイル名を 90-home-network.yaml
として、下記内容を設定する。
注意点としてインデントはタブではなくスペースで行う必要がある。
network:
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses: [192.168.100.253/24]
gateway4: 192.168.100.1
nameservers:
addresses: [192.168.100.251, 192.168.100.252]
version: 2
renderer: networkd
設定反映は sudo netplan apply
で行う。
sudo netplan apply
ソフトウェア更新
Ubuntu ServerはDebian系のLinuxディストリビューションなので apt
を使用してインストールされているソフトウェアの更新を行う。
sudo apt update && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean
日本語化
言語パック等を導入
sudo apt update && sudo apt install language-pack-ja manpages-ja
ロケール設定
sudo dpkg-reconfigure locales
ja_JP.UTF-8
を選択。
タイムゾーン設定
sudo dpkg-reconfigure tzdata
日本なので「Asia」→「Tokyo」を選択する。
SSH接続ポート番号変更
Ubuntu ServerのSSHは接続ポート番号がデフォルトの22番になっている。
サーバー用途ではこれを変更しておいた方がセキュリティ的に望ましいと思われる。
設定ファイル編集
/etc/ssh/sshd_config
を編集して設定を変更する。
デフォルトの22番はコメントアウトされているので、その下に Port 12345(数字は変更したいポート番号)を追記する。
・・・
#Port 22
Port 12345
・・・
sshd を再起動
sudo systemctl restart sshd.service
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
で有効にする。
同期元サーバーの設定は /etc/systemd/timesyncd.conf
を編集して行う。
[Time]
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com
設定を変更したら timedatectl
を再起動する。
sudo systemctl restart systemd-timesyncd
デフォルトユーザー名変更
サーバー用途ではデフォルトのパスワードとともにユーザー名を変更しておいた方が望ましい。
ただしデフォルトのubuntuユーザーを削除して別のユーザーを再作成して利用するのは、削除されたubuntuユーザーのファイルがどこかに残っている可能性があるのでおすすめしない。
ここではubuntuユーザーをraspiに変更する例を示す。
仮ユーザー作成
ubuntuユーザーでログインして仮のユーザーtmpを作成する。
# 仮ユーザー(tmp)を作成する
sudo useradd -M tmp
# tmpユーザをsudoグループに追加(そうしないとsudoが使えない)
sudo gpasswd -a tmp sudo
# tmpユーザのパスワードを設定
sudo passwd tmp
# ログアウトする
exit
ユーザー名変更
ubuntuユーザーをraspiに変更する。
# usermod -lでユーザー名をubuntuからraspiに変更
sudo usermod -l raspi ubuntu
# usermod -dでホームディレクトリを/home/ubuntuから/home/raspiに変更
sudo usermod -d /home/raspi -m raspi
# groupmod -nでubuntuグループをraspiグループに変更
sudo groupmod -n raspi ubuntu
# ログアウト
exit
仮ユーザー削除
仮のユーザーtmpを削除する。
# 仮ユーザtmpを削除
sudo userdel tmp
おわりに
私がやってみたRaspberry PiのUbuntu Serverの初期設定はこんな感じになりました。
他にもこうやったほうがいいとかあるような気がするし、今後導入するソフトウェア次第で設定を変更するようになるかも知れない。
とりあえずここからUbuntu ServerのRaspberry Piをいろいろいじってみようと思っています。