ラズパイで作る自宅WEBサーバ構築
第1回 Ubuntu Server インストール 2025.06.10
2022年4月21日、Ubuntu22.04がリリースされました。
この Ubuntu 22.04 LTS には5年間のサポート期間が提供されます。
●初期設定時における構成図

うぷ主の実働環境におけるWEBサーバを含む周辺機器は仕事部屋とは別の場所に設置しています。
そのため、新規サーバの設定時などはサーバを手元に置いたほうが便利です。
BUFFALOの無線LAN子機は、開発環境に有線LAN接続環境を提供しています。
最初にWindows環境でubuntuの初期イメージファイルを作成します。
まずは、ubuntu server イメージファイルをダウンロードします。
●Ubuntu Server 22.04.2 LTS
ubuntu-22.04.2-preinstalled-server-arm64+raspi.img.xz
画面を下にスクロールすると、「Download Ubuntu Server」という項目があり、 [Ubuntu Server 22.04.2 LTS]をダウンロード。
→ ubuntu-22.04.2-preinstalled-server-arm64+raspi.img.xz
※このイメージファイルはシステム修復の際に必要になりますので、大切に保管しておきましょう。

●7-Zip 高圧縮率のファイルアーカイバ(圧縮・展開/圧縮・解凍ソフト)
xz形式のファイルを解凍するソフトがインストール済みであれば必要ありません。
https://sevenzip.osdn.jp/
所有するパソコンに適したファイルをダウンロード
Windows 64ビット x64 → 7z2301-x64.exe
Windows 32ビット x86 → 7z2301.exe
インストールを実行してください。
ubuntu server のイメージファイルを解凍してください。
ubuntu-22.04.2-preinstalled-server-arm64+raspi.img.xz
↓
ubuntu-22.04.2-preinstalled-server-arm64+raspi.img
●SD Memory Card Formatter 5.0.2 for SD/SDHC/SDXC
https://www.sdcard.org/jp/downloads/formatter/
(Windows 7,8,8.1,10,11に対応)

Raspberry Pi の本体システムとして使えるのはFAT32フォーマットシステムだけなので、必然的にFAT32形式で使える最大容量は microSDHC 32GBになります。
なお、容量8GBや16GBのものではなく、32GBのSDカードの使用をお奨めします。
microSDカードをパソコンにセットし、FAT32でフォーマットします。
※ubuntu をインストールしたSDカードを再使用する場合は、クイックフォーマットではなく、上書きフォーマットを行ったほうが無難です。
●Win32 Disk Imager
https://sourceforge.net/projects/win32diskimager/
→ win32diskimager-1.0.0-install.exe
インストールを実行してください。

解凍した ubuntu server イメージファイルを microSDカードに書き込んでください。
※Win32 Disk Imager の使い方は検索するとすぐ見つかります。
●ディスプレイ設定
モニターはubuntuの今回の初期インストール時のみに使用します。HDMI接続のものが便利です。
WIMAXIT 8インチ 1280x800 Raspberry Pi 液晶モニターDIY HDMIディスプレイスクリーン マイクロUSB 5V/2A入力電源 PMMAハウジング+スタンド付き
インストールの前にubuntu の解像度設定を行います。
SDカードにUbuntu Serverのイメージを焼き付けた後に、エクスプローラーなどでドライブを確認すると、
USBドライブとsystem-bootドライブといった2つのドライブが追加されていることがわかります。
system-boot ドライブを開いて、config.txt に下記を追記します。
[all]
#hdmi_drive=2
framebuffer_width=1280
framebuffer_height=800
hdmi_group=2
hdmi_mode=28
hdmi_cvt=1280 800 60 5 0 0 0
[解説]
framebuffer_width フレームバッファの横幅
framebuffer_height フレームバッファの高さ
hdmi_group 1=CEA、2=DMT
hdmi_mode HDMIの動作モード(1~86は予約済み)
hdmi_cvt
width 横幅
height 高さ
framerate フレームレート
aspect アスペクト比(1=4:3、2=14:9、3=16:9、4=5:4、5=16:10、6=15:9)
margins 0=マージン無効、1=マージン有効
interlace 0=プログレッシブ、1=インタレース
rb 0=通常、1=ブランク削除
※ubuntu をインストール後に設定変更を行う場合は、
$ sudo vi /boot/firmware/config.txt
になります。
●Ubuntu Server のインストール

写真左下がRaspberry Pi 3 model Bです。
WEBサーバは高負荷な演算処理を行っているわけではなく、外部からのWEBアクセス頻度が負荷の最大の要因となります。
うぷ主のWEBサーバやルーターなどは無停電電源からの供給を受けています。
うぷ主サイトは知名度が高いわけではなく、再起動させずに安定的に動かすことを重視しているため、
消費電力の少ないRaspberry Pi 3を使用しています。

BUFFALO WLI-UTX-AG300/C
Raspberry Piの上に移っているのは、無線LAN子機です。
うぷ主のWEBサーバを含む周辺機器は仕事部屋とは別の場所に設置しています。
そのため、新規サーバの設定時などはサーバを手元に置くほうが便利です。
この無線LAN子機は、開発環境に有線LAN接続環境を提供します。
その右はUS配列の有線キーボードです。初期設定時に文字化けを気にする必要がないので1つ持っていると便利です。
そしてその上がHDMI接続のモニターです。
それでは、Raspberry Pi にSDカードを挿して起動します。
●アカウント設定
まずは初期パスワードでログインします。
ubuntu login: ubuntu
password:ubuntu
(current) UNIX password:ubuntu
パスワード変更を求められますので、ubuntu のパスワードを変更します。
Enter new UNIX password:********
Retype new UNIX password:********
●ネットワーク設定
まずは、ethernetのMAC Address を確認しておきます。
$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.9/24 metric 100 brd 192.168.11.255 scope global dynamic eth0
valid_lft 172600sec preferred_lft 172600sec
inet6 xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86379sec preferred_lft 14379sec
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
うぷ主の取得している固定IPアドレスはIPv4なので上記の太赤時に記載されているMACアドレスを設定に用います。
下記はWEBサーバーのLAN内のローカルIPアドレスを192.168.11.21、ブロードバンドルーターを192.168.11.1として場合の設定例です。
$ sudo vi /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
dhcp6: no
match:
macaddress: xx:xx:xx:xx:xx:xx
set-name: eth0
addresses: [192.168.11.21/24]
gateway4: 192.168.11.1
nameservers:
addresses: [192.168.11.21,192.168.11.1]
optional: true
Ubuntu1 Desktopでは renderer にNetwork-Managerを使用し、UbuntuServerやRaspberryPi 3用のUbuntu22.04(UbuntuCore)では netplan で設定します。デフォルト値を変更したい場合は、renderer を明記します。
ローカルネットワーク側にラズパイを配置して、ポートマッピング機能により、グローバルIPアドレスへのリクエストをローカルIPアドレスに振り分けているので、この記載にグローバルIPアドレスは現れません。
ラズパイをDNSサーバとして使用しないのであれば、nameservers: の 192.168.11.21 は必要ありません。
optionalは、networkdのみがサポートしています。通常networkdはシステム起動時、デバイスが正しく起動し、設定されるまで一定時間待機します。しかしこのoptinalキーをtrueに設定したデバイスは、起動時にnetworkdが待たずにすぐに起動することができるようになります。
yamlファイルは、TABでなくSPACE(基本は空白2文字)でインデントする必要があります。
設定の反映
$ sudo netplan apply
ipアドレスの確認
$ ip a (あるいは $ ifconfig )
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.21/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86386sec preferred_lft 14386sec
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
eth0 が有線LAN接続です。BROADCASTの部分がUPになっていないときは、ネットワークを起動してください。
$ ip link set eth0 up )
●IPv6の無効化
IPv6は使用しないので、無効化します。
$ cat <<'EOF' | sudo tee -a /etc/sysctl.d/70-disable-ipv6.conf
> net.ipv6.conf.all.disable_ipv6 = 1
> net.ipv6.conf.default.disable_ipv6 = 1
> EOF
設定を反映します
$ sudo sysctl --system
$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.21/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
これだけでは再起動した際に反映されないことがあるので、起動後にsysctl設定を再適用するスタートアップスクリプトを作成します。
$ cat <<'EOF' | sudo tee -a /etc/rc.local
> #!/bin/bash
> # /etc/rc.local
> # Load kernel variables from /etc/sysctl.d
> /etc/init.d/procps restart
> exit 0
> EOF
実行権限を付与します
$ sudo chmod 755 /etc/rc.local
これで再起動して、IPv6アドレスがなければ大丈夫です。
●ネットワーク接続確認 ping
$ ping youtube.com
●Ubuntuバージョンの確認
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
●SSH接続設定
パッケージの有無を確認します。
$ dpkg --get-selections | grep openssh
openssh-client install
openssh-server install
openssh-sftp-server install
利用できるパッケージのバージョンの確認します。
$ apt-cache show openssh-server | more
Package: openssh-server
Architecture: arm64
Version: 1:8.9p1-3ubuntu0.1
ubuntu 22.04 では標準でSSHをサポートしているので、特別な設定はありません。
ラズパイをシャットダウンします。
$ sudo shutdown now
これでラズパイで直接行う設定は終了です。
キーボード、HDMIケーブルを外します。
次回は ubuntu server の詳細設定を行います。
●その他
dpkg-reconfigureコマンドをサポートしているパッケージを調べる
$ ls /var/lib/dpkg/info/*.config
/var/lib/dpkg/info/adduser.config
/var/lib/dpkg/info/apparmor.config
/var/lib/dpkg/info/byobu.config
/var/lib/dpkg/info/ca-certificates.config
/var/lib/dpkg/info/cloud-init.config
/var/lib/dpkg/info/console-setup.config
/var/lib/dpkg/info/dash.config
/var/lib/dpkg/info/debconf.config
/var/lib/dpkg/info/flash-kernel.config
/var/lib/dpkg/info/iproute2.config
/var/lib/dpkg/info/keyboard-configuration.config
/var/lib/dpkg/info/landscape-common.config
/var/lib/dpkg/info/locales.config
/var/lib/dpkg/info/man-db.config
/var/lib/dpkg/info/mdadm.config
/var/lib/dpkg/info/openssh-server.config
/var/lib/dpkg/info/tzdata.config
/var/lib/dpkg/info/ubuntu-advantage-tools.config
/var/lib/dpkg/info/ufw.config
/var/lib/dpkg/info/unattended-upgrades.config
dpkg-reconfigure で下記のエラーが発生した場合
dpkg: エラー: dpkg frontend が別のプロセスによってロックされています
$ sudo rm /var/lib/dpkg/lock
$ sudo dpkg --configure -a
インターフェイス名を調べる
$ ls /sys/class/net
eth0 lo wlan0
■参考文献
超簡単まとめ!Ubuntu22.04 LTSの主な変更点 | ポートウェルジャパン株式会社 | 産業用PC, IoT, エッジコンピューティング端末メーカー
|