Infrastructure / Web
Next.jsをAWS Lightsailで公開する:Nginx・SSL・CI/CD構築の完全ガイド
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での構築はマネージドサービスに比べ手間がかかりますが、インフラの裏側を完全に把握できる安心感があります。 これからも「技術をツールとして使い、日常の不便を解決する」姿勢でサイトを育てていきます。