さくらの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アドレスの設定も行えるみたい。)
有効にしてこの時点では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.
早速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をインストールします。