このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayer のセルフホスティング
Intlayer は独自のインフラストラクチャ上で実行でき、Intlayer Cloud アカウントは不要です。同じインストーラー(install.sh、Windows では install.ps1、または npx intlayer init infra)でセットアップできる3つの構成が用意されています:
テーブルをモーダルで開き、すべてのデータを明確に表示
| Setup | What it is | Pick it for |
|---|---|---|
| デスクトップアプリ | macOS、Linux、Windows 向けのネイティブダッシュボード | ローカルクライアント、ホスティング不要 |
| オールインワン Docker | ダッシュボード、API、MongoDB、Redis、MinIO を単一コンテナに集約 | テストや小規模な単一マシンへの導入 |
| Docker Compose | サービスごとに1つのコンテナ、各データストアをマネージドサービスに置換可能 | 本番環境、スケーリング、マネージドデータベース |
Table of Contents
公開イメージおよびパッケージ
テーブルをモーダルで開き、すべてのデータを明確に表示
| Artifact | Docker Hub | GHCR mirror | Contents |
|---|---|---|---|
| All-in-one container | intlayer/cms-all | ghcr.io/aymericzip/intlayer/cms-all | app + backend + MongoDB 8 + Redis + MinIO + Chromium |
| Dashboard (frontend) | intlayer/cms-frontend | ghcr.io/aymericzip/intlayer/cms-frontend | TanStack Start dashboard on Bun |
| API (backend) | intlayer/cms-backend | ghcr.io/aymericzip/intlayer/cms-backend | Fastify REST API on Bun + Chromium |
| Desktop app | GitHub releases | n/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)。リリースページ から手動でダウンロードすることもできます。
コードをクリップボードにコピー
In PowerShell:
コードをクリップボードにコピー
コードをクリップボードにコピー
要件
- Node.js: アプリにはダッシュボードのサーバーが組み込まれており、マシンの
nodeバイナリで起動します。アプリが起動しない場合は nodejs.org からインストールしてください。
公開されているデスクトップビルドは Intlayer Cloud バックエンドと通信します。セルフホストされたバックエンドに向けるには、API に合わせた VITE_BACKEND_URL でアプリをリビルドする必要があります。制限事項 を参照してください。
すべてが単一の intlayer/cms-all コンテナ内で実行され、s6-overlay によって監視され、すべてのデータストアが1つのボリュームに永続化されます。
コードをクリップボードにコピー
テーブルをモーダルで開き、すべてのデータを明確に表示
| サービス | ホストポート | 用途 |
|---|---|---|
| app | 3000 | ダッシュボード(CMS UI) |
| backend | 3100 | REST API(/health エンドポイント) |
| mongo | 内部 | MongoDB 8、シングルノードレプリカセット rs0 |
| redis | 内部 | ジョブキュー(BullMQ)およびキャッシング |
| minio | 9000 (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が空いていること。MinIO9000は、ブラウザがS3_PUBLIC_URLから直接アセットを読み込むため、ブラウザから到達可能である必要があります。 - メーラー: Resend API キーまたは SMTP リレー。
1. インストール
BETTER_AUTH_SECRET および S3_SECRET_ACCESS_KEY が生成された ./intlayer.env を書き込み、残りの項目を埋めるためにいくつか質問をしたうえで、intlayer/cms-all:latest を取得します。
コードをクリップボードにコピー
In PowerShell:
コードをクリップボードにコピー
コードをクリップボードにコピー
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 を手動で設定します(詳細は グローバルメーラー を参照):
コードをクリップボードにコピー
3. 起動
インストーラーが出力する起動コマンドです(カスタムドメインの場合は、その前に intlayer/cms-all:custom を生成する docker build が実行されます。カスタムドメイン を参照):
コードをクリップボードにコピー
コードをクリップボードにコピー
CLI がインストーラーを実行し、他のタブに示されている docker run … コマンドを出力します。メーラーを設定したらターミナルに貼り付けて実行してください。
http://localhost:3000(またはダッシュボードの URL)を開き、初回セットアップ に従います。初回の起動ではレプリカセットとバケットが初期化されるため、少しお待ちください。
バックアップとアップグレード
すべての状態は intlayer-data ボリューム(/data/mongo、/data/redis、/data/minio)内に保持されます。
コードをクリップボードにコピー
アップグレードするには、インストーラーを再実行し(最新イメージを取得し、intlayer.env を維持します)、docker rm -f intlayer を実行してから起動コマンドを再実行します。バンドルされたものではなくマネージド MongoDB を使用するには、intlayer.env に MONGODB_URI を設定します。
プライベートな Compose ネットワーク上のサービスごとに1つのコンテナを用意します。ダッシュボードと API は公開されている intlayer/cms-frontend および intlayer/cms-backend イメージを使用し、データストアは公式の mongo、redis、minio イメージを使用します。
コードをクリップボードにコピー
テーブルをモーダルで開き、すべてのデータを明確に表示
| サービス | イメージ | 役割 |
|---|---|---|
app | intlayer/cms-frontend | :3000 上のダッシュボード。バックエンドが健全になるのを待機 |
backend | intlayer/cms-backend | :3100 上の Chromium 付き API。Mongo、Redis、MinIO バケットを待機 |
mongo | mongo:8 | 自身のヘルスチェックによって初期化されるシングルノードレプリカセット rs0 |
redis | redis:8-alpine | キューおよびキャッシング、追記専用(append-only)永続化 |
minio | quay.io/minio/minio | :9000 の S3 ストレージ、:9001 のコンソール |
minio-init | quay.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 キー)をしたうえで、イメージを取得します。
コードをクリップボードにコピー
Or by hand:
コードをクリップボードにコピー
In PowerShell:
コードをクリップボードにコピー
Or by hand:
コードをクリップボードにコピー
コードをクリップボードにコピー
2. メーラーの設定
メーラーの質問をスキップした場合は、オールインワン構成と同様に、intlayer/.env に Resend または SMTP を記入します(グローバルメーラー を参照)。
3. 起動
コードをクリップボードにコピー
カスタムドメインの場合、インストーラーは 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 エントリ)を削除し、対応する変数を上書きします:
コードをクリップボードにコピー
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: に切り替えます。リポジトリのクローンから:
コードをクリップボードにコピー
クローンがない場合は、.env に INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main を設定して、ビルドコンテキストをリポジトリ自体に向けます。ダッシュボードの VITE_* ビルド引数は同じファイルの DOMAIN、APP_URL、BACKEND_URL に従います。これが カスタムドメイン を適用する方法です。
バックアップとアップグレード
コードをクリップボードにコピー
インストーラーの設定
--mode(または INTLAYER_MODE)を指定しない場合、インストーラーはメニューを表示します: desktop、docker(オールインワン)、または compose。また、いくつかの環境変数も読み取ります。シェルへのパイプライン処理を行うため、curl ではなくシェルに変数を渡してください:
コードをクリップボードにコピー
コードをクリップボードにコピー
テーブルをモーダルで開き、すべてのデータを明確に表示
| Variable | Default | Applies to | Description |
|---|---|---|---|
INTLAYER_MODE | (asked) | all | desktop, docker or compose, same as --mode |
INTLAYER_DOWNLOAD_DIR | ~/Downloads | desktop | Where the app installer is saved |
INTLAYER_IMAGE | intlayer/cms-all:latest | docker | All-in-one image to pull |
INTLAYER_ENV_FILE | ./intlayer.env | docker | Where to write the environment file |
INTLAYER_CONTAINER_NAME | intlayer | docker | Container name |
INTLAYER_DATA_VOLUME | intlayer-data | docker | Named volume mounted at /data |
INTLAYER_APP_PORT | 3000 | docker | Host port for the dashboard |
INTLAYER_API_PORT | 3100 | docker | Host port for the API |
INTLAYER_S3_PORT | 9000 | docker | Host port for the MinIO S3 API |
INTLAYER_CONSOLE_PORT | 9001 | docker | Host port for the MinIO console |
INTLAYER_COMPOSE_DIR | ./intlayer | compose | Where docker-compose.yml and .env are written |
INTLAYER_SELFHOST_REF | main | both | Git ref the compose file and env template are fetched from |
INTLAYER_BUILD_CONTEXT | …/intlayer.git#main | both | Build context used when a custom domain requires a rebuild |
INTLAYER_CUSTOM_IMAGE | intlayer/cms-all:custom | docker | Tag of the all-in-one image built for a custom domain |
ポート変数はマッピングの ホスト 側のみを変更します。公開されているイメージにはhttp://localhost:3000、http://localhost:3100、http://localhost:9000がダッシュボードバンドルにコンパイルされているため、独自のイメージをビルドしない限りデフォルトを維持してください。制限事項 を参照してください。
初回セットアップ
新規インスタンス(空のデータベース)でダッシュボードを開くと、自動的に /init ページにリダイレクトされます:
- 最初のアカウントを作成します。ユーザーコレクションが空のため、このアカウントは自動的に スーパー管理者 に昇格します。
- Resend または SMTP リレー経由で確認メールが送信されます。メール確認は 必須 です。そのため、起動前にメーラーを設定する必要があります。
- メール内のリンクをクリックし、サインインします。
管理者が存在する場合、/init は通常のサインインページにリダイレクトされます。
環境変数
両方の Docker モードは、docker/selfhost/.env.template から生成された同じファイル(コンテナ用は intlayer.env、Compose 用は .env)を読み取ります。
必須項目
テーブルをモーダルで開き、すべてのデータを明確に表示
| Variable | Example | Description |
|---|---|---|
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 ファイルで設定すると両方のモードで優先されます(カスタムドメイン を参照)。
テーブルをモーダルで開き、すべてのデータを明確に表示
| Variable | All-in-one | Docker Compose | Description |
|---|---|---|---|
PORT | 3100 | 3100 | Backend listening port |
APP_URL | http://localhost:3000 | http://localhost:3000 | Public URL of the dashboard |
BACKEND_URL | http://localhost:3100 | http://localhost:3100 | Public URL of the backend API |
DOMAIN | localhost | localhost | Cookie domain |
SELF_HOSTED | true | true | Disables the cloud-only API endpoints (billing, subscriptions, marketplace) |
MONGODB_URI | mongodb://127.0.0.1:27017/intlayer?replicaSet=rs0 | mongodb://mongo:27017/… | MongoDB connection string, any mongodb:// or mongodb+srv:// cluster works |
REDIS_URL | redis://127.0.0.1:6379 | redis://redis:6379 | Redis |
S3_ENDPOINT | http://127.0.0.1:9000 | http://minio:9000 | MinIO (server-to-server) |
S3_PUBLIC_URL | http://localhost:9000/intlayer | http://localhost:9000/intlayer | Public URL for browser asset loading |
S3_BUCKET_NAME | intlayer | intlayer | Bucket name |
S3_ACCESS_KEY_ID | intlayer | intlayer | MinIO 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つが必要です。どちらも、ドメインの質問に回答するとインストーラーが準備します:
env ファイル内の4つの変数。バックエンドが読み込み(Cookie、メールのリンク、OAuth コールバック、アセット URL)、
docker-compose.build.ymlがビルド引数として使用します:intlayer.envコードをコピーコードをクリップボードにコピー
これらの URL でビルドしたダッシュボードイメージ。 Docker はリポジトリから直接ビルドするため、クローンは不要です:
shコードをコピーコードをクリップボードにコピー
次に、TLS 対応のリバースプロキシをコンテナの前に配置します: cms.example.org → ポート 3000、back.example.org → 3100、s3.example.org → 9000。セッション Cookie のスコープが DOMAIN に限定されるため、3つのホストはこのサフィックスを共有する必要があります。
オプション(設定しない場合でも機能は正常にフォールバックします)
テーブルをモーダルで開き、すべてのデータを明確に表示
| Variable | Feature |
|---|---|
OPENAI_API_KEY | AI-assisted translation and content audit |
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | GitHub OAuth login |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Google OAuth login |
GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET | GitLab OAuth login |
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET | Microsoft OAuth login |
グローバルメーラー
パスワードのリセットやマジックリンクなど、組織外のメールを含むすべてのトランザクションメールは、次の2つのグローバルトランスポートのいずれかを経由します:
- Resend:
RESEND_API_KEYを使用。 - SMTP:
MAIL_SMTP_*変数を使用。MAIL_SMTP_HOSTが設定されると直ちに SMTP が使用され、RESEND_API_KEYは無視されます。
MAIL_PROVIDER は、両方が構成されている場合に一方のトランスポートを強制するためにのみ必要です(たとえば、SMTP ホストが存在する場合に Resend を維持するために MAIL_PROVIDER=resend)。
テーブルをモーダルで開き、すべてのデータを明確に表示
| Variable | Example | Description |
|---|---|---|
MAIL_FROM | Intlayer <no-reply@acme.com> | Sender header for either transport. Accepts a bare address or Name <email> |
MAIL_SMTP_HOST | smtp.acme.com | SMTP host. Setting it selects the SMTP transport |
MAIL_SMTP_PORT | 587 | SMTP port (defaults to 587) |
MAIL_SMTP_SECURE | false | Implicit 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_PROVIDER | resend | Optional override: smtp or resend. Leave unset to auto-select |
優先順位: 組織独自のメーラー(組織 ダッシュボードから構成)はグローバルメーラーよりも優先され、グローバルメーラーはデフォルトの Resend キーよりも優先されます。
Intlayer プロジェクトの接続
スタックが実行されたら、intlayer.org ではなく、セルフホストされたバックエンドとダッシュボードを指すようにプロジェクトを設定します。
プロジェクト設定
コードをクリップボードにコピー
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:
コードをクリップボードにコピー
セルフホストダッシュボードの Projects → Access keys (http://localhost:3000/projects) でアクセス資格情報を作成します。
@intlayer/api SDK
プログラムで @intlayer/api SDK を使用する場合、backendURL を明示的に渡します:
コードをクリップボードにコピー
制限事項
- カスタムドメインにはリビルドが必要。 ブラウザ向けのすべての
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のみが必要です。
便利なリンク
- Intlayer CMS ドキュメント
- 設定リファレンス
- CMS SDK:
@intlayer/api - デスクトップアプリのリリース
- Docker Hub:
intlayer/cms-all,intlayer/cms-frontend,intlayer/cms-backend、GHCR ミラー:ghcr.io/aymericzip/intlayer/ docker/selfhost/: Dockerfile、docker-compose.yml、.env.template
