自前のブログ作り② ー 環境準備:さくらのVPSを契約して、Ubuntu 20.04 LTSをインストールする

schedule Published
published_with_changes Updated
Category folderMake
format_list_bulleted Contents

前回ホスティング先に決めたさくらのVPS(仮想専用サーバー)に申し込んで、さっそくOSをインストールした。「Ubuntu 20.04 LTS」は標準OSインストールにあり、スタートアップスクリプトなども用意してくれていて、素人にはありがたい。ログ監視ツールLogwatchもインストールした。

本ページはプロモーションが含まれています

さくらのVPSに申し込む

さくらインターネットの「さくらのVPSopen_in_new」にアクセスして、申し込む。
Strapiの動作環境を確認して、できるだけ低めのプランにした。(金がないので。)

  • At least 1 CPU core (Highly recommended at least 2)
  • At least 2 GB of RAM (Moderately recommended 4)
  • Minimum required storage space recommended by your OS or 32 GB of free space

出典:Strapi Developer Docs - Deployment : General guidelineopen_in_new

最低でもメモリ2GBとあるので、ちょっと想定より出費が痛いが、メモリ2GBのプランにした。条件を満たしていればスケールアップは可能なので、悩むことなく低めのプランで契約した。また、クレジットカード払いであれば2週間のお試しもあるので、その間でスペックに問題ないか頑張れば確認できると踏んだ。

お試し期間ありで、手順にしたがって申し込みを完了。ちゃんとブログを作るって腹をくくれてえらい!

OS(Ubuntu 20.04 LTS)インストール

申し込み完了後、OSインストール形式を標準OS「Ubuntu 20.04 amd64」で進める。

スタートアップスクリプトを利用

さくらのVPSで標準OSをインストールする場合、パッケージのインストールや各種設定作業の自動化等を簡単に実現できるスタートアップスクリプトが用意されている。
せっかくなので、さくらインターネット公式の「Setup」スクリプトを利用した。
以下の設定が可能です。

  • aptによるパッケージを最新にするか

    デフォルトはno。yesにした。

  • IPv6を有効にするか

    デフォルトはno。yesにしてみた。

  • FireWallをUFWに変更

    デフォルトはno(iptablesを利用)。yesにした。

  • rootユーザの公開鍵を登録

    デフォルトはnone。

  • パスワードでのログイン許可/拒否

    デフォルトはyes。一旦yesのままとした。

  • SSHのポート変更

    デフォルトは22。別のポート番号に変更した。

パケットフィルタ設定

さくらのVPSのサービスで通信制限を設定できる機能。 あらかじめ用意されている選択可能なポート(80や443など)をコントロールパネル上で「有効(利用する)」または「無効(利用しない)」にすることにより、外部からの着信パケットに対して通信制限を設定できる。

カスタムで、1から32767の範囲で任意の接続許可ポートが設定可能。SSHのポート変更が範囲に該当する場合は、忘れないようカスタムで許可設定しておく。(カスタムでは送信元IPアドレスの設定も行えるみたい。)

さくらのVPS:パケットフィルタ機能open_in_new

有効にしてこの時点ではSSHポートのみ許可状態にした。
いつでもコントロールパネルからGUIで簡単に無効の設定ができる。

OS(Ubuntu 20.04 LTS)インストール後の初期設定

ネット上のありがたい記事を参考にしながら設定を進める。

VPSのインストールOSを起動したら、SSHで接続して黒い画面にご挨拶。
Windowsを使っており、SSHクライアントソフトは「RLoginopen_in_new」を利用して接続する。

ホスト名の変更

システムが付けたデフォルトのホスト名を分かりやすくする。

$ sudo hostnamectl set-hostname your_hostname

パッケージリストの更新とパッケージの更新

スタートアップスクリプトを利用しましたが、確認のため実施。
apt-getとaptがの2つあるが、aptの方が後発の改善版とあったのでaptをつかってみる。

aptコマンドチートシートopen_in_newなど、ググればありがたい記事が見つかるので活用させてもらいます。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove

ユーザの作成・sudoグループに追加

Ubuntuではrootで行う処理はsudo等で実行するという方針のため、デフォルトでrootでのログインは無効になっている。初期インストール後はデフォルト管理ユーザ名「ubuntu」でログインできた。

$ sudo adduser user_name
$ sudo gpasswd -a user_name sudo

ユーザの削除(-rオプションでユーザディレクトリも同時に削除)
$ sudo userdel -r user_name

作成したユーザのSSH鍵をセットアップ

最近は「ed25519」が良いとありますが、下記リンクの記事を参考に「rsa 4096bit」の鍵をパスフレーズありでセットアップする。RSA暗号といえば「サマーウォーズ」を思い出します。
Ubuntu 20.04でSSHの鍵をセットアップする方法 open_in_new

SSHのパスワード認証を禁止する

SSH鍵をセットアップして公開鍵認証でアクセスができるようになったので、設定ファイルを編集してパスワード認証を禁止する。

/etc/ssh/sshd_config
PasswordAuthentication no

IPv6の無効化

スタートアップスクリプトで有効にしていたのを無効化する。
有効化手順のマニュアルを見ながら、逆の手順を踏む。
IPv6有効化手順(Ubuntu 20.04)open_in_new

ufwの確認と設定

インフラ素人にはiptablesの設定は難しいため、ufwを利用する。
ufwの利用は前述の通り、スタートアップスクリプトで利用する設定にしている。

IPv6は無効化したので、ufwでもIPv6を設定ファイル側で予め無効化しておく。

/etc/default/ufw
IPV6=no

設定ファイルでIPv6の無効化をしたら、あとは個別の設定をしていく。
ufw default denyの状態での設定となります。

ufwの状態確認
$ sudo ufw status
$ sudo ufw status verbose #設定を詳細表示
$ sudo ufw status numbered #設定の一覧を通し番号付で表示

ufwで許可(ポート番号やサービス名を指定)
$ sudo ufw allow 22
$ sudo ufw allow OpenSSH

ufwで禁止(ポート番号やサービス名を指定)
$ sudo ufw deny 22 #default denyの状態では削除でよい

ufwの設定削除(登録した設定の通し番号を指定)
$ sudo ufw delete 1

ufwの設定を再読み込み
$ sudo ufw reload

ufwの設定をリセット
$ sudo ufw reset

ufwを有効化
$ sudo ufw enable

ufwの無効化
$ sudo ufw disable

設定後、サーバーを再起動してSSH接続できるかテストしておく。
さくらのVPSのパケットフィルタ設定を利用している場合は、こちらも許可していないと接続できないので注意。

Logwatchのインストール

Logwatchは、ログを解析して自動でレポートを作ってくれるログ監視ツールです。
しかも、毎日メールでレポートを届けてくれるらしい。
環境構築の記事などで、よく紹介されているので入れておく。

Logwatch is a customizable log analysis system. Logwatch parses through your system's logs and creates a report analyzing areas that you specify. Logwatch is easy to use and will work right out of the package on most systems.

出典:https://sourceforge.net/projects/logwatch/open_in_new

早速aptでインストールする。

$ sudo apt install logwatch

設定ファイルにメール送信先などを記載する。
logwatchによるログ監視open_in_newの記事を参考にさせてもらい、送信先とログのレベルだけ変更して設定した。

/etc/logwatch/conf/logwatch.conf
︙
#Output/Format Options
#By default Logwatch will print to stdout in text with no encoding.
#To make email Default set Output = mail to save to file set Output = file
#Output = stdout
Output = mail
︙
# The default detail level for the report.
# This can either be Low, Med, High or a number.
# Low = 0
# Med = 5
# High = 10
Detail = Med
︙
# Default person to mail reports to.  Can be a local account or a
# complete email address.  Variable Output should be set to mail, or
# --output mail should be passed on command line to enable mail feature.
MailTo = hogehoge@example.com

レポート出力とメール送信をテストする。

レポート出力
$ sudo logwatch --output stdout

メール送信
$ sudo logwatch --output mail

おわりに

OSの重要な設定漏れがないか心配だが、ひとまずUbuntuサーバーが用意できた。

10年ぐらい前に“サーバー”と書いたら「“サーバ”なんだけど、素人丸出しプププw」と年下女性に罵られた思い出が蘇った。ゾクゾクします。

ちなみにサービス提供者は、ユーザーに配慮して“サーバー”表記に変えているし、JIS規格も長音表記はどっちでも良いことに当時も改訂された後だった。AzureとAWSの公式サイトを見に行ったら“サーバー”と表記していたので、“サーバ”でマウント取ってきたら、どっちでも良くね?と気にせず華麗なスルーをきめたいと思う。

次は、Nginxをインストールします。