Infrastructure / Web

Next.jsをAWS Lightsailで公開する:Nginx・SSL・CI/CD構築の完全ガイド

著者: Haruki Shioya|

Next.jsでポートフォリオを構築する際、多くの方はVercelやNetlifyを検討するでしょう。 しかし、ITエンジニアとして5年間のキャリアを歩む中で、私は「インフラの制御権を自分で持つこと」の重要性を感じ、あえてAWS Lightsailでの運用を選択しました。

本記事では、VPS上でNext.jsを安定稼働させ、開発体験を損なわないためのCI/CD構築までの道のりを解説します。

1. なぜVercelではなく「AWS Lightsail」なのか

Vercelは非常に優秀ですが、ポートフォリオサイトを通じてインフラ層(OSやWebサーバーの設定)のスキルもアピールしたいと考えました。AWS Lightsailを選んだ理由は主に3点です。

  • コストの固定化: 月額固定料金で運用でき、予期せぬトラフィック増による課金リスクを抑制。
  • 自由度の高さ: 将来的に自作のC言語ツールやJavaアプリを同じドメイン配下で動かすといった柔軟な設計が可能。
  • 学習効果: 証明書の更新やプロセス管理を自ら行うことで、現場で役立つ知識が身につく。

2. PM2によるプロセスの永続化

Next.jsを常時起動させるため、プロセス管理ツール「PM2」を導入しました。 これにより、SSH接続を切断した後やサーバーの再起動後もアプリケーションが自動で立ち上がります。

# プロセスの起動と保存

pm2 start npm --name "portfolio" -- start

pm2 save

3. NginxとSSL化(HTTPS対応)

ポート3000で動作するNext.jsを外部からアクセス可能にするため、Nginxをリバースプロキシとして配置しました。 また、Google AdSense審査においてHTTPS化(常時SSL)は必須条件です。Certbotを使用してLet's Encryptの証明書を導入しました。

「ブラウザの保護されていない通信という警告を消すことは、ユーザーと検索エンジン双方の信頼獲得に繋がります。」

4. GitHub ActionsによるCI/CD

「VPSはデプロイが面倒」という課題は、GitHub Actionsで解決しました。`main`ブランチへのpushを検知し、自動でビルドとデプロイを行うパイプラインを構築しています。

まとめ

Lightsailでの構築はマネージドサービスに比べ手間がかかりますが、インフラの裏側を完全に把握できる安心感があります。 これからも「技術をツールとして使い、日常の不便を解決する」姿勢でサイトを育てていきます。