GCP永久無料枠でWebサービスを構築する手順
GCP(Google Cloud Platform)の永久無料枠(Always Free)を活用して、Webサービスを立ち上げる方法を詳細に解説します。今回は、GCE(Google Compute Engine)インスタンスにDebian、Nginx、Rails環境を構築し、ドメイン取得以外の費用を全て無料で運用する手順を紹介します。Railsアプリケーションの作成に関しては本記事では触れませんが、基本的なインフラ構築手順については詳しく説明します。
1. GCP永久無料枠でGCEインスタンスを立ち上げる
GCPの無料トライアルとは別に、Always Free(永久無料枠)が提供されています。この枠を利用することで、特定のリソースを無料で使用し続けることが可能です。GCEインスタンスの場合、以下の条件を守ることで永続的に無料で利用できます。
- リージョン:us-*1(米国リージョンのいずれか)
- マシンタイプ:f1-micro(最大1つまで)
- 永続ディスク:30GB以内
これらの条件を守ることで、GCP永久無料枠を活用してWebサービスを構築できます。
2. 80番ポートと443番ポートを開放する
インスタンスを作成した後、HTTPとHTTPSの通信を可能にするためにファイアウォールルールを設定します。これにより、Webサービスが外部からアクセス可能になります。
- 80番ポート:HTTP通信
- 443番ポート:HTTPS通信
これらのポートを開放することで、Webブラウザからのアクセスを受け付ける準備が整います。
3. 外部IPアドレスを固定する
デフォルトでは、GCPのインスタンスにはエフェメラル(動的)なIPアドレスが割り当てられます。この場合、インスタンスを再起動するとIPアドレスが変更されてしまいます。安定したアクセスを確保するために、外部IPを静的IPに変更します。
- 静的IPはインスタンスが稼働している限り無料で利用できますが、未使用の場合はわずかな管理費用が発生することがあります。
静的IPを設定することで、サービスを長期的に運用するための安定したIPアドレスを確保できます。
4. SSHの設定(GCP永久無料枠でのセキュリティ強化)
GCP永久無料枠で運用する場合、セキュリティ対策は非常に重要です。SSH接続を安全にするための設定を行います。
4.1. SSHポート変更
デフォルトの22番ポートは、攻撃者に狙われやすいです。そのため、SSHのポート番号を任意の番号に変更し、セキュリティを強化します。
- 新しいファイアウォールルールを作成し、変更後のポートを開放します。
- インスタンスにターゲットタグを付け、ファイアウォールルールを適用します。
/etc/ssh/sshd_config
ファイルのPort
設定を変更後のポート番号に変更し、sudo systemctl restart sshd
で設定を反映させます。- 22番ポートを閉じるために、新しいファイアウォールルールを作成し、適用します。
4.2. 公開鍵認証の設定
パスワード認証よりも公開鍵認証の方が安全です。公開鍵認証を設定するために、以下の手順を行います。
ssh-keygen
コマンドを使って鍵ペアを生成します。- 生成した公開鍵をインスタンスのメタデータに登録します。
これにより、パスワードではなく公開鍵を使ってSSH接続が可能になります。
4.3. rootログインの無効化
セキュリティ強化のため、rootユーザーでのSSHログインを無効化します。/etc/ssh/sshd_config
ファイルの PermitRootLogin
を no
に設定し、rootでのログインを防止します。
4.4. パスワード認証の無効化
公開鍵認証を設定した後、パスワード認証を無効化します。/etc/ssh/sshd_config
ファイルの PasswordAuthentication
と ChallengeResponseAuthentication
を no
に設定し、パスワードによるアクセスを禁止します。
4.5. SSHプロトコルのバージョン2への制限
セキュリティ上、SSHプロトコルはバージョン2を使用することが推奨されています。/etc/ssh/sshd_config
ファイルで Protocol
を 2
に設定します。
4.6. 認証試行回数の制限
セキュリティを強化するため、SSH認証試行回数を制限します。/etc/ssh/sshd_config
ファイルで MaxAuthTries
を適切な値(例:5)に設定します。
5. Nginxの設定
5.1. Nginxのバージョン非表示
セキュリティのため、Nginxのバージョンを隠す設定を行います。/etc/nginx/nginx.conf
ファイルに server_tokens off;
を追加することで、Nginxのバージョンが公開されないようにします。
5.2. リバースプロキシの設定
Railsアプリケーションを運用する場合、Nginxをリバースプロキシとして設定します。これにより、Nginxがリクエストを受けてRailsアプリケーションに転送します。
6. Railsアプリケーションの設置と自動起動
Railsアプリケーションをインストールし、サーバー起動時に自動でアプリケーションが立ち上がるように設定します。これには、systemd
を使ってRailsアプリケーションをサービス化し、再起動後に自動で起動するように設定します。
7. SSL対応(Let's Encryptを利用したHTTPS化)
WebサービスをHTTPS化するために、無料のSSL証明書サービス「Let's Encrypt」を利用します。これにより、安全な通信を提供でき、ユーザーの信頼を得ることができます。
8. スナップショットの作成(GCP永久無料枠でのデータ保護)
GCPのスナップショット機能を使って、インスタンスのバックアップを作成します。最大5GBまで無料で保存できるため、重要なデータを保護するために定期的にスナップショットを取ることをお勧めします。
9. bastionサーバーの作成(予定)
セキュリティの観点から、外部からのアクセスを制限するためにBastionサーバー(ジャンプホスト)を作成する予定です。このサーバーを介してインスタンスにアクセスすることで、セキュリティを強化できます。
この手順に従うことで、GCPの永久無料枠を最大限に活用し、費用を抑えながらWebサービスを運用することができます。
詳しくは、以下のリンクを参照してください:
よくある質問(QA)
Q1: GCPの永久無料枠はどのくらいの期間利用できますか?
A1: GCPの永久無料枠は、条件を満たす限り無期限で利用可能です。
Q2: 無料枠を超えた場合、どのように課金されますか?
A2: 無料枠を超えると、通常の料金が課金されますが、利用状況に応じて異なります。
Q3: 複数のアカウントで無料枠を利用できますか?
A3: 1人のユーザーは1つのGCPアカウントしか無料枠を利用できません。
その他の参考記事:gcp 無料 枠