DockerやらSonarQubeやらGitLabやら、いろいろ試したいものがあったので、Hyper-V上にUbuntuサーバを構築することに。
とりあえず構築手順を忘れないようにメモ。
運用してみてなにか変更あれば追記していきます。
目次
Hyper-V上にUbuntuを構築する
STEP01:Ubuntuサーバのイメージファイル(.isoファイル)をダウンロードする
下記サイトから、Ubuntuサーバのイメージファイル(.isoファイル)をダウンロードします。
https://jp.ubuntu.com/download
GUI版とCLI版がありますが、今回はCLI版を選択しました。
「Ubuntu Server 22.04.1 LTS」をダウンロードします。
STEP02:Hyper-V上に仮想マシンを構築する
スタートメニューから「Windows 管理ツール」>「Hyper-Vマネージャー」を選択します。
※Hyper-Vは、デフォルトでは無効化されています。Hyper-Vを有効化する方法は参考URLに記載しているサイト等、いろいろなサイトで紹介されているので調べてみてください。
Hyper-Vマネージャ画面が起動したら、画面左側のツリービューに「Hyper-Vマネージャー」>「<自分のPC名>」が表示されていることを確認し、「<自分のPC名>」を選択します。
ツールバーの「操作」>「新規」>「仮想マシン」を選択します。
仮想マシンの新規作成ウィザードが表示されます。
「開始する前に」の説明を読み、「次へ」ボタンを選択します。
名前と場所の指定では、Hyper-V上で表示される仮想マシン名と、仮想マシンを構築するフォルダを設定します。
仮想マシンで使用するメモリの割り当てを設定します。
割り当てるメモリ容量はあとからでも変更できるので、とりあえず2GB割り当てました。
ネットワークの構成を設定します。
今回は外部ネットワークと接続できる仮想スイッチを作成して割り当てました。
仮想ハードディスクを作成します。
「仮想ハードディスクを作成する」を選択し、仮想ハードディスクのサイズを設定します。
今回は256GBに設定しました。
インストールオプションを選択します。
「ブートイメージファイルからオペレーティングシステムをインストールする」を選択し、「メディア」>「イメージファイル(.iso)」に先ほどダウンロードしたUbuntuサーバのイメージファイル(.isoファイル)を選択します。
最後に設定内容を確認し、「完了」ボタンをクリックして仮想マシンを作成します。
仮想マシンの作成が完了すると、Hyper-Vマネージャーの「仮想マシン」一覧に、作成した仮想マシンが表示されます。
STEP03:仮想マシンにUbuntuサーバをインストールする
作成した仮想マシンに、Ubuntuサーバをインストールしていきます。
仮想マシンを起動する前に、仮想マシンの設定を行います。
チェックポイントの設定を行います。
チェックポイントとは、ある時点の仮想マシンの状態を保存しておくことができる機能です。
デフォルトでは、仮想マシン起動時に自動でチェックポイントを作成する状態となっています。
私は任意のタイミングでチェックポイントないし別の手段で仮想マシンをバックアップしたいので、自動チェックポイントの機能を無効化しておきます。
「チェックポイント」>「自動チェックポイントを使用する」のチェックを外します。
セキュアブートの設定を無効化します。
画面左のツリービューから「セキュリティ」を選択し、「セキュアブートを有効にする」チェックボックスのチェックを外します。
仮想マシンの状態が「実行中」となったことを確認し、仮想マシンに接続します。
仮想マシンに接続すると、Ubuntuサーバのインストール画面が表示されます。
言語選択では、「English」を選択します。
インストーラのアップデートを行うか確認されます。
今回はダウンロードした22.04.1のままインストールするので、「Continue without updating」を選択します。
キーボードのレイアウトを選択します。
私は日本語配列のキーボードを使用しているので、「Japanese」を選択しました。
インストール内容を設定します。
デフォルトのUbuntuサーバか、最小限の構成でUbuntuサーバをインストールするかを選択します。
今回はデフォルトのままインストールするので、「Ubuntu Server」にチェックが入っていることを確認し、次に進みます。
ネットワークの設定を行います。
今回はDHCPでIPv4アドレスを自動で割り当てるので、設定は変えずにそのまま次へ進みます。
プロキシ設定です。
今回は使用しないので、設定せずに次へ進みます。
aptコマンドでパッケージをダウンロードする時に参照するサーバの設定です。
自動で近くのサーバが選択されるので、設定を変更せずに次へ進みます。
ストレージの設定です。
仮想マシン作成時に設定したストレージ(今回の場合は256GBの仮想ストレージ)が選択されていることを確認し、次へ進みます。
ストレージのパーティション設定です。
特に変更せず、そのまま次へ進みます。
選択したディスクのフォーマットを行ってよいかを確認する画面となります。
今回は仮想マシンに新規インストールするため、「Continue」を選択してフォーマットします。
SSHサーバをインストールするかを設定します。
今回はインストールするため、「Install OpenSSH Server」にチェックを入れ、次へ進みます。
よく使われるソフトをインストールするか選択できます。
そのうちDockerを使用するつもりですが、その時にインストール手順含め確認したいので、今回は何も選択せずに次へ進みます。
一番下のメニューが「Reboot Now」に変わったら、インストール完了です。
「Reboot Now」を選択して、再起動しましょう。
再起動後、設定したユーザ名とパスワードでログインします。
「<ユーザ名>p<サーバ名>:~$」が表示されたらログイン成功です。
STEP04:Ubuntuサーバの初期設定をする
- 仮想CD/DVDドライブの設定
仮想マシンから仮想CD/DVDドライブを取り外しておきます。
作成した仮想マシンを右クリックし、設定を選択します。
「SCSIコントローラー」>「DVDドライブ」を選択し、削除ボタンをクリック。
- パッケージリストの更新
sudo apt update
- インストールされているパッケージの更新
sudo apt upgrade
「Do you want to continue?」は「Y」を入力し、Enter。
インストールが完了すると、デーモンを再起動するか確認される。
再起動が必要なデーモンに自動でチェックが入っているようなので、そのままOKを選択。
- 自動アップデートの設定
unattended-upgradesをインストール。
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
ls /etc/apt/apt.conf.d/
以下ファイルがあることを確認。
「20auto-upgrades」
「50unattended-upgrades」
「50unattended-upgrades」を編集する。
vi /etc/apt/apt.conf.d/50unattended-upgrades
「”$ {distro_id}:$ {distro_codename}-updates”;」部分がコメントアウトされているので、コメントアウト部を削除して有効化します。
アップデート後、自動で再起動するように設定します。
「Unattended-Upgrade::Automatic-Reboot」を「true」に設定します。
また、再起動の時間を普段使っていない時間にするため、「Unattended-Upgrade::Automatic-Reboot-Time」を「04:00」に設定します。
※viの使い方を毎回忘れるので参考サイトメモ…
viの基本的な使い方
vi で書き込みが出来ない場合の対応方法 エラー E45 / E505 / E212
- ssh設定
sshの設定を変更していきます。
rootログインやらパスワード認証やらは禁止しておいて、ssh接続には公開鍵を使用するようにします。
vi /etc/ssh/sshd_config
sshを待ち受けるポート番号を変更します。
デフォルトの22ポートです。
これはssh接続に使用する一般的なポート番号のため、セキュリティを考えてポート番号を変更しておきます。
sshの設定が完了したら、sshサービスを再起動します。
sudo systemctl restart ssh
- ファイアウォール設定
Ubuntuサーバのファイアウォールとして、ufwをインストールします。
sudo apt install ufw
ufwの設定で、IPv6サポートをOFFします。
vi /etc/default/ufw
使用するポートを解放します。
とりあえずsshポートだけ開けておきます。
sudo ufw allow 1105
解放したポート以外、すべてのポートを閉じます。
sudo ufw default deny
設定後、ufwを有効化します。
解放したポートだけが表示されることを確認します。
sudo ufw enable
sudo ufw status
- timezone設定
timezoneを設定&確認。
sudo ln -sf /user/share/zoneinfo/Asia/Tokyo /etc/localtime
sudo dpkg-reconfigure --frontend noninteractive tzdata
strings /etc/localtime
- ntp設定
ntpサービスをインストールします。
sudo apt install ntp
ntpサービスを一旦停止します。
sudo service ntp stop
sudo service ntp status
ntpdateをインストールします。
sudo apt install ntpdate
ntpサーバを選択します。
sudo ntpdate ntp.nict.jp
デフォルトのnptサーバをコメントアウトし、「pool ntp.nict.jp iburst」を追加します。
vi /etc/ntp.conf
ntpサービスを起動します。
sudo service ntp start
sudo service ntp status
- 再起動
ここまで設定したら、再起動します。
sudo reboot
- ウイルス対策ソフトインストール
Ubuntuで使用できるウイルス対策ソフトのClamAVをインストールします。
sudo apt install clamav clamav-daemon
clamd -V
ウイルス定義データベースを自動更新するように設定します。
sudo systemctl enable clamav-freshclam
sudo systemctl status clamav-freshclam
次に、ウイルススキャンを自動実行するように設定します。
まずは、ウイルススキャンを行うシェルスクリプトを作成します。
sudo mkdir ~/clamav
「~/clamav」に、シェルスクリプトを作成します。
vi ~/clamav/checkvirus.sh
シェルスクリプトは以下の通り。
#!/bin/sh
clamscan --log /var/log/clamav/clamscan.log --infected --recursive --max-filesize=200M --max-scansize=200M / > /dev/null 2>&1
シェルスクリプトに実行権限を付与します。
sudo chmod 700 ~/clamam/checkvirus.sh
ls -l ~/clamav/
自動実行するよう、crontabにスクリプトを設定しておきます。
sudo crontab -e
「sudo crontab -e」を実行すると、エディタが開くので、以下設定して保存します。
毎日AM5:00にウイルススキャンするように設定します。
0 5 * * * bash ~/clamav/checkvirus.sh
上記設定が保存されていることを確認します。
sudo crontab -l
ここまで設定したらサーバを再起動して、設定した時刻にウイルススキャンされることを確認したら完了です。
参考URL
Ubuntu 22.04 LTS Server インストール
20200707: Ubuntu 18.04.4 LTS – ntp が自動起動しない