Coolifyを使用したNext.jsプロジェクトのデプロイ
この記事では、Coolifyを使用してNext.jsプロジェクトをデプロイする詳細ガイドを提供し、プロジェクトを迅速に立ち上げるお手伝いをします。
CoolifyはDokployよりもVPSの性能要件が高いため、VPSのスペックが低い場合は、Dokployを選択し、Dokployデプロイドキュメントを参照してください。
前提条件
デプロイを開始する前に、next.config.mjsに以下の設定を追加することをお勧めします:
const nextConfig = {
output: "standalone", // この行を追加
// その他のコード...
}CoolifyはDocker上で動作するため、standaloneモードを使用することで、ビルドイメージのサイズを大幅に削減できます。
Coolifyとは
Coolifyは、オープンソースのセルフホスト型PaaS(Platform as a Service)プラットフォームで、Vercel、Netlify、Railway、Zeaburなどのサービスに代わるオープンソースの選択肢として機能します。

サーバーの準備とCoolifyのインストール
サーバーの購入
Coolifyを使用するには、独自のサーバーを購入する必要があります。どのサービスプロバイダーを選択すればよいかわからない場合は、hostingerを検討してください。初期プロジェクトには、4コア16GBのVPSで十分で、月額わずか$7.99です。

サーバーの設定
支払い完了後、画面の指示に従ってVPSを設定します。設定が完了すると、ダッシュボードにVPSが起動したことが表示されます。
次に、ファイアウォールルールを設定する必要があります。Hostingerにはデフォルトのファイアウォールルールがないため、すべてのポートが開いており、セキュリティリスクがあります。ポート22、80、443、8000へのアクセスを許可するファイアウォールルールを作成する必要があります。
ポート8000は、Coolify登録ページへのアクセスに使用されます。後でCoolifyのカスタムドメイン設定を完了したら、ポート8000を閉じる必要があります。


Coolifyのインストール
公式ドキュメントに従ってコマンドラインからインストールするか、Hostingerダッシュボードから直接インストールできます。

インストールが完了したら、http://your_server_ip:8000を開いてCoolifyダッシュボードにアクセスします。


Coolifyの設定
登録してログイン後、まずダッシュボード用のカスタムドメインを設定します:

次に、DNSプラットフォーム(CloudFlareを例として使用)でこのカスタムドメインのDNSレコードを追加し、Aレコードタイプを選択し、サーバーのIPアドレスを入力します。

DNSが伝播したら、カスタムドメインを使用してCoolifyダッシュボードにアクセスできます。
ファイアウォールからポート8000を削除することを忘れないでください。今後は、ドメインを使用してのみアクセスしてください。
最後に、以下のようにGitアカウントを接続します:




デプロイ手順
Coolifyは、Vercelのようなビジュアルデプロイインターフェースを提供しており、GitHubリポジトリを簡単に選択して自動デプロイできます。





カスタムドメインとリダイレクトルールを設定します:

作成後、CloudflareでDNSを設定する必要があります:

2つのレコードを追加します:
Aレコード:
your-domain.com -> サーバーのIP
Proxyを有効化
Aレコード:
www.your-domain.com -> サーバーのIP
Proxyを有効化次に、SSL/TLS設定を開き、FullまたはFlexibleを選択します:

環境変数を設定します:


次に、右上のDeployボタンをクリックして自動デプロイを開始します。
ビルドの進行状況を確認します:

今後、コードをコミットするたびに自動的にデプロイがトリガーされます。
高度な使用方法
ログ記録
Next.jsプロジェクトでPinoをログ記録に使用している場合、Coolifyの機能を使用してログディレクトリをホストマシンにマウントできます。
- 左メニューの「Persistent Storage」をクリック
- 「+ Add」をクリックして新しいストレージマウントを追加し、以下を入力します:
- Source Path(ホストマシンパス):
/var/log/nexty-dev - Destination Path(コンテナパス):
/app/logs
- Source Path(ホストマシンパス):


- 設定を保存してRedeployをクリック

設定が有効になると、コンテナ内の/app/logsに書き込まれたログファイルは、実際にはホストマシンの/var/log/nexty-devに保存されます。
VPS上でログを確認する:
# ログファイルリストを表示
ls -la /var/log/nexty-dev/
# リアルタイムでログを表示
tail -f /var/log/nexty-dev/xxxxxxxx-*.log
# 特定の内容を検索
grep "error" /var/log/nexty-dev/xxxxxxxx-*.logローカルでログを確認するには、scpコマンドを使用してフォルダ全体または特定のファイルをエクスポートできます:
# ローカルマシンで実行
scp -r root@ip:/var/log/nexty-dev/ ./nexty-logs/Redisのデプロイ
Redisの作成手順は通常のプロジェクトの作成と似ていますが、ResourceとしてRedisを選択する必要があります。


作成後、設定情報を確認できます:

本番環境では、同じサーバーにデプロイされている場合、内部リンクを直接使用できます。
その他の主要な設定オプション:
- Ports Mappings:
host_port:container_portをマッピングします。例えば、一時的なローカルデバッグが必要な場合、6380:6379に設定することで、ローカルからIPとポート6380経由でRedisにアクセスできます。 - SSL設定:
- Redisに接続するトラフィックはTLS/SSL経由で暗号化されます。
- データとパスワードが送信中に傍受されるのを防ぐため、有効にすることをお勧めします。
- 有効にすると、クライアント接続文字列は通常
redis://からrediss://に変更する必要があります。 - Coolifyが生成したCAファイルをローカルマシンにダウンロードするには:
echo | openssl s_client -connect 72.62.133.215:23771 2>/dev/null | openssl x509 > redis_server.crt
- Proxy - Make it publicly available:
- 未チェック:同じCoolifyインスタンス内のアプリケーションのみがこのRedisにアクセスできます
- チェック:Public Portが設定されている場合のみ有効にできます。チェックすると、Public URLが表示されます。
- Public Port:サーバーIP経由でRedisにアクセスするために使用されるポート番号を定義します。必要な場合は、6379よりもセキュリティが高い5桁の一般的でないポートを設定することをお勧めします。
一時的なローカルデバッグには、Ports Mappingsを使用し、使用後すぐにポートを閉じてください。インターネットアクセスを維持する必要がある場合は、SSL、Proxy、Public Portを設定することをお勧めします。
Ports MappingsまたはProxy経由で接続する場合、VPSファイアウォールで対応するポートを開く必要があります。
RedisのAOFを有効化
Redisのデータ永続化が必要な場合、Custom Redis Configurationに以下の2行を追加してAOFを有効にできます:
appendonly yes
appendfsync everysec次に、上部にスクロールしてSaveをクリックし、その後Restartをクリックします。
AOFが正しく有効になっているかを確認するには、上部のTerminalを開いてコマンドを実行します:
redis-cli
AUTH YOUR_PASSWORD
CONFIG GET appendonly