Raspberry Pi 5にUbuntu Serverをインストール:ヘッドレス構成、静的IPとホームサーバーの実践

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

なぜRaspberry Pi 5はホームサーバーに向いているのか?

ファイルの保存、自動化スクリプトの実行、社内向けWebアプリのホスティングなど、自宅で小型サーバーを24時間365日稼働させたい場合、最初の課題は電気代だ。古いPCを24/7で動かすと60〜100Wを消費し、稼働させているだけで年間の電気代がかなりかさむ。

Raspberry Pi 5の消費電力は負荷に応じて5〜15W程度だ。クアッドコアARM Cortex-A76(2.4GHz)とRAM 4GBまたは8GBを搭載し、ホームサーバーに必要な軽量サービスの大半を十分にこなせる。省電力、コンパクト、静音——ネットワーク棚の隅に置いておくだけでいい。

OSの選択肢を比較:何を使うべきか?

SDカードのフラッシュを始める前に、適切なOSを選ぶ必要がある。代表的な選択肢が3つあり、それぞれに強みがある。

Raspberry Pi OS (Raspbian)

メリット: Piハードウェアに最適化されており、起動が速く、GPIOとカメラモジュールを公式サポート。物理的なハードウェア制御が必要な場合は、第一の選択肢だ。

デメリット: Debianベースのため、Ubuntuと比べてエコシステムが小さい。サーバー用途に特化したドキュメントも少なめだ。

Ubuntu Desktop 24.04 ARM

メリット: 使い慣れており、GUIインターフェースがある。

デメリット: GNOMEデスクトップはアイドル時でも600MB〜1GBのRAMを消費する。4GB版のPi 5では、誰も見ていない画面のために4分の1のRAMが占有されることになる。ヘッドレスで動かすサーバーには不向きだ。

Ubuntu Server 24.04 LTS ARM

メリット: 軽量(アイドル時150〜200MB程度)、5年間のLTSサポートcloud-initが組み込まれておりヘッドレス構成が非常に簡単、aptパッケージが豊富、コミュニティが大きい。

デメリット: GUIがない——しかしここはサーバーなのでGUIは不要だ。一部のPi固有のドライバはRaspberry Pi OSと比べて追加設定が必要。

筆者はUbuntu Server 24.04 LTSを選んだ。CentOSからUbuntuに移行した当初、aptdpkgyum/dnfとかなり異なるため、パッケージ管理システムに慣れるのに約1週間かかった。しかしそれ以来、Ubuntu Serverは小規模サーバーセットアップのデフォルトの選択肢になっている。ドキュメントが豊富で、どんなエラーもStack Overflowで誰かがすでに質問しているものだ。

必要な機材

  • Raspberry Pi 5(4GBまたは8GB RAM)
  • microSDカード 32GB以上 Class 10、またはUSB 3.0接続のSSD(推奨——耐久性が大幅に高い)
  • 純正USB-C電源アダプター 5V/5A——Pi 5は5Aが必要で、旧Pi 4の電源では不足する
  • LANケーブル——サーバーにはWi-Fiより有線接続の方が安定している
  • イメージのフラッシュとSSH接続に使うPC

Ubuntu Serverのフラッシュとヘッドレス設定

ヘッドレスとは、モニターやキーボードなしでPiを動かすことだ。ラップトップからSSHで接続して管理する。Piはネットワーク棚にコンパクトに収まり、スペースを取らない。

ステップ1:Raspberry Pi Imagerでイメージをフラッシュする

Raspberry Pi ImagerをPC(Windows/Mac/Linux対応)にダウンロードする。OSの選択では、Other general-purpose OS → Ubuntu → Ubuntu Server 24.04 LTS (64-bit)を選ぶ。

フラッシュ前に歯車アイコン⚙をクリックし、cloud-initで事前設定を行う:

  • Hostname: 例:homeserver
  • Enable SSH: 「Use password authentication」を選択
  • Username/Password: 専用ユーザーを作成し、デフォルトのpiは使わない
  • Wi-Fi(任意):最初にLANケーブルがない場合

これらの設定はImagerによってSDカードの最初のパーティションにあるuser-dataファイルに書き込まれる。cloud-initが初回起動時にそのファイルを読み込み、自動的にセットアップを行う——モニター接続は不要だ。

ステップ2:起動してSSH接続する

SDカードをPiに挿入し、LANケーブルと電源を接続する。cloud-initの処理が完了するまで2〜3分待つ(初回起動は常に時間がかかる)。その後、PiのIPアドレスを確認する:

# LAN内のPiを検索する(お使いのネットワークに合わせてサブネットを変更)
nmap -sn 192.168.1.0/24 | grep -A 2 "Raspberry"

# またはルーターの管理画面で確認する

SSHで接続する:

ssh [email protected]
# 初回SSH接続時にフィンガープリントの確認が求められる——「yes」と入力する

NetplanでIPアドレスを固定する

動的IP(DHCP)はサーバーには適さない——ルーターを再起動するたびにPiのIPアドレスが変わり、設定済みの内部DNSリバースプロキシが機能しなくなる。Ubuntu ServerはCentOS/RHELのnmcliの代わりにNetplanを使用する。

まず、ネットワークインターフェース名を確認する:

ip link show
# Ubuntu 24.04では通常: eth0またはend0

静的IP設定ファイルを作成する:

sudo nano /etc/netplan/99-static.yaml

ファイルの内容(ネットワーク環境に合わせてパラメータを変更する):

network:
  version: 2
  ethernets:
    eth0:                        # またはend0——「ip link show」で確認
      dhcp4: false
      addresses:
        - 192.168.1.100/24       # Piに割り当てたい静的IPアドレス
      routes:
        - to: default
          via: 192.168.1.1       # ゲートウェイ——通常はルーターのIPアドレス
      nameservers:
        addresses:
          - 1.1.1.1              # Cloudflare DNS
          - 8.8.8.8              # Google DNS

設定を適用して確認する:

sudo netplan apply

# 新しいIPアドレスを確認
ip addr show eth0

# インターネット接続を確認
ping -c 3 google.com

netplan applyがファイルのパーミッションエラーを返す場合は、sudo chmod 600 /etc/netplan/99-static.yamlを実行する——Netplanは設定ファイルがworld-readableでないことを要求する。

ホームサーバーに軽量サービスをデプロイする

Pi 5とUbuntu Serverの組み合わせなら、以下のサービスをリソースに余裕を持って快適に動かせる:

Pi-hole——ホームネットワーク全体の広告ブロック

Pi-holeは内部DNSサーバーとして機能し、各デバイスに拡張機能をインストールすることなく、家庭内のすべてのデバイスの広告をブロックする。

curl -sSL https://install.pi-hole.net | bash
# インストール後、ルーターのDNSをPiの静的IPアドレスに変更する
# Pi-holeのアイドル時のRAM使用量は約50MB

Uptime Kuma——サービスの稼働監視

Webサイトや内部サービスのアップタイムを監視し、障害発生時に通知を送る美しいWeb UIだ:

# まずDockerをインストール
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

# Uptime Kumaを起動
docker run -d --restart=unless-stopped \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:1

# アクセス先: http://192.168.1.100:3001

Vaultwarden——セルフホスト型パスワードマネージャー

Bitwardenクライアントと互換性があり、はるかに軽量でPiに最適だ:

docker run -d \
  --name vaultwarden \
  -v /vw-data/:/data/ \
  -p 8080:80 \
  --restart unless-stopped \
  vaultwarden/server:latest

# アクセス先: http://192.168.1.100:8080

Piのリソース監視

# RAM、CPUをリアルタイムで確認
htop

# Pi 5の温度を確認(ヒートシンクなしの場合は重要)
vcgencmd measure_temp
# 高負荷時は70°C以下が目安。それ以上なら冷却を強化する必要がある

実践上の注意点

  • 可能ならSDカードの代わりにSSDを使う: SDカードは書き込み・読み込みが多いと1〜2年で故障する。USB 3.0接続またはNVMe HATのSSDは耐久性も速度も大幅に向上する。
  • Pi 5には冷却が必須: Pi 5はPi 4より明らかに発熱が多い。ファン付きケースか、少なくとも純正ヒートシンクの使用を推奨する。
  • ネットワーク棚に小型UPSを: ディスク書き込み中に突然の停電が起きるとファイルシステムが破損しやすい。小型UPS1台でシステム全体を保護できる。
  • 毎週の定期再起動を設定する: メモリリークがあれば解消し、システムをクリーンに保つ。
# 毎週日曜日の午前4時に再起動
sudo crontab -e
# 以下の行を追加:
0 4 * * 0 reboot

Pi 5 + Ubuntu Serverのホームサーバーは、実践的なLinux管理を多く学べるセットアップだ——安全な環境(最悪でも自宅のネットワークにしか影響しない)で、本番VPSに触れる前にスキルを磨ける。

Share: