snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,262 @@
---
title: Docker Compose
icon: docker
---
<Warning>
Docker コンテナーは、本番環境でのホスティングまたはセルフホスティング向けです。 コントリビュートする場合は、[ローカルセットアップ](/l/ja/developers/contribute/capabilities/local-setup)を確認してください。
</Warning>
## 概要
このガイドは、Docker Composeを使用してTwentyアプリケーションをインストールおよび構成するためのステップバイステップの手順を提供します。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。 プロセスを簡単にし、設定を破壊する可能性のある一般的な落とし穴を防止することが目的です。
**重要:** このガイドで明示的に言及されている設定のみを変更してください。 他の構成を変更すると、問題が発生する可能性があります。 他の構成を変更すると、問題が発生する可能性があります。 他の構成を変更すると、問題が発生する可能性があります。
高度な構成については、[環境変数の設定](/l/ja/developers/self-host/capabilities/setup)を参照してください。 すべての環境変数は、変数に応じて、サーバーレベルまたはワーカーレベル(またはその両方)で、`docker-compose.yml`ファイルに宣言する必要があります。
## システム要件
* RAM: 環境に最低2GBのRAMがあることを確認してください。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。 メモリが不足するとプロセスがクラッシュすることがあります。
* Docker & Docker Compose: 両方がインストールされ、最新であることを確認してください。
## オプション 1: ワンラインスクリプト
単一のコマンドで最新版のTwentyをインストールします:
```bash
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
特定のバージョンまたはブランチをインストールするには:
```bash
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```
* x.y.zを希望するバージョン番号に置き換えます。
* branch-nameをインストールしたいブランチの名前に置き換えます。
## オプション 2: 手動の手順
マニュアルセットアップには、これらの手順に従ってください。
### ステップ 1: 環境ファイルを設定
1. **.env ファイルを作成**
例の環境ファイルを作業ディレクトリに新しい.envファイルとしてコピーします:
```bash
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
```
2. **暗号化キーを生成する**
ユニークなランダム文字列を生成するには、次のコマンドを実行します:
```bash
openssl rand -base64 32
```
**重要:** この値を秘密にしてください/共有しないでください。 `ENCRYPTION_KEY` を失うことは、データベースに保存されているすべてのシークレット(OAuth トークン、アプリケーション変数、TOTP シークレットなど)へのアクセスを失うことを意味します。
3. **`.env`を更新**
生成したトークンで.envファイルのプレースホルダー値を置き換えます:
```ini
ENCRYPTION_KEY=random_string
```
ダウンタイムなしでキーをローテーションする手順については、[キーのローテーションガイド](/l/ja/developers/self-host/capabilities/key-rotation)を参照してください。
4. **Postgres パスワードを設定**
特殊文字を含まない強力なパスワードで、.envファイルの`PG_DATABASE_PASSWORD`値を更新します。
```ini
PG_DATABASE_PASSWORD=my_strong_password
```
### ステップ 2: Docker Compose ファイルを取得
作業ディレクトリに`docker-compose.yml`ファイルをダウンロードします:
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```
### ステップ 3: アプリケーションを起動
Dockerコンテナを開始します:
```bash
docker compose up -d
```
### ステップ 4: アプリケーションにアクセス
自分のコンピュータでtwentyCRMをホストしている場合は、ブラウザを開いて[http://localhost:3000](http://localhost:3000)にアクセスします。
サーバーでホストしている場合、サーバーが稼働していてすべてが正常であるかを確認してください
```bash
curl http://localhost:3000
```
## 構成
### Twentyを外部アクセスに公開
デフォルトでは、Twentyはポート`3000`で`localhost`上で動作します。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。 UI はブラウザー自身のオリジンから API を解決するため、コンテナに到達できる任意のホスト名から読み込まれます。ただし、`SERVER_URL` には必ずパブリック URL を設定してください。サーバーは、生成されるリンク(メール、OAuth コールバック)や、安全な Cookie のための HTTPS 検出にそれを使用します。
#### `SERVER_URL`の理解
* **プロトコル:** 設定に応じて`http`または`https`を使用します。
* SSLを設定していない場合は`http`を使用します。
* SSLを構成済みの場合は`https`を使用します。
* **ドメイン/IP:** これは、アプリケーションがアクセス可能なドメイン名またはIPアドレスです。
* **ポート:** デフォルトのポート(`http`は`80`、`https`は`443`)以外を使用している場合、ポート番号を含めます。
### SSL 要件
SSL(HTTPS)は、特定のブラウザ機能が正しく動作するために必要です。 SSL(HTTPS)は、特定のブラウザ機能が正しく動作するために必要です。 SSL(HTTPS)は、特定のブラウザ機能が正しく動作するために必要です。 これらの機能は、ローカル開発中に動作するかもしれませんが(ブラウザがlocalhostを異なる扱い方をするため)、Twentyを通常のドメインでホスティングする場合、適切なSSLの設定が必要です。
たとえば、クリップボードAPIは安全なコンテキストが必要かもしれません - アプリケーション全体でのコピー ボタンのような機能は、HTTPSが有効でないと動作しないかもしれません。
最適なセキュリティと機能のために、SSL終了を備えたリバースプロキシの背後にTwentyを設定することを強くお勧めします。
#### `SERVER_URL`の構成
1. **アクセスURLを特定する**
* **リバースプロキシがない場合(直接アクセス):**
リバースプロキシなしでアプリケーションに直接アクセスする場合:
```ini
SERVER_URL=http://your-domain-or-ip:3000
```
* **リバースプロキシを使用する場合(標準ポート):**
NginxやTraefikのようなリバースプロキシを使用し、SSLを構成している場合:
```ini
SERVER_URL=https://your-domain-or-ip
```
* **リバースプロキシを使用する場合(カスタムポート):**
標準以外のポートを使用している場合:
```ini
SERVER_URL=https://your-domain-or-ip:custom-port
```
2. **.env ファイルを更新**
.env`ファイルを開き、`SERVER_URL\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`を更新します:
```ini
SERVER_URL=http(s)://your-domain-or-ip:your-port
```
**例:**
* SSLなしの直接アクセス:
```ini
SERVER_URL=http://123.45.67.89:3000
```
* ドメイン経由でSSLを使用してアクセス:
```ini
SERVER_URL=https://mytwentyapp.com
```
3. **アプリケーションを再起動**
変更を反映するために、Dockerコンテナを再起動します:
```bash
docker compose down
docker compose up -d
```
#### 考慮事項
* **リバースプロキシ構成:**
リバースプロキシが正しい内部ポート(デフォルトでは`3000`)にリクエストを転送することを確認してください。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。
* **ファイアウォール設定:**
外部アクセスを許可するためにファイアウォールで必要なポートを開けます。
* **一貫性:**
`SERVER_URL`は、ユーザーがブラウザでアプリケーションにアクセスする方法と一致する必要があります。
#### 永続性
* **データボリューム:**
Docker Compose 構成では、データベースとサーバーストレージのデータを永続化するためにボリュームを使用します。
* **ステートレス環境:**
ステートレス環境(例: 一部のクラウドサービス)に展開する場合、データを永続化するために外部ストレージを設定します。
## バックアップと復元
定期的なバックアップは、CRM データを損失から保護します。
### データベースのバックアップを作成
```bash
docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql
```
### 日次バックアップを自動化
crontab に追加 (`crontab -e`):
```bash
0 2 * * * docker exec twenty-postgres pg_dump -U postgres twenty > /backups/twenty_$(date +\%Y\%m\%d).sql
```
### バックアップから復元
1. アプリケーションを停止します:
```bash
docker compose stop server worker
```
2. データベースを復元します:
```bash
docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql
```
3. サービスの再起動:
```bash
docker compose up -d
```
### バックアップのベストプラクティス
* **復元を定期的にテスト** — バックアップが実際に機能することを確認
* **バックアップをオフサイトに保管** — クラウドストレージ (S3, GCS など) を使用
* **機密データを暗号化** — バックアップを暗号化で保護
* **複数のコピーを保持** — 日次・週次・月次のバックアップを保持
## トラブルシューティング
問題が発生した場合は、[トラブルシューティング](/l/ja/developers/self-host/capabilities/troubleshooting)を確認して解決策を見つけてください。
## マネージドホスティング
<Tip>
Twenty を自分で運用・保守したくない場合は? [認定済みの Twenty ホスティングパートナー](https://twenty.com/partners/list?categories=HOSTING\&ref=docs-docker-compose)に依頼して、インスタンスのデプロイ、ホスティング、管理をエンドツーエンドで任せましょう。 *(または、私たちのチームにご連絡ください: [contact@twenty.com](mailto:contact@twenty.com)。)*
</Tip>

View File

@@ -0,0 +1,60 @@
---
title: キーのローテーション
icon: rotate
---
Twenty には、互いに独立した 2 つのキー群があります。
* **JWT 署名キー** — `core."signingKey"` に保存された非対称 ES256 キーペア(`kid` タグ付き)で、アクセストークン / リフレッシュトークンの署名および検証に使用されます。
* **保存データ暗号化キー** — `ENCRYPTION_KEY`。OAuth トークン、アプリケーション変数、署名キーの秘密鍵、機密性の高い設定値、および `enc:v2:` エンベロープ内の TOTP シークレットを暗号化するために使用されます。
`APP_SECRET` は後方互換性のために保持されているレガシーなシークレットです。`ENCRYPTION_KEY` が未設定の場合、保存データ暗号化 / セッション Cookie のフォールバックとして動作し、既存の HS256 アクセストークンの検証にも引き続き使用されます。 これは非推奨となる予定です。
## JWT 署名キー
各キーには、`publicKey`(過去に発行されたトークンを検証できるよう、無期限に保持)、暗号化された `privateKey`(そのキーが現行の間のみ使用)、`isCurrent` フラグ(同時にちょうど 1 行だけ true)、および任意の `revokedAt` が含まれます。
### 現在のキーをローテーションする
オプトインするには `SIGNING_KEY_ROTATION_DAYS` を設定します。日次の cron により、既存のキーがその閾値より古くなると、新しいキーが現行キーとして発行されます。 以前のキーは *失効しない* ため、そのキーで署名されたトークンは検証に通り続けます。 自動ローテーションを無効にするには、変数を未設定のままにします。
<Note>自動ローテーションは v2.6 以降で提供されています。</Note>
### キーを失効させる(漏えい時 / 緊急時のみ)
非現行の行で **Settings → Admin Panel → Signing keys → Revoke** を実行します。 暗号化された秘密情報を消去し、`revokedAt` を設定し、その `kid` で署名された既存トークンをすべて拒否します。
## `ENCRYPTION_KEY` をローテーションする
<Note>以下で説明する `secret-encryption:rotate` コマンドは v2.6+ で提供されています。</Note>
すべての暗号化された値は `enc:v2:\<keyId>:\<payload>` の形式でラップされます。ここで `\<keyId>` は、生のキーから導出された 8 文字の 16 進プレフィックスです。 ローテーションはオンラインで実行でき、中断しても再開可能です。
1. **新しいキーを生成**: `openssl rand -base64 32`.
2. `.env` に **両方のキーを並べて設定** し、再起動します:
```ini
ENCRYPTION_KEY=NEW_VALUE
FALLBACK_ENCRYPTION_KEY=OLD_VALUE
```
新規書き込みは新しいキーを使用し、既存行はフォールバック経由で引き続き復号されます。
3. **既存行を再暗号化する**:
```bash
docker exec -it {server_container} yarn command:prod secret-encryption:rotate
```
このコマンドは 6 つのサイト(`connected-account-tokens`、`application-variable`、`application-registration-variable`、`signing-key-private-keys`、`sensitive-config-storage`、`totp-secrets`)を走査します。 SQL フィルターにより、すでに新しい `\<keyId>` になっている行はスキップされるため、このコマンドはべき等です。必要に応じて中断し、再実行できます。 いずれかの行で失敗した場合は非ゼロで終了します。再実行してリトライしてください。
| フラグ | 説明 |
| ---------------------------------------- | ----------------------------------- |
| `-s, --site \<site>` | 単一のサイトに限定します。 |
| `-b, --batch-size \<n>` | バッチごとの行数(デフォルト `200`、最大 `5000`)。 |
| `-d, --dry-run` | メモリ上で復号 + 再暗号化を行い、`UPDATE` は実行しません。 |
4. `--dry-run` で残り行数が 0 になったことを確認したら **フォールバックを削除** します。`FALLBACK_ENCRYPTION_KEY` を削除して再起動してください。
## レガシーな `APP_SECRET` サポート
これまで一度も `ENCRYPTION_KEY` を設定していない古いインスタンスは、`APP_SECRET` を保存データ暗号化キー(および、そこから導出されるセッション Cookie シークレット)として使用します。 この経路は後方互換性のために保持されていますが、**非推奨** です。専用の `ENCRYPTION_KEY` を設定し、上記のローテーション手順に従って移行してください。 `APP_SECRET` 自体はレガシーな HS256 アクセストークンを検証するために引き続き使用されます。

View File

@@ -0,0 +1,409 @@
---
title: セットアップ
icon: gear
---
# 構成管理
<Warning>
**初めてインストールしますか?** [Docker Compose インストールガイド](/l/ja/developers/self-host/capabilities/docker-compose)に従ってTwentyを起動し、その後はここに戻り構成してください。
</Warning>
Twentyは、異なる展開ニーズに合わせて**2つの構成モード**を提供します:
**管理パネルアクセス:** 管理者権限を持つユーザーだけが (`canAccessFullAdminPanel: true`) 構成インターフェースにアクセスできます。
## 1. 管理パネル構成(デフォルト)
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default
```
**ほとんどの構成は、インストール後にUIを通じて行われます。**
1. Twentyインスタンスにアクセスしてください (通常は `http://localhost:3000`)
2. **設定 / 管理パネル / 構成変数**に移動
3. 統合、メール、ストレージなどを構成します
4. 変更はすぐに(マルチコンテナ展開の場合、15秒以内に)効果が出ます。
<Warning>
**マルチコンテナ展開:** データベース構成を使用する場合 (`IS_CONFIG_VARIABLES_IN_DB_ENABLED=true`)、サーバーとワーカーコンテナの両方が同じデータベースから読み込みます。 管理パネルの変更は両方に自動的に影響し、コンテナ間で環境変数を重複させる必要がなくなります(インフラストラクチャの変数を除く)。
管理パネルの変更は両方に自動的に影響し、コンテナ間で環境変数を重複させる必要がなくなります(インフラストラクチャの変数を除く)。
</Warning>
**管理パネルを通じて構成できること:**
* **認証** - Google/Microsoft OAuth、パスワード設定
* **メール** - SMTP設定、テンプレート、検証
* **ストレージ** - S3構成、ローカルストレージパス
* **統合** - Gmail、Googleカレンダー、Microsoftサービス
* **ワークフローとレート制限** - 実行制限、APIスロットリング
* **さらに多くのこと...**
![管理パネル構成変数](/images/user-guide/setup/admin-panel-config-variables.png)
<Warning>
各変数は、**設定 → 管理パネル → 構成変数** で説明付きでドキュメント化されています。
データベース接続 (`PG_DATABASE_URL`)、サーバーURL (`SERVER_URL`)、秘密情報 (`ENCRYPTION_KEY`, `FALLBACK_ENCRYPTION_KEY`) など、一部のインフラ設定は `.env` ファイルを介してのみ構成できます。
[ 完全な技術リファレンス →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts)
</Warning>
## 暗号鍵
Twenty は、環境変数でのみ設定可能な暗号鍵を 2 つ使用します:
| 変数 | 目的 | 必須 |
| ------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| `ENCRYPTION_KEY` | 保存時の秘密情報(OAuth トークン、アプリケーション変数、署名鍵の秘密鍵、TOTP シークレット、機密性の高い構成値)を暗号化するために使用されるプライマリキー。 | 新規インストールでは必須(レガシーインストールでは代わりに `APP_SECRET` に依存している場合があります — 下記参照) |
| `FALLBACK_ENCRYPTION_KEY` | 検証専用のキー。 ローテーション時に、既存の行を復号可能なままにするため、*以前の* `ENCRYPTION_KEY` を設定します。 | ローテーション中のみ |
後方互換性のため、`ENCRYPTION_KEY` が未設定の場合、Twenty は保存時の暗号化に `APP_SECRET` をフォールバックとして使用します。これは、旧来のデプロイメントにおける従来の動作と一致します。 新規インストールでは、必ず専用の `ENCRYPTION_KEY` を設定してください。
`openssl rand -base64 32` で値を生成し、シークレットマネージャーやシールドされた構成など、安全な場所に保管してください。 `ENCRYPTION_KEY` を失うことは、データベースに保存されているすべての秘密情報へのアクセスを失うことを意味します。
ダウンタイムなしで `ENCRYPTION_KEY` をローテーションする方法については、[キー ローテーション ガイド](/l/ja/developers/self-host/capabilities/key-rotation) を参照してください。
## 2. 環境のみの構成
```bash
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
```
**すべての構成が `.env` ファイルで管理されます:**
1. `.env` ファイル内で `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定
2. すべての構成変数を `.env` ファイルに追加
3. 変更を有効にするためにコンテナを再起動してください
4. 管理パネルは現在の値を表示しますが、修正はできません
## マルチワークスペースモード
デフォルトでは、Twenty は**シングルワークスペースモード**で動作します—組織向けに 1 つの CRM インスタンスが必要な多くのセルフホスト型デプロイメントに最適です。
### シングルワークスペースモード(デフォルト)
```bash
IS_MULTIWORKSPACE_ENABLED=false # default
```
* Twenty の各インスタンスにつき 1 つのワークスペース
* 最初のユーザーは自動的にフル権限の管理者になります(`canImpersonate` と `canAccessFullAdminPanel`)
* 最初のワークスペース作成後は新規サインアップが無効になります
* シンプルな URL 構造: `https://your-domain.com`
### マルチワークスペースモードの有効化
```bash
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
```
同一の Twenty インスタンス上で複数の独立したチームがそれぞれのワークスペースを必要とする、SaaS のようなデプロイメント向けにマルチワークスペースモードを有効にします。
**シングルワークスペースモードとの主な違い:**
* 同一インスタンス上に複数のワークスペースを作成できます
* 各ワークスペースに専用のサブドメインが割り当てられます(例: `sales.your-domain.com`、`marketing.your-domain.com`)
* ユーザーは `{DEFAULT_SUBDOMAIN}.your-domain.com` でサインアップおよびログインします(例: `app.your-domain.com`)
* 管理者権限は自動付与されません—各ワークスペースの最初のユーザーは一般ユーザーです
* サブドメインやカスタムドメインなどのワークスペース固有の設定がワークスペース設定で利用可能になります
<Warning>
**環境専用の設定:** `IS_MULTIWORKSPACE_ENABLED` は `.env` ファイルでのみ設定でき、再起動が必要です。 管理パネルからは変更できません。
</Warning>
### マルチワークスペース向けの DNS 構成
マルチワークスペースモードを使用する場合、動的なサブドメイン作成を可能にするために、ワイルドカードレコードで DNS を構成してください:
```
*.your-domain.com -> your-server-ip
```
これにより、手動の DNS 構成なしで新規ワークスペースへのサブドメインルーティングが自動化されます。
### ワークスペース作成の制限
マルチワークスペースモードでは、新しいワークスペースを作成できるユーザーを制限したい場合があります:
```bash
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
```
有効にすると、`canAccessFullAdminPanel` を持つユーザーのみが追加のワークスペースを作成できます。 初回サインアップ時には、ユーザーは引き続き最初のワークスペースを作成できます。
## Gmail & Googleカレンダー統合
### Google Cloudプロジェクトを作成
1. [Google Cloud Console](https://console.cloud.google.com/) にアクセス
2. 新しいプロジェクトを作成するか既存のプロジェクトを選択
3. 以下のAPIを有効にします:
* [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com)
* [GoogleカレンダーAPI](https://console.cloud.google.com/apis/library/calendar-json.googleapis.com)
* [People API](https://console.cloud.google.com/apis/library/people.googleapis.com)
### OAuthの構成
1. [資格情報](https://console.cloud.google.com/apis/credentials)にアクセス
2. OAuth 2.0 クライアントIDを作成
3. 次のリダイレクトURIを追加:
* `https://{your-domain}/auth/google/redirect` (SSO用)
* `https://{your-domain}/auth/google-apis/get-access-token` (統合用)
### Twentyで構成
1. **設定 → 管理パネル → 構成変数** に移動
2. **Google Auth** セクションを見つけます
3. 次の変数を設定:
* `MESSAGING_PROVIDER_GMAIL_ENABLED=true`
* `CALENDAR_PROVIDER_GOOGLE_ENABLED=true`
* `AUTH_GOOGLE_CLIENT_ID={client-id}`
* `AUTH_GOOGLE_CLIENT_SECRET={client-secret}`
* `AUTH_GOOGLE_CALLBACK_URL=https://{your-domain}/auth/google/redirect`
* `AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token`
<Warning>
**環境専用モード:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定した場合、これらの変数を `.env` ファイルに追加してください。
</Warning>
**必要なスコープ** (自動的に構成される):
[関連ソースコードを見る](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10)
* `https://www.googleapis.com/auth/calendar.events`
* `https://www.googleapis.com/auth/gmail.readonly`
* `https://www.googleapis.com/auth/profile.emails.read`
### アプリがテストモードの場合
アプリがテストモードの場合、プロジェクトにテストユーザーを追加する必要があります。
[OAuth 同意画面](https://console.cloud.google.com/apis/credentials/consent)で、「テストユーザー」セクションにテストユーザーを追加してください。
## Microsoft 365 統合
<Warning>
カレンダーおよびメッセージングAPIを使用するためには、[Microsoft 365 ライセンス](https://admin.microsoft.com/Adminportal/Home)が必要です。 They will not be able to sync their account on Twenty without one. それがない場合、Twenty でアカウントを同期できません。
</Warning>
### Microsoft Azureでプロジェクトを作成
[Microsoft Azure](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2)でプロジェクトを作成し、資格情報を取得してください。
### APIを有効にする
Microsoft Azureコンソールで"権限"の欄で以下のAPIを有効にします:
* Microsoft Graph: Mail.ReadWrite
* Microsoft Graph: Mail.Send
* Microsoft Graph: Calendars.Read
* Microsoft Graph: User.Read
* Microsoft Graph: openid
* Microsoft Graph: email
* Microsoft Graph: profile
* Microsoft Graph: offline_access
<Note>
"Mail.ReadWrite" と "Mail.Send" は、ワークフローアクションを使用してメールを送信する場合にのみ必須です。 メールを受信するだけの場合は、"Mail.Read"を使用できます。
</Note>
<Note>
ワークフローアクションを使用してカレンダーイベントを作成する場合は、"Calendars.ReadWrite" が必須です。 カレンダーイベントを同期するだけの場合は、"Calendars.Read" を使用してください。
</Note>
### 認証されたリダイレクトURI
プロジェクトに次のリダイレクトURIを追加する必要があります:
* `https://{your-domain}/auth/microsoft/redirect` マイクロソフトSSO を使用する場合
* `https://{your-domain}/auth/microsoft-apis/get-access-token`
### Twentyで構成
1. **設定 → 管理パネル → 構成変数** に移動
2. **Microsoft Auth** セクションを見つけます
3. 次の変数を設定:
* `MESSAGING_PROVIDER_MICROSOFT_ENABLED=true`
* `CALENDAR_PROVIDER_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_ENABLED=true`
* `AUTH_MICROSOFT_CLIENT_ID={client-id}`
* `AUTH_MICROSOFT_CLIENT_SECRET={client-secret}`
* `AUTH_MICROSOFT_CALLBACK_URL=https://{your-domain}/auth/microsoft/redirect`
* `AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token`
<Warning>
**環境専用モード:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定した場合、これらの変数を `.env` ファイルに追加してください。
</Warning>
### スコープを構成
[関連ソースコードを見る](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-microsoft-apis-oauth-scopes.ts#L2-L9)
* 'openid'
* 'メール'
* 'プロフィール'
* 'offline_access'
* 'Mail.ReadWrite'
* 'Mail.Send'
* 'Calendars.Read'
### アプリがテストモードの場合
アプリがテストモードの場合、プロジェクトにテストユーザーを追加する必要があります。
「ユーザーとグループ」セクションにテストユーザーを追加してください。
## カレンダーとメッセージングのバックグラウンドジョブ
Gmail、Googleカレンダー、またはMicrosoft 365統合を構成した後、データを同期するバックグラウンドジョブを開始する必要があります。
次の定期ジョブをワーカーコンテナに登録してください:
```bash
# from your worker container
yarn command:prod cron:messaging:messages-import
yarn command:prod cron:messaging:message-list-fetch
yarn command:prod cron:calendar:calendar-event-list-fetch
yarn command:prod cron:calendar:calendar-events-import
yarn command:prod cron:messaging:ongoing-stale
yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
```
## メール設定
1. **設定 → 管理パネル → 構成変数** に移動
2. **メール** セクションを見つけます
3. SMTP設定を構成:
<Tabs>
<Tab title="Gmail">
[アプリパスワード](https://support.google.com/accounts/answer/185833)を準備する必要があります。
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.gmail.com
* EMAIL_SMTP_PORT=465
* EMAIL_SMTP_USER=gmail_email_address
* EMAIL_SMTP_PASSWORD='gmail_app_password'
</Tab>
<Tab title="Office365">
2FAを有効にしている場合、[アプリパスワード](https://support.microsoft.com/en-us/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9)を準備する必要があります。
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=smtp.office365.com
* EMAIL_SMTP_PORT=587
* EMAIL_SMTP_USER=office365_email_address
* EMAIL_SMTP_PASSWORD='office365_password'
</Tab>
<Tab title="smtp4dev">
**smtp4dev** は開発とテストのためのフェイクSMTPメールサーバーです。
* smtp4devイメージを実行: `docker run --rm -it -p 8090:80 -p 2525:25 rnwood/smtp4dev`
* smtp4dev UIにアクセス: [http://localhost:8090](http://localhost:8090)
* 次の変数を設定:
* EMAIL_DRIVER=smtp
* EMAIL_SMTP_HOST=localhost
* EMAIL_SMTP_PORT=2525
</Tab>
</Tabs>
<Warning>
**環境専用モード:** `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false` を設定した場合、これらの変数を `.env` ファイルに追加してください。
</Warning>
## S3 ストレージ
<Warning>
デフォルトでは、Twenty はアップロードされたファイルをローカルのファイルシステムに保存します。 本番環境へのデプロイでは、S3 または S3 互換のサービス(MinIO、DigitalOcean Spaces など)を使用してください。 コンテナの再起動をまたいでファイルを永続化し、複数のサーバーインスタンスにまたがってスケールできるようにするため。
</Warning>
`STORAGE_TYPE=S_3` を設定し、管理パネルまたは `.env` から `STORAGE_S3_*` 変数を設定してください。 S3 変数の全一覧については、[config-variables.ts リファレンス](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts) を参照してください。
CORS に依存する機能(例: ブラウザ内でのファイルダウンロード)で S3 を使用する場合は、バケットの CORS 設定で Twenty フロントエンドのオリジンが許可されていることを確認してください。
## ロジック関数とコードインタープリター
Twenty は、ワークフロー向けのロジック関数と、AI データ分析用のコードインタープリターをサポートします。 どちらもユーザー提供のコードを実行し、セキュリティのために明示的な設定が必要です。
### セキュリティのデフォルト
**本番環境 (NODE_ENV=production):** ロジック関数とコードインタープリターはいずれもデフォルトで**無効**です。 これらの機能が必要な場合は、`LOGIC_FUNCTION_TYPE` と `CODE_INTERPRETER_TYPE` で明示的に有効化する必要があります。
**開発環境 (NODE_ENV=development):** ローカルでの実行を容易にするため、どちらもデフォルトでは**LOCAL**です。
<Warning>
**セキュリティに関する注意:** ローカルドライバー (`LOGIC_FUNCTION_TYPE=LOCAL` または `CODE_INTERPRETER_TYPE=LOCAL`) は、ホスト上の Node.js プロセス内でサンドボックスなしにコードを直接実行します。 開発では、信頼できるコードにのみ使用してください。 信頼できないコードを扱う本番デプロイでは、`LOGIC_FUNCTION_TYPE=LAMBDA` または `CODE_INTERPRETER_TYPE=E2B`(サンドボックス化あり)を使用するか、無効のままにしてください。
</Warning>
### ロジック関数 - 利用可能なドライバー
| ドライバー | 環境変数 | ユースケース | セキュリティレベル |
| ------ | ------------------------------ | ---------------- | --------------- |
| 無効 | `LOGIC_FUNCTION_TYPE=DISABLED` | ロジック関数を完全に無効化する | 該当なし |
| ローカル | `LOGIC_FUNCTION_TYPE=LOCAL` | 開発および信頼できる環境 | 低(サンドボックスなし) |
| Lambda | `LOGIC_FUNCTION_TYPE=LAMBDA` | 信頼できないコードを扱う本番環境 | 高(ハードウェアレベルの分離) |
### ロジック関数 - 推奨構成
**開発向け:**
```bash
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
```
**本番向け(AWS):**
```bash
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
```
**ロジック関数を無効化するには:**
```bash
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
```
### コードインタープリター - 利用可能なドライバー
| ドライバー | 環境変数 | ユースケース | セキュリティレベル |
| ----- | -------------------------------- | -------------- | --------------- |
| 無効 | `CODE_INTERPRETER_TYPE=DISABLED` | AIコード実行を無効化 | 該当なし |
| ローカル | `CODE_INTERPRETER_TYPE=LOCAL` | 開発専用 | 低(サンドボックスなし) |
| E2B | `CODE_INTERPRETER_TYPE=E_2_B` | サンドボックス実行の本番環境 | 高(分離されたサンドボックス) |
<Note>
`LOGIC_FUNCTION_TYPE=DISABLED` または `CODE_INTERPRETER_TYPE=DISABLED` を使用している場合、実行しようとするとエラーが返されます。 これは、これらの機能なしで Twenty を実行したい場合に便利です。
</Note>
## API とフロントエンドが別ホスト上にある場合
バックエンドにフロントエンドを配信させない場合にのみ関連します。 同一オリジンでのデプロイの場合、ここで設定する必要はありません。
API と通信するすべてのブラウザーオリジンを、カンマ区切りで指定してください。 `SERVER_URL`
および `FRONTEND_URL` は既に信頼済みです。 ブラウザーが宣言されていないオリジンからサーバーを呼び出すと、サーバーは警告をログに記録します。
```bash
AUTH_COOKIE_ALLOWED_ORIGINS=https://app.example.com
```
<Warning>
フロントエンドはすべてのリクエストでクレデンシャルを送信し、ブラウザーは宣言されていないオリジンからのクレデンシャル付きレスポンスを拒否するため、この設定を行うまでアプリは読み込めません。
</Warning>
2 つのホストが異なる登録可能ドメイン(単なる異なるサブドメインではない)の場合は、`AUTH_COOKIE_SAME_SITE=none` も設定してください。これは HTTPS を必須とします。
マルチワークスペースが有効な場合、ここにすべてのワークスペースのサブドメインを列挙しないでください。
代わりに、各ワークスペースのホスト名ごとに API パス(`/graphql`、`/metadata`、`/rest`、`/auth/`、`/client-config`、`/file`)をバックエンドにルーティングし、すべてのワークスペースが同一オリジンを維持するようにします。Twenty Cloud はこの方式で稼働しています。

View File

@@ -0,0 +1,260 @@
---
title: トラブルシューティング
icon: wrench
---
## トラブルシューティング
開発環境のセットアップ、バージョンアップまたはセルフホスティング中に問題が発生した場合、こちらによくある問題の解決策を示しています。
### セルフホスティング
#### 初回インストールに`ユーザー "postgres" のパスワード認証失敗`と表示される
🚨 **重要: この解決策は新規インストールの場合のみ適用されます** 🚨
すでに稼働中のTwentyインスタンスに本番データがある場合、これらの手順に従うとデータベースが完全に削除されますので、絶対に従わないでください。
Twentyを初めてインストールする際には、デフォルトのデータベースパスワードを変更する必要があるかもしれません。
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
⚠️ 警告: 以下のステップを実行すると、データベース内のすべてのデータが完全に削除されます! ⚠️
これは重要なデータのない新規インストールの場合のみ進めてください。
`PG_DATABASE_PASSWORD` を更新するには、次のようにする必要があります。
```sh
# Update the PG_DATABASE_PASSWORD in .env
docker compose down --volumes
docker compose up -d
```
#### CR行区切り[Windows]が見つかる
これは、Windows の改行文字と Git の設定を組み合わせたために発生します。 次を実行してみてください:
```
git config --global core.autocrlf false
```
その後、リポジトリを削除して再クローンします。
#### メタデータスキーマが見つかりません
Twentyのインストール中に、postgresデータベースを適切なスキーマ、拡張、およびユーザーで準備する必要があります。
この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
そうでない場合は、お使いのコンピュータ上で複数の PostgreSQL インスタンスが実行されていないことを確認してください。
#### モジュール'twenty-emails' またはその対応する型宣言が見つかりません。
データベースの初期化を実行する前に、`20-emails` パッケージ (`npx nx run 20-emails:build`) をビルドする必要があります。
#### twenty-xパッケージが見つかりません
ルートディレクトリでyarnを実行し、その後 `npx nx server:dev twenty-server`を実行してください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。
#### 保存時のLintが機能しない
Oxc拡張機能 (`oxc.oxc-vscode`) がインストールされている場合、これは標準設定で動作するはずです。 これがうまくいかない場合は、VS Code の設定に追加してみてください (開発コンテナスコープ):
```
"editor.codeActionsOnSave": {
"source.fixAll.oxc": "explicit"
}
```
#### `npx nx start` または `npx nx start 21-front` を実行している間、メモリ不足のエラーがスローされます
`npx nx start` の代わりに、必要なサービスだけを実行してください。 例えば、サーバーで作業している場合は、`npx nx worker twenty-server` のみを実行してください。
**うまくいかない場合:**
WSL 上で `npx nx run twenty-server:start` だけを実行しようとして、以下のメモリエラーで失敗する場合:
`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
回避策は、ターミナルで以下のコマンドを実行するか、`.bashrc`プロファイルに追加して自動的に適用されるようにします。
`export NODE_OPTIONS="--max-old-space-size=8192"`
\--max-old-space-size=8192 フラグはNode.jsヒープの上限を8GBに設定します; 使用量はアプリケーションの要求に応じてスケールします。
参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
**動作しない場合:**
マシンのRAMをほとんど消費しているプロセスを調査します。 Twentyでは、一部のVS Code拡張モジュールが多くのRAMを消費していることに気づいたため、一時的に無効にしました。
**動作しない場合:**
マシンを再起動すると、ゴーストプロセスのクリーンアップができます。
#### `npx nx start`を実行中にログに謎の[0]や[1]が表示される
`npx nx start`コマンドが複数のコマンドを裏で実行しているため、これは予想された挙動です。
#### メールが送信されない
ほとんどの場合、バックグラウンドで`worker`が動作していないのが原因です。 実行してみてください 実行してみてください 実行してみてください
```
npx nx worker twenty-server
```
#### Microsoft 365 アカウントを Twenty に接続できません
ほとんどの場合、管理者があなたのアカウントのMicrosoft 365ライセンスを有効化していないことが原因です。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。
エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 詳細は[こちら](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
#### `yarn` を実行中にコンソールに警告が表示されます
警告は、`package.json`に明示的に記載されていない追加依存関係の取得を伝えており、破損するエラーがない限り、すべてが期待通りに動作するはずです。
#### ユーザーがログインページにアクセスすると、ワークスペースにアクセスしようとする権限のないユーザーに関するエラーがログに表示されます。
ユーザーの身元が確認されていないので、ログアウト時にユーザーが許可されていないと予想されます。
#### ワーカーが稼働しているかどうかを確認するには?
* [webhook-test.com](https://webhook-test.com/)にアクセスし、**Your Unique Webhook URL**をコピーします。
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/self-hosting/webhook-test.jpg" alt="Webhookテスト" />
</div>
* Twentyアプリを開き、`/settings`に移動し、画面左下の**Advanced**トグルを有効にします。
* 新しいWebhookを作成します。
* **Your Unique Webhook URL**をTwentyの**Endpoint Url**フィールドに貼り付けます。 **Filters**を`Companies`と`Created`に設定します。
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/self-hosting/webhook-settings.jpg" alt="Webhook設定" />
</div>
* `/objects/companies`にアクセスし、新しい企業レコードを作成します。
* [webhook-test.com](https://webhook-test.com/)に戻り、新しい**POSTリクエスト**が受信されたか確認します。
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/self-hosting/webhook-test-result.jpg" alt="Webhookテスト結果" />
</div>
* **POSTリクエスト**が受信された場合、あなたのワーカーは正常に稼働しています。 そうでない場合は、ワーカーのトラブルシューティングが必要です。
#### フロントエンドの起動に失敗し、エラーが返される TS5042: オプション「プロジェクト」をコマンドラインのソースファイルと混在させることはできません
以下の例に示すように、`packages/21ui/vite-config.ts`のチェッカープラグインにコメントしてください。
```
plugins: [
react({ jsxImportSource: 'react' }),
tsconfigPaths(),
svgr(),
dts(dtsConfig),
// checker(checkersConfig),
wyw({
include: [
'**/OverflowingTextWithTooltip.tsx',
'**/Chip.tsx',
'**/Tag.tsx',
'**/Avatar.tsx',
'**/AvatarChip.tsx',
],
babelOptions: {
presets: ['@babel/preset-typescript', '@babel/preset-react'],
},
}),
],
```
#### 管理パネルにアクセスできない
`UPDATE core."user"を実行します。 SET "canAccessFullAdminPanel" = TRUE WHEREメール = 'you@yourdomain.com';`は、管理パネルにアクセスするためのデータベースコンテナにあります。
#### ワークフローを実行すると、エラー「ロジック関数の実行は無効です。 有効にするには LOGIC_FUNCTION_TYPE を LOCAL または LAMBDA に設定してください。」
本番環境では、ロジック関数はデフォルトで無効になっています。 有効にするには、`LOGIC_FUNCTION_TYPE` 環境変数を `LOCAL` または `LAMBDA` に設定します。 これは、環境変数経由、または管理画面のデータベース変数から設定できます。 詳細は[ロジック関数のセットアップガイド](/l/ja/developers/self-host/capabilities/setup#logic-functions-available-drivers)を参照してください。
#### AIチャットでメッセージを入力すると、すぐには答えられず、答えを見るためにページを更新する必要があります。
つまり、リバースプロキシはストリームベースの API 応答の構成を欠落しています。 以下は Nginx の設定例です。
```
location ~* ^/api/.*stream|\/graphql\/stream {
proxy_pass http://twenty_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_cache off;
gzip off;
#chunked_transfer_encoding off;
add_header X-Accel-Buffering no always;
}
```
### Docker Compose 1-click
#### ログインできない
セットアップ後にログインできない場合:
1. 次のコマンドを実行してください:
```bash
docker exec -it twenty-server-1 yarn
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
```
2. Dockerコンテナを再起動してください:
```bash
docker compose down
docker compose up -d
```
`database:reset` コマンドはデータベースを完全に消去し、最初から再作成します。
#### リバースプロキシの背後での接続問題
リバースプロキシの背後でTwentyを実行し、接続問題が発生している場合:
1. **SERVER_URLの確認:**
`.env`ファイルの`SERVER_URL`が外部アクセスURLと一致するようにし、SSLが有効なら`https`を含めます。
2. **リバースプロキシ設定の確認:**
* リバースプロキシがTwentyサーバーへのリクエストを正しく転送していることを確認してください。
* `X-Forwarded-For`や`X-Forwarded-Proto`といったヘッダーが正しく設定されていることを確認してください。
3. **サービスの再起動:**
変更を行った後に、リバースプロキシとTwentyコンテナの両方を再起動します。
#### 画像のアップロード時にエラー - アクセス許可が拒否されました
ホストでのデータフォルダの所有権をrootから他のユーザーとグループに切り替えると、この問題が解決されます。
#### ワークフローで Logic 関数をテストする際の「ファイルが見つかりません」エラー
不足している依存関係の問題を解決するには、twenty-server コンテナで `yarn command:prod application:rebuild-default-deps` コマンドを実行します。
## サポートを受ける
このガイドにカバーされていない問題がある場合:
* ログを確認:
コンテナログを表示してエラーメッセージを確認します:
```bash
docker compose logs
```
* コミュニティサポート:
[Twentyコミュニティ](https://github.com/twentyhq/twenty/issues)または[サポートチャンネル](https://discord.gg/cx5n4Jzs57)に連絡してサポートを受けてください。

View File

@@ -0,0 +1,106 @@
---
title: アップグレードガイド
icon: arrow-up-right-dots
---
## 一般ガイドライン
**アップグレードを開始する前に、必ずデータベースをバックアップしてください**。次を実行してください:
```bash
docker exec -it {db_container_name_or_id} pg_dumpall -U {postgres_user} > databases_backup.sql
```
バックアップから復元:
```bash
cat databases_backup.sql | docker exec -i {db_container_name_or_id} psql -U {postgres_user}
```
Docker Composeを使用している場合、次の手順に従います:
1. Twentyを停止:`docker compose down`
2. `docker-compose.yml` と同じディレクトリにある `.env` ファイルの `TAG` 値を変更します
3. Twentyを起動:`docker compose up -d`
サーバーは起動時に、必要なアップグレード用のマイグレーションを自動的に実行します。 手動のコマンドは不要です。
## v2.34+ へのアップグレード — PostgreSQL 15 以降が必要
Twenty v2.34 には PostgreSQL 15 以降が必要です。 公式の Docker Compose 設定では PostgreSQL 16 を使用します。 インスタンスが外部で管理されているデータベースに接続している場合は、v2.34 サーバーを起動する前にアップグレードしてください。
## クロスバージョンのアップグレード (v1.23+)
**v1.23** 以降、Twenty はクロスバージョンのアップグレードをサポートします。 サポートされている任意のバージョンから、中間バージョンを段階的に経ることなく、最新リリースへ直接移行できます。
たとえば、v1.23 から v2.0 へ直接アップグレードすることが完全にサポートされています。
## v2.5 以降へのアップグレード — 保存データ暗号化エンベロープ
**v2.5** 以降、Twenty は保存時のシークレット(OAuth トークン、アプリケーション変数、署名用の秘密鍵、機密な設定値、TOTP シークレット)を、バージョン付きの `enc:v2:` エンベロープ内に格納し、`ENCRYPTION_KEY`(`ENCRYPTION_KEY` が未設定の場合は `APP_SECRET`)で暗号化します。
v2.5 での最初の起動時には、既存の行を新しいエンベロープに**バックフィル**する低速なアップグレードコマンドが実行されます。 これらは冪等であり、中断してサーバーを再起動しても処理が中断地点から再開されますが、大規模なデータベースでは時間がかかる場合があります。 `upgrade:status` で進行状況を監視できます。
バックフィルが最初からそのキーの下に行を書き込めるよう、v2.5 へのアップグレード**前に**専用の `ENCRYPTION_KEY` を設定しておく必要があります。 バックフィル後にキーを切り替えるには、[ローテーション](/l/ja/developers/self-host/capabilities/key-rotation)が必要です。
## シークレットおよび署名鍵のローテーション
`ENCRYPTION_KEY` のローテーション、JWT 署名鍵のローテーション、漏えいした署名鍵の失効といった日常的な運用タスクについては、専用の[鍵ローテーションガイド](/l/ja/developers/self-host/capabilities/key-rotation)を参照してください。
## アップグレードステータスの確認
`upgrade:status` コマンドを使用すると、インスタンスとワークスペースのマイグレーションの現在の状態を確認できます。 アップグレードの問題をデバッグしたり、サポートリクエストを提出する際に役立ちます。
サーバーコンテナから実行します:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status
```
出力例:
```sh
APP_VERSION: v1.23.0
Instance
Inferred version: 1.23.0
Latest command: 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:43:58.823Z
Workspace
Apple (20202020-1c25-4d02-bf25-6aeccf7ea419)
Inferred version: 1.23.0
Latest command: 1.23.0_UpdateGlobalObjectContextCommandMenuItemsCommand_1780000005000
Status: Up to date
Executed by: v1.23.0
At: 2026-04-16T11:44:09.361Z
Summary
Instance: Up to date
Workspaces: 1 up to date, 0 behind, 0 failed (1 total)
```
### オプション
| フラグ | 説明 |
| ------------------------- | --------------------------------------------- |
| `-w, --workspace-id <id>` | 特定のワークスペースに絞り込みます。 複数回指定できます。 |
| `-f, --failed-only` | 最新の状態のワークスペースを非表示にし、遅れているものと失敗したエントリのみを表示します。 |
## トラブルシューティング
一部のワークスペースでアップグレードが失敗した場合、サーバーは失敗したステップを超えて先に進みません。 サーバーを再起動すると(`docker compose up -d`)、中断した地点からアップグレードを再試行します。
問題を迅速に特定するには、次を実行します:
```bash
docker exec -it {server_container_name_or_id} yarn command:prod upgrade:status --failed-only
```
これにより、遅れている、または失敗しているワークスペースのみが表示され、各失敗のエラーメッセージも併せて表示されます。
## v1.23 以前
インスタンスが v1.23 より前の場合は、v1.23 に到達するまで、各メジャーのタグ付きバージョンを順に(v1.6 から v1.7、次に v1.7 から v1.8、…)段階的にアップグレードする必要があります。 そこからは、最新バージョンに直接アップグレードできます。

View File

@@ -0,0 +1,26 @@
---
title: セルフホスト
description: 独自のインフラで Twenty をデプロイして管理できます。
---
<Frame>
<img src="/images/user-guide/what-is-twenty/20.png" alt="AI" />
</Frame>
## 概要
Twenty は独自のインフラでセルフホストでき、データとデプロイを完全に制御できます。
## なぜセルフホスト?
* **データの所有権**: すべての CRM データを自社サーバー上に保持
* **コンプライアンス**: データ所在地に関する規制要件を満たす
* **カスタマイズ**: プラットフォームの変更および拡張に対するフルアクセス
## 始めに
<CardGroup cols={2}>
<Card title="Docker Compose" icon="docker" href="/l/ja/developers/self-host/capabilities/docker-compose">
Docker でのクイックセットアップ
</Card>
</CardGroup>