概要

Next Auth (Auth.js v5) を使用したアプリケーションを Docker コンテナや本番環境にデプロイする際、AUTH_URL 環境変数を設定しないと GitHub OAuth 認証で以下のエラーが発生します:

Be careful!
The redirect_uri is not associated with this application.

開発環境 vs 本番環境

開発環境(npm run dev

開発環境では Next.js が自動的にホスト情報を検出するため、AUTH_URL の設定は不要 です。

# これだけで動作する
npm run dev

本番環境(Docker / npm run build && npm start

本番環境では Next Auth がホスト情報を自動検出できないため、AUTH_URL の設定が必須 です。

# .env.local または環境変数に追加
AUTH_URL=http://localhost:3000  # または https://your-domain.com
AUTH_TRUST_HOST=true

Docker での設定例

docker run の場合

docker run -d --name myapp -p 3000:3000 \
  --env-file .env.local \
  -e AUTH_TRUST_HOST=true \
  myapp:latest

docker-compose.yml の場合

services:
  app:
    image: myapp:latest
    ports:
      - "3000:3000"
    environment:
      - AUTH_URL=https://your-domain.com
      - AUTH_TRUST_HOST=true
    env_file:
      - .env.local

必要な環境変数一覧

変数名開発環境本番環境説明
AUTH_SECRET必須必須セッション暗号化キー
AUTH_GITHUB_ID必須必須GitHub OAuth Client ID
AUTH_GITHUB_SECRET必須必須GitHub OAuth Client Secret
AUTH_URL不要必須アプリケーションのベースURL
AUTH_TRUST_HOST不要必須ホストを信頼する設定

.env.local の例

# NextAuth.js Configuration
AUTH_SECRET=your-secret-key-here

# GitHub OAuth App Credentials
AUTH_GITHUB_ID=your-client-id
AUTH_GITHUB_SECRET=your-client-secret

# Production only (Docker / deployed environments)
AUTH_URL=http://localhost:3000

なぜこの問題が起きるのか

  1. 開発環境 : Next.js の開発サーバーがリクエストヘッダーから正確なホスト情報を取得できる
  2. 本番環境 : Docker コンテナ内では 0.0.0.0:3000 として起動するため、外部からアクセスする際の実際のURLがわからない
  3. OAuth の仕組み : GitHub は登録された redirect_uri と完全一致するURLにのみリダイレクトを許可する

トラブルシューティング

エラー: “redirect_uri is not associated with this application”

原因 : AUTH_URL が未設定、または GitHub OAuth App の Callback URL と一致しない

解決策 :

  1. AUTH_URL を正しく設定
  2. GitHub OAuth App の「Authorization callback URL」に {AUTH_URL}/api/auth/callback/github を設定

エラー: “UntrustedHost: Host must be trusted”

原因 : AUTH_TRUST_HOST が未設定

解決策 : 環境変数に AUTH_TRUST_HOST=true を追加

参考リンク


作成日: 2026-01-27