やりたいこと
現在、当ブログとスマートホームのために利用している自宅サーバは2020年から運用しているものであり、今でも大きなトラブルなく元気に動いてくれています。ただ、ハードウェア(NUC8i5BEK:Intel Corei5 8259)もOS(Ubuntu 20.4)もそろそろ古くなってきたので、Ubuntu24.4のリリースを契機に自宅サーバを再構築することにしました。
新しい自宅サーバに関するサーバ構成とネットワーク構成は以下を考えています。
サーバ構成としては、ミニPCであるGMK TEC K7を物理サーバとして用意し、Ubuntu 24.4 DesktopをホストOSに使用します。また、ハイパーバイザはKVMを利用することにしました。現在運用中のサーバはVMware ESXiを利用していましたが、ESXiの無償ライセンスがなくなってしまったので、新サーバではKVMによる仮想化にチャレンジしてみます。そして、このKVM上に、WebサーバとHomeサーバの2つの仮想マシンを立てていきます。
一方で、ネットワーク構成としては、インターネットに接続したルータの配下に、WebサーバとHomeサーバを配置します。また、Homeサーバを家内へのルータ&FWとして利用します。また、物理ホストはあまりインターネットから触られたくないので、LAN側のネットワークに接続することにします。
この自宅サーバを構築するために、全6回に分けて記事を掲載予定であり、今回は1回目の記事となります。
第1回:Ubuntuインストール編 ←この記事
第2回:KVMとCockpitで仮想サーバ構築編
第3回:ApacheとWordpressでWebサーバ構築編
第4回:PostfixとRainloopでメールサーバ構築編
第5回:DNS・DHCPサーバ構築編
第6回:NoderedとMQTTでホームサーバ構築編
番外編:KVM上でのWindows11のインストール編
番外編:KVM上でのUbuntu Serverのインストール編
用意したハードウェア
物理サーバとしては、有線LANが2つある製品を中心に選定を行い、以下のGMK TEK K7を利用することにしました。GMK TEK K7は、Core i5 13500Hを搭載しており、16個のCPUのコアが利用できるのも仮想サーバを立ち上げるのには良いと思います。ただメモリが32MBとやや少ないので、不足してきたら追加することにします。
Ubuntu 24.4 Desktopのインストール
物理サーバにインストールするOSは、2024年4月25日に登場したばかりのUbuntu 24.4 LTSを利用します。Ubuntu 24.4にはUbuntu ServerとUbuntu Desktopがあり、KVMを動かすホストOSとしてはUbuntu Serverでも良いかと思いました。しかし、仮想サーバを管理する仮想マシンマネージャが利用できると便利なのでGUI環境を含むUbuntu Desktopを利用することにしました。
ISOイメージのダウンロード
まずは、以下のUbuntuのサイトに行って、最新のUbuntu Desktop 24.4をダウンロードします。Ubuntu DesktopのISOイメージは約6GBあるので、ダウンロードが完了するまでコーヒーでも飲みながら気長に待ちましょう☕️
USBメモリの作成
ISOイメージのダウンロードが完了したら、RasberryPiでもお世話になっているbalenaEtcherを使って、ISOイメージをUSBメモリに書き込んでいきます。このあたりは、いつもの作業!って感じですね。
インストール
インストール用のUSBメモリが作成できたら、USBメモリをPCのUSBポートに差し込んで、電源をつけます。
①GRUB画面
PCが起動するとGRUBの画面が表示されるので「Try or Install Ubuntu」を選択します。なお、GRUBの画面が表示されない場合はBIOSの画面に行って、起動順のドライブの設定でUSBメモリの優先順位を最上位に設定してみてください。
②言語選択
Ubuntu 24.4から刷新されたという綺麗なインストーラが起動すると、言語選択の画面が表示されるので、下の方にある「日本語」を選択します。ただ、日本語に訳されているのは一部分のみのようです。
③アクセシビリティの選択
次にアクセシビリティの選択画面が表示されます。特別なアクセシビリティが不要であれば「Next」ボタンをクリックします。
④キーボードレイアウトの選択
次にキーボードレイアウトの選択です。リストの中ほどにある「Japanese」を選択しましょう。
⑤インターネット接続
次にインターネット接続の画面です。自宅のWifiなどがある場合には接続しましょう。
⑥インストールか試用か
次の画面では、Ubuntuをインストールして使用するか、インストールしないでお試し利用するかを選択できます。今回は「Install Ubuntu」を選択しましょう。
⑦インストール形式
インストールをインタラクティブ形式で行うか、自動で行うか選択できるので「Interactive installation」を選択しましょう。
⑧アプリケーションの選択
この画面ではインストールするアプリケーションを選択できます。アプリケーションは後でも追加できるので「Default Selection」を選択します。なお、Ubuntu24.4からは最小インストールにポリシーが変更になった用で、必要最低限のものしかインストールされないことを、念頭に置いておきましょう。
⑨追加ソフトのインストール
サードパーティツールやWifiドライバなど追加のソフトウェアが必要な場合はチェックボックスをつけましょう。私の場合には、不要だったのでチェックをつけずに「Next」ボタンを押します。
⑩インストールディスクの選択
次に既存のSSDを消してUbuntuをインストールするか、手動でパーティションを選択してインストールするかを選択できます。私の場合には全部消してインストールする「Erase disk and install Ubuntu」を選択しました。「Erase disk and install Ubuntu」を選択するとSSDの内容が全部消えてしまいますので、消したくないデータがある場合には注意しましょう。
11.タイムゾーンの選択
次にタイムゾーンの選択画面が表示されるので、お住まいのタイムゾーンを選択します。
12.インストールの確認
ここまで選択した内容の確認画面が表示されるので、内容を確認して「Install」ボタンをクリックします。
13.インストール
「install」ボタンを押すとインストールが開始されます。5分程度はかかるので、待ちましょう。
14.再起動
ファイルのコピーが完了すると以下の画面が表示されるので、USBメモリを本体から抜いて「Restart now」のボタンをクリックしましょう。
15.インストール完了
PCが再起動しログイン画面が表示されるので、ユーザIDとパスワードを入力してログインすれば、インストールは完了です。
ターミナルを開き、各種情報を確認すると以下のように表示されました。
# uname -a
Linux host 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04 LTS
Release: 24.04
Codename: noble
SSHとファイヤウォールの設定
インストールされたUbuntuはすぐにでも使い始めることができますが、Ubuntu Desctop 24.4にはSSHサーバがデフォルトではインストールされていませんでした。このため、SSHサーバのインストールとファイヤウォールの設定を行なっていきます。
SSHサーバのインストール
ディスクトップ画面の左下にある「メニュー」を開き、「設定」画面を表示すると「システム」の欄があり、これをクリックすると「Secure Shell」の項目があるので、これをOnにするとSSHが簡単に使えるようにも思いました。しかし、実際にはSSHサーバがインストールされておらず使えません。
①Rootのパスワードの設定
まずは、毎回sudoするのは面倒なのでRootのパスワードを設定しておきましょう。ターミナルを開いて「sudo passwd」と入力し、Rootのパスワードを設定します。
$ sudo passwd
# su
②SSHサーバのインストール確認
次に、SSHサーバがインストールされているか確認しましょう。やはり、SSHクライアントはインストールされていますが、SSHサーバがインストールされていません。
# dpkg -l|grep ssh
ii libssh-4:amd64 0.10.6-2build2 amd64 tiny C SSH library (OpenSSL flavor)
ii openssh-client 1:9.6p1-3ubuntu13 amd64 secure shell (SSH) client, for secure access to remote machines
#
③SSHサーバのインストール
SSHサーバがインストールされていないので、インストールを行います。
# apt-get install openssh-server
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
ncurses-term openssh-sftp-server ssh-import-id
提案パッケージ:
molly-guard monkeysphere ssh-askpass
以下のパッケージが新たにインストールされます:
ncurses-term openssh-server openssh-sftp-server ssh-import-id
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
832 kB のアーカイブを取得する必要があります。
この操作後に追加で 6,751 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
・・・以下省略・・・・
④sshd_configの編集
SSHサーバの設定ファイルである「sshd_config」の編集を行います。
# cd /etc/ssh
# cp sshd_config sshd_config.org
# vi sshd_config
私が変更した箇所は以下の通りです。
Port 10022 #待受ポートの変更
#ホストキー認証の有効化(以下の行の先頭の#を削除する)
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Rootログインの無効化(以下の行の先頭の#を削除する)
PermitRootLogin prohibit-password
#パスワードを間違いのリトライ回数(以下の行の先頭の#を削除する)
MaxAuthTries 6
MaxSessions 10
#パスワードなしログインを無効にする(以下の行の先頭の#を削除する)
PermitEmptyPasswords no
⑤SSHサーバの有効化
「systemctl enable ssh」と入力してSSHサーバを有効にします。
# systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable ssh
Created symlink /etc/systemd/system/sshd.service → /usr/lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /usr/lib/systemd/system/ssh.service.
⑥SSHサーバの起動確認
「systemctl status sshd」と入力してSSHサーバが起動しているか確認します。「active (running)」と表示されていればOKです。
# systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running) since Sat 2024-04-27 15:33:35 JST; 3s ago
TriggeredBy: ● ssh.socket
Docs: man:sshd(8)
man:sshd_config(5)
Process: 10472 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 10473 (sshd)
Tasks: 1 (limit: 38156)
Memory: 1.2M (peak: 1.8M)
CPU: 29ms
CGroup: /system.slice/ssh.service
└─10473 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
⑦SSHの接続確認
それでは他のPCからSSHログインができるか試してみましょう。
ファイアウォールの設定
次に、不正なアクセスを防止するためにファイヤウォールの設定を行なっていきます。
①ufwの有効化
Ubuntuのファイアウォール機能であるufwもデフォルトでは動作していません。このため、ufwを有効化します。
# ufw status
状態: 非アクティブ
# ufw enable
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
# ufw status
状態: アクティブ
②デフォルトのポリシーの設定
許可された以外の通信を遮断するようにデフォルトのポリシーを拒否(deny)に設定します。
# ufw default deny
デフォルトの incoming ポリシーは 'deny' に変更しました
(適用したい内容に基づいて必ずルールを更新してください)
③接続を許可する通信の追加
許可する通信を設定します。以下の例では、192.168.1.0のネットワークからの10022番ポートへのSSHアクセスを許可しています。
# ufw allow from 192.168.1.0/24 to any port 10022 proto tcp
ルールを追加しました
# ufw status
状態: アクティブ
To Action From
-- ------ ----
122/tcp ALLOW 192.168.1.0/24
おわりに
今回は自宅サーバの再構築の第一歩としてUbuntsu 24.4 Desktopのインストールを行いました。次回はインストールしたUbuntsuにKVMをインストールし、仮想サーバの構築を行なって行こうと思います。
第1回:Ubuntuインストール編
第2回:KVMとCockpitで仮想サーバ構築編 ←次回
第3回:ApacheとWordpressでWebサーバ構築編
第4回:PostfixとRainloopでメールサーバ構築編
第5回:DNS・DHCPサーバ構築編
第6回:NoderedとMQTTでホームサーバ構築編
番外編:KVM上でのWindows11のインストール編
番外編:KVM上でのUbuntu Serverのインストール編