著者:
    作成:2026-06-30最終更新:2026-09-27

    Intlayer のセルフホスティング

    Intlayer は独自のインフラストラクチャ上で実行でき、Intlayer Cloud アカウントは不要です。同じインストーラー(install.sh、Windows では install.ps1、または npx intlayer init infra)でセットアップできる3つの構成が用意されています:

    SetupWhat it isPick it for
    デスクトップアプリmacOS、Linux、Windows 向けのネイティブダッシュボードローカルクライアント、ホスティング不要
    オールインワン Dockerダッシュボード、API、MongoDB、Redis、MinIO を単一コンテナに集約テストや小規模な単一マシンへの導入
    Docker Composeサービスごとに1つのコンテナ、各データストアをマネージドサービスに置換可能本番環境、スケーリング、マネージドデータベース

    Table of Contents

    公開イメージおよびパッケージ

    ArtifactDocker HubGHCR mirrorContents
    All-in-one containerintlayer/cms-allghcr.io/aymericzip/intlayer/cms-allapp + backend + MongoDB 8 + Redis + MinIO + Chromium
    Dashboard (frontend)intlayer/cms-frontendghcr.io/aymericzip/intlayer/cms-frontendTanStack Start dashboard on Bun
    API (backend)intlayer/cms-backendghcr.io/aymericzip/intlayer/cms-backendFastify REST API on Bun + Chromium
    Desktop appGitHub releasesn/a.dmg (macOS), .deb / .rpm / .AppImage (Linux), .exe / .msi (Windows)

    3つのイメージはすべて同じ docker/selfhost/Dockerfile からビルドされ、リリースごとに公開されます。Compose スタックは公式の mongo:8、redis:8-alpine、quay.io/minio/minio イメージも取得します。

    セットアップ

    インストーラーは希望するセットアップを尋ね、前提条件を確認し(Dockerのインストールを提案)、生成済みのシークレットを含む環境ファイルを書き出し、イメージを取得します。自動で起動することはありません: Docker モードでは最初にメーラーが必要となるため、最後に実行すべきコマンドを出力して終了します。再実行は安全です: 既存の環境ファイルは上書きされないため、アップグレード時にも利用できます。

    Tauri で構築されたネイティブアプリケーションとしての Intlayer ダッシュボード。Intlayer Cloud (https://app.intlayer.org) にログインするため、ホスティングは不要です。ブラウザのタブではなくローカルクライアントを使用したい場合に最適な選択肢です。

    インストール

    インストーラーはお使いの OS と CPU に適したパッケージをダウンロードし、開く(macOS)、インストールする(Linux では dpkg / rpm)、またはセットアップウィザードを起動します(Windows)。リリースページ から手動でダウンロードすることもできます。

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode desktop
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
    
    bash
    npx intlayer init infra --mode desktop
    

    要件

    • Node.js: アプリにはダッシュボードのサーバーが組み込まれており、マシンの node バイナリで起動します。アプリが起動しない場合は nodejs.org からインストールしてください。
    公開されているデスクトップビルドは Intlayer Cloud バックエンドと通信します。セルフホストされたバックエンドに向けるには、API に合わせた VITE_BACKEND_URL でアプリをリビルドする必要があります。制限事項 を参照してください。

    すべてが単一の intlayer/cms-all コンテナ内で実行され、s6-overlay によって監視され、すべてのデータストアが1つのボリュームに永続化されます。

    plaintext
                    ┌─────────────────────────────┐
     browser ──────▶ │  app  (TanStack Start)  :3000│ ──┐
     (localhost)    └─────────────────────────────┘   │ VITE_BACKEND_URL (baked at build)
                    ┌─────────────────────────────┐   │
                    │  backend (Fastify/Bun)  :3100│ ◀─┘
                    └──────────────┬──────────────┘
              ┌──────────┬─────────┼──────────────┐
              ▼          ▼         ▼               ▼
          mongo:27017  redis:6379  minio:9000   Chromium
          /data/mongo  /data/redis /data/minio  (in-image)
          (1-node RS)              minio:9001
    
    サービスホストポート用途
    app3000ダッシュボード(CMS UI)
    backend3100REST API(/health エンドポイント)
    mongo内部MongoDB 8、シングルノードレプリカセット rs0
    redis内部ジョブキュー(BullMQ)およびキャッシング
    minio9000 (S3), 9001 (コンソール)アバターやスクリーンショット用の S3 互換オブジェクトストレージ

    起動順序は s6 の依存関係(mongod → replica-set 初期化、minio → バケット作成、その後 backend、最後に app)によって管理され、終了時にサービスが再起動するため、初回起動時も自動的に復旧します。

    前提条件

    • Docker ≥ 24: インストーラーがインストールを提案します(Linux では get.docker.com、macOS では Homebrew 経由)。Windows では、まず Docker Desktop(WSL 2 バックエンド)をインストールしてください。
    • ホスト上でポート 3000、3100、9000、9001 が空いていること。MinIO 9000 は、ブラウザが S3_PUBLIC_URL から直接アセットを読み込むため、ブラウザから到達可能である必要があります。
    • メーラー: Resend API キーまたは SMTP リレー。

    1. インストール

    BETTER_AUTH_SECRET および S3_SECRET_ACCESS_KEY が生成された ./intlayer.env を書き込み、残りの項目を埋めるためにいくつか質問をしたうえで、intlayer/cms-all:latest を取得します。

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode docker
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "docker"; irm https://intlayer.org/install.ps1 | iex
    
    bash
    npx intlayer init infra --mode docker
    

    2. セットアップの質問に回答する

    インストーラーは次の項目を尋ねます(Enter を押すと提案値を受け入れます。どの回答も後からファイルで変更できます):

    • Intlayer を提供するドメイン。空のままにすると localhost のままになります。example.org のようなドメインを指定すると、ダッシュボードに https://cms.example.org、API に https://back.example.org、オブジェクトストレージに https://s3.example.org/intlayer を提案し、DOMAIN、APP_URL、BACKEND_URL、S3_PUBLIC_URL を書き込みます。その後の手順は カスタムドメイン を参照してください。
    • メーラー: Resend(API キー)または SMTP リレー(ホスト、ポート、認証情報)と送信元アドレス。この項目はスキップして後から手動で設定できます。
    • AI 機能用の任意の OpenAI API キー。

    ターミナルがない場合(たとえば CI からスクリプトを実行する場合)、質問はスキップされ、シークレットのみが生成されます。intlayer.env を開き、Resend または SMTP を手動で設定します(詳細は グローバルメーラー を参照):

    intlayer.env
    # Option A: Resend
    RESEND_API_KEY=<your-resend-key>
    
    # Option B: SMTP (takes over from Resend as soon as MAIL_SMTP_HOST is set)
    MAIL_SMTP_HOST=smtp.example.com
    MAIL_SMTP_PORT=587
    MAIL_SMTP_USER=<user>
    MAIL_SMTP_PASSWORD=<password>
    MAIL_FROM=Intlayer <no-reply@example.com>
    

    3. 起動

    インストーラーが出力する起動コマンドです(カスタムドメインの場合は、その前に intlayer/cms-all:custom を生成する docker build が実行されます。カスタムドメイン を参照):

    sh
    docker run -d --name intlayer \
      --restart unless-stopped \
      -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
      -v intlayer-data:/data \
      --env-file ./intlayer.env \
      intlayer/cms-all:latest
    
    powershell
    docker run -d --name intlayer `
      --restart unless-stopped `
      -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 `
      -v intlayer-data:/data `
      --env-file ./intlayer.env `
      intlayer/cms-all:latest
    

    CLI がインストーラーを実行し、他のタブに示されている docker run … コマンドを出力します。メーラーを設定したらターミナルに貼り付けて実行してください。

    http://localhost:3000(またはダッシュボードの URL)を開き、初回セットアップ に従います。初回の起動ではレプリカセットとバケットが初期化されるため、少しお待ちください。

    バックアップとアップグレード

    すべての状態は intlayer-data ボリューム(/data/mongo、/data/redis、/data/minio)内に保持されます。

    sh
    # Backup (stop the container first so MongoDB's files are consistent)
    docker stop intlayer
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar czf /backup/intlayer-data.tar.gz /data
    docker start intlayer
    
    # Restore
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
    

    アップグレードするには、インストーラーを再実行し(最新イメージを取得し、intlayer.env を維持します)、docker rm -f intlayer を実行してから起動コマンドを再実行します。バンドルされたものではなくマネージド MongoDB を使用するには、intlayer.env に MONGODB_URI を設定します。

    プライベートな Compose ネットワーク上のサービスごとに1つのコンテナを用意します。ダッシュボードと API は公開されている intlayer/cms-frontend および intlayer/cms-backend イメージを使用し、データストアは公式の mongo、redis、minio イメージを使用します。

    plaintext
                    ┌───────────────────┐
     browser ──────▶ │  app        :3000 │ ── SSR ──▶ http://backend:3100
     (localhost)    └───────────────────┘
                    ┌───────────────────┐
     browser ──────▶ │  backend    :3100 │
     (localhost)    └─────────┬─────────┘
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
         mongo:27017     redis:6379      minio:9000 ◀── browser (assets)
         (1-node RS)                     minio:9001
    
    サービスイメージ役割
    appintlayer/cms-frontend:3000 上のダッシュボード。バックエンドが健全になるのを待機
    backendintlayer/cms-backend:3100 上の Chromium 付き API。Mongo、Redis、MinIO バケットを待機
    mongomongo:8自身のヘルスチェックによって初期化されるシングルノードレプリカセット rs0
    redisredis:8-alpineキューおよびキャッシング、追記専用(append-only)永続化
    minioquay.io/minio/minio:9000 の S3 ストレージ、:9001 のコンソール
    minio-initquay.io/minio/mcワンショット: バケットとその匿名ダウンロードポリシーを作成

    データは intlayer_mongo-data、intlayer_redis-data、intlayer_minio-data の各ボリュームに保存されます。サービスの接続設定(MONGODB_URI、REDIS_URL、S3_ENDPOINT、サーバーサイドレンダリング用の内部バックエンド URL)は compose ファイルに固定されており、シークレットとオプションの統合のみを保持する .env よりも優先されます。

    前提条件

    • Docker ≥ 24(Compose プラグイン付き): インストーラーが Linux および macOS 上でインストールを提案します。Windows では、まず Docker Desktop(WSL 2 バックエンド)をインストールしてください。
    • ホスト上でポート 3000、3100、9000、9001 が空いていること。
    • メーラー: Resend API キーまたは SMTP リレー。

    1. インストール

    docker-compose.yml と生成されたシークレットを含む .env を ./intlayer/ に書き出し、オールインワンモードと同じセットアップの質問(ドメイン、メーラー、OpenAI キー)をしたうえで、イメージを取得します。

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode compose
    

    Or by hand:

    sh
    mkdir intlayer && cd intlayer
    curl -fsSLO https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml
    curl -fsSL  https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -o .env
    # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
    

    Or by hand:

    powershell
    mkdir intlayer; cd intlayer
    irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml -OutFile docker-compose.yml
    irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -OutFile .env
    # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY
    
    bash
    npx intlayer init infra --mode compose
    

    2. メーラーの設定

    メーラーの質問をスキップした場合は、オールインワン構成と同様に、intlayer/.env に Resend または SMTP を記入します(グローバルメーラー を参照)。

    3. 起動

    sh
    cd intlayer && docker compose up -d
    

    カスタムドメインの場合、インストーラーは docker-compose.build.yml もダウンロードし、起動コマンドは docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build になります(カスタムドメイン を参照)。

    http://localhost:3000(またはダッシュボードの URL)を開き、初回セットアップ に従います。

    マネージドデータストア

    compose ファイルから置き換えるサービス(および backend の depends_on エントリ)を削除し、対応する変数を上書きします:

    docker-compose.yml
    services:
      backend:
        environment:
          MONGODB_URI: mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/intlayer
          REDIS_URL: rediss://default:password@redis.example.com:6380
          S3_ENDPOINT: https://s3.eu-west-1.amazonaws.com
          S3_PUBLIC_URL: https://intlayer-assets.s3.eu-west-1.amazonaws.com
    

    S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY / S3_BUCKET_NAME は、任意の S3 互換プロバイダーに対してそのまま機能します。

    スケーリング

    app と backend はステートレスです。ロードバランサーの背後では、固定のホストポートマッピングを削除し、プロキシがサービス名でルーティングするようにすれば、docker compose up -d --scale backend=3 が機能します。バックグラウンドジョブは Redis (BullMQ) 経由で調整されるため、複数のバックエンドレプリカがキューを安全に共有します。

    ソースからのビルド

    オーバーライド設定により、2つの Intlayer サービスを image: から build: に切り替えます。リポジトリのクローンから:

    sh
    cd docker/selfhost
    docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
    

    クローンがない場合は、.env に INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main を設定して、ビルドコンテキストをリポジトリ自体に向けます。ダッシュボードの VITE_* ビルド引数は同じファイルの DOMAIN、APP_URL、BACKEND_URL に従います。これが カスタムドメイン を適用する方法です。

    バックアップとアップグレード

    sh
    # Backup one volume (repeat for intlayer_redis-data and intlayer_minio-data)
    docker compose stop
    docker run --rm -v intlayer_mongo-data:/data -v "$(pwd)":/backup busybox tar czf /backup/mongo-data.tar.gz /data
    docker compose start
    
    # Upgrade, volumes are kept
    docker compose pull && docker compose up -d
    

    インストーラーの設定

    --mode(または INTLAYER_MODE)を指定しない場合、インストーラーはメニューを表示します: desktop、docker(オールインワン)、または compose。また、いくつかの環境変数も読み取ります。シェルへのパイプライン処理を行うため、curl ではなくシェルに変数を渡してください:

    sh
    curl -fsSL https://intlayer.org/install.sh | INTLAYER_COMPOSE_DIR=./cms sh -s -- --mode compose
    
    powershell
    $env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
    
    VariableDefaultApplies toDescription
    INTLAYER_MODE(asked)alldesktop, docker or compose, same as --mode
    INTLAYER_DOWNLOAD_DIR~/DownloadsdesktopWhere the app installer is saved
    INTLAYER_IMAGEintlayer/cms-all:latestdockerAll-in-one image to pull
    INTLAYER_ENV_FILE./intlayer.envdockerWhere to write the environment file
    INTLAYER_CONTAINER_NAMEintlayerdockerContainer name
    INTLAYER_DATA_VOLUMEintlayer-datadockerNamed volume mounted at /data
    INTLAYER_APP_PORT3000dockerHost port for the dashboard
    INTLAYER_API_PORT3100dockerHost port for the API
    INTLAYER_S3_PORT9000dockerHost port for the MinIO S3 API
    INTLAYER_CONSOLE_PORT9001dockerHost port for the MinIO console
    INTLAYER_COMPOSE_DIR./intlayercomposeWhere docker-compose.yml and .env are written
    INTLAYER_SELFHOST_REFmainbothGit ref the compose file and env template are fetched from
    INTLAYER_BUILD_CONTEXT…/intlayer.git#mainbothBuild context used when a custom domain requires a rebuild
    INTLAYER_CUSTOM_IMAGEintlayer/cms-all:customdockerTag of the all-in-one image built for a custom domain
    ポート変数はマッピングの ホスト 側のみを変更します。公開されているイメージには http://localhost:3000、http://localhost:3100、http://localhost:9000 がダッシュボードバンドルにコンパイルされているため、独自のイメージをビルドしない限りデフォルトを維持してください。制限事項 を参照してください。

    初回セットアップ

    新規インスタンス(空のデータベース)でダッシュボードを開くと、自動的に /init ページにリダイレクトされます:

    1. 最初のアカウントを作成します。ユーザーコレクションが空のため、このアカウントは自動的に スーパー管理者 に昇格します。
    2. Resend または SMTP リレー経由で確認メールが送信されます。メール確認は 必須 です。そのため、起動前にメーラーを設定する必要があります。
    3. メール内のリンクをクリックし、サインインします。

    管理者が存在する場合、/init は通常のサインインページにリダイレクトされます。

    環境変数

    両方の Docker モードは、docker/selfhost/.env.template から生成された同じファイル(コンテナ用は intlayer.env、Compose 用は .env)を読み取ります。

    必須項目

    VariableExampleDescription
    BETTER_AUTH_SECRET(generated)32-byte secret for session signing
    S3_SECRET_ACCESS_KEY(generated)Secret for the bundled MinIO
    RESEND_API_KEY(your key)Transactional email via Resend. Required for first-run setup unless an SMTP relay is configured instead (see Global mailer)

    デプロイによって固定

    これらはイメージ(オールインワン)または compose ファイルで設定され、標準的でない構成の場合にのみ上書きが必要です。ただし DOMAIN、APP_URL、BACKEND_URL、S3_PUBLIC_URL は例外で、env ファイルで設定すると両方のモードで優先されます(カスタムドメイン を参照)。

    VariableAll-in-oneDocker ComposeDescription
    PORT31003100Backend listening port
    APP_URLhttp://localhost:3000http://localhost:3000Public URL of the dashboard
    BACKEND_URLhttp://localhost:3100http://localhost:3100Public URL of the backend API
    DOMAINlocalhostlocalhostCookie domain
    SELF_HOSTEDtruetrueDisables the cloud-only API endpoints (billing, subscriptions, marketplace)
    MONGODB_URImongodb://127.0.0.1:27017/intlayer?replicaSet=rs0mongodb://mongo:27017/…MongoDB connection string, any mongodb:// or mongodb+srv:// cluster works
    REDIS_URLredis://127.0.0.1:6379redis://redis:6379Redis
    S3_ENDPOINThttp://127.0.0.1:9000http://minio:9000MinIO (server-to-server)
    S3_PUBLIC_URLhttp://localhost:9000/intlayerhttp://localhost:9000/intlayerPublic URL for browser asset loading
    S3_BUCKET_NAMEintlayerintlayerBucket name
    S3_ACCESS_KEY_IDintlayerintlayerMinIO access key

    Compose の app サービスは追加で INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100 を受け取ります: ブラウザは localhost:3100 で API にアクセスしますが、サーバーサイドレンダリングは Compose ネットワーク内で実行されるため、サービス名を使用する必要があります。

    カスタムドメイン

    バックエンドは公開 URL を実行時に読み込みますが、ダッシュボードではそれらがコンパイル時に組み込まれています。公開されている intlayer/cms-frontend および intlayer/cms-all イメージは http://localhost:3000 でしか動作しません。そのため、独自のドメインで Intlayer を提供するには次の2つが必要です。どちらも、ドメインの質問に回答するとインストーラーが準備します:

    1. env ファイル内の4つの変数。バックエンドが読み込み(Cookie、メールのリンク、OAuth コールバック、アセット URL)、docker-compose.build.yml がビルド引数として使用します:

      intlayer.env
      DOMAIN=example.org                          # cookie domain, parent of the hosts below
      APP_URL=https://cms.example.org
      BACKEND_URL=https://back.example.org
      S3_PUBLIC_URL=https://s3.example.org/intlayer
      
    2. これらの URL でビルドしたダッシュボードイメージ。 Docker はリポジトリから直接ビルドするため、クローンは不要です:

      sh
      # Docker Compose: the override reads the build args from .env
      docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
      
      # All-in-one
      docker build -f docker/selfhost/Dockerfile \
        --build-arg VITE_DOMAIN=example.org \
        --build-arg VITE_SITE_URL=https://cms.example.org \
        --build-arg VITE_IDE_URL=https://cms.example.org \
        --build-arg VITE_BACKEND_URL=https://back.example.org \
        -t intlayer/cms-all:custom \
        https://github.com/aymericzip/intlayer.git#main
      

    次に、TLS 対応のリバースプロキシをコンテナの前に配置します: cms.example.org → ポート 3000、back.example.org → 3100、s3.example.org → 9000。セッション Cookie のスコープが DOMAIN に限定されるため、3つのホストはこのサフィックスを共有する必要があります。

    オプション(設定しない場合でも機能は正常にフォールバックします)

    VariableFeature
    OPENAI_API_KEYAI-assisted translation and content audit
    GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETGitHub OAuth login
    GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETGoogle OAuth login
    GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRETGitLab OAuth login
    MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRETMicrosoft OAuth login

    グローバルメーラー

    パスワードのリセットやマジックリンクなど、組織外のメールを含むすべてのトランザクションメールは、次の2つのグローバルトランスポートのいずれかを経由します:

    • Resend: RESEND_API_KEY を使用。
    • SMTP: MAIL_SMTP_* 変数を使用。MAIL_SMTP_HOST が設定されると直ちに SMTP が使用され、RESEND_API_KEY は無視されます。

    MAIL_PROVIDER は、両方が構成されている場合に一方のトランスポートを強制するためにのみ必要です(たとえば、SMTP ホストが存在する場合に Resend を維持するために MAIL_PROVIDER=resend)。

    VariableExampleDescription
    MAIL_FROMIntlayer <no-reply@acme.com>Sender header for either transport. Accepts a bare address or Name <email>
    MAIL_SMTP_HOSTsmtp.acme.comSMTP host. Setting it selects the SMTP transport
    MAIL_SMTP_PORT587SMTP port (defaults to 587)
    MAIL_SMTP_SECUREfalseImplicit TLS. Set true for port 465
    MAIL_SMTP_USER(your user)SMTP username (optional; omit for unauthenticated relays)
    MAIL_SMTP_PASSWORD(your password)SMTP password
    MAIL_PROVIDERresendOptional override: smtp or resend. Leave unset to auto-select
    優先順位: 組織独自のメーラー(組織 ダッシュボードから構成)はグローバルメーラーよりも優先され、グローバルメーラーはデフォルトの Resend キーよりも優先されます。

    Intlayer プロジェクトの接続

    スタックが実行されたら、intlayer.org ではなく、セルフホストされたバックエンドとダッシュボードを指すようにプロジェクトを設定します。

    プロジェクト設定

    intlayer.config.ts
    import type { IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      editor: {
        clientId: process.env.INTLAYER_CLIENT_ID,
        clientSecret: process.env.INTLAYER_CLIENT_SECRET,
    
        /**
         * URL of the self-hosted CMS dashboard.
         * Default: https://app.intlayer.org
         */
        cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
    
        /**
         * URL of the self-hosted backend API.
         * Default: https://back.intlayer.org
         */
        backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
      },
    };
    
    export default config;
    

    Set the environment variables in your project's .env:

    sh
    INTLAYER_CMS_URL=http://localhost:3000
    INTLAYER_BACKEND_URL=http://localhost:3100
    INTLAYER_CLIENT_ID=<your-client-id>
    INTLAYER_CLIENT_SECRET=<your-client-secret>
    

    セルフホストダッシュボードの Projects → Access keys (http://localhost:3000/projects) でアクセス資格情報を作成します。

    @intlayer/api SDK

    プログラムで @intlayer/api SDK を使用する場合、backendURL を明示的に渡します:

    cms.ts
    import { createIntlayerCMS } from "@intlayer/api";
    import { dictionaryEndpoint } from "@intlayer/api/dictionary";
    
    const cms = createIntlayerCMS({
      editor: {
        clientId: process.env.INTLAYER_CLIENT_ID,
        clientSecret: process.env.INTLAYER_CLIENT_SECRET,
        backendURL: process.env.INTLAYER_BACKEND_URL, // http://localhost:3100
      },
    });
    
    const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
    

    制限事項

    • カスタムドメインにはリビルドが必要。 ブラウザ向けのすべての VITE_* URL はビルド時にダッシュボードに組み込まれ、公開イメージ(およびデスクトップアプリ)には localhost / Intlayer Cloud の値が設定されています。初期状態では、ダッシュボードは http://localhost:3000、API は :3100、MinIO は :9000 でアクセスする必要があり、ホストポートを再マッピングしても同じ結果になります。ドメインを指定すると、インストーラーはリポジトリからのリビルドに必要なものをすべて準備しますが(カスタムドメイン を参照)、ビルド自体には数分かかります。デスクトップアプリをセルフホストバックエンドに向けることはサポートされていません。
    • メール送信には機能するメーラーが必要です。 初回セットアップではメール確認が必須となるため、RESEND_API_KEY または SMTP リレー (MAIL_SMTP_*) のいずれかを構成する必要があります。最初の管理者がサインインした後、各組織はダッシュボードから独自の SMTP または Resend メーラーを構成することもできます。
    • デスクトップアプリは組み込みサーバーを起動するためにマシン上に Node.js を必要とします。
    • ドキュメントアシスタントなし。 intlayer.org の AI ドキュメントアシスタント(/api/ai/ask、/api/search/doc)は、セルフホストイメージに含まれていない約 130 MB の事前計算済みドキュメント埋め込みに依存しているため、セルフホストモードではこの2つのルートは登録されません。ダッシュボード自体の AI 機能(翻訳、監査、オートコンプリート、チャット)には影響がなく、OPENAI_API_KEY のみが必要です。

    便利なリンク