> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker Compose

<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 theme={null}
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
```

特定のバージョンまたはブランチをインストールするには:

```bash theme={null}
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 theme={null}
   curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
   ```

2. **暗号化キーを生成する**

   ユニークなランダム文字列を生成するには、次のコマンドを実行します:

   ```bash theme={null}
   openssl rand -base64 32
   ```

   **重要:** この値を秘密にしてください/共有しないでください。 `ENCRYPTION_KEY` を失うことは、データベースに保存されているすべてのシークレット（OAuth トークン、アプリケーション変数、TOTP シークレットなど）へのアクセスを失うことを意味します。

3. **`.env`を更新**

   生成したトークンで.envファイルのプレースホルダー値を置き換えます:

   ```ini theme={null}
   ENCRYPTION_KEY=random_string
   ```

   ダウンタイムなしでキーをローテーションする手順については、[キーのローテーションガイド](/l/ja/developers/self-host/capabilities/key-rotation)を参照してください。

4. **Postgres パスワードを設定**

   特殊文字を含まない強力なパスワードで、.envファイルの`PG_DATABASE_PASSWORD`値を更新します。

   ```ini theme={null}
   PG_DATABASE_PASSWORD=my_strong_password
   ```

### ステップ 2: Docker Compose ファイルを取得

作業ディレクトリに`docker-compose.yml`ファイルをダウンロードします:

```bash theme={null}
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
```

### ステップ 3: アプリケーションを起動

Dockerコンテナを開始します:

```bash theme={null}
docker compose up -d
```

### ステップ 4: アプリケーションにアクセス

自分のコンピュータでtwentyCRMをホストしている場合は、ブラウザを開いて[http://localhost:3000](http://localhost:3000)にアクセスします。

サーバーでホストしている場合、サーバーが稼働していてすべてが正常であるかを確認してください

```bash theme={null}
curl http://localhost:3000
```

## 構成

### Twentyを外部アクセスに公開

デフォルトでは、Twentyはポート`3000`で`localhost`上で動作します。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。 外部ドメインまたはIPアドレス経由でアクセスするには、`.env`ファイルで`SERVER_URL`を構成する必要があります。

#### `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 theme={null}
     SERVER_URL=http://your-domain-or-ip:3000
     ```

   * **リバースプロキシを使用する場合（標準ポート）:**

     NginxやTraefikのようなリバースプロキシを使用し、SSLを構成している場合:

     ```ini theme={null}
     SERVER_URL=https://your-domain-or-ip
     ```

   * **リバースプロキシを使用する場合（カスタムポート）:**

     標準以外のポートを使用している場合:

     ```ini theme={null}
     SERVER_URL=https://your-domain-or-ip:custom-port
     ```

2. **.env ファイルを更新**

   .env`ファイルを開き、`SERVER\_URL\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`を更新します:

   ```ini theme={null}
   SERVER_URL=http(s)://your-domain-or-ip:your-port
   ```

   **例:**

   * SSLなしの直接アクセス:
     ```ini theme={null}
     SERVER_URL=http://123.45.67.89:3000
     ```
   * ドメイン経由でSSLを使用してアクセス:
     ```ini theme={null}
     SERVER_URL=https://mytwentyapp.com
     ```

3. **アプリケーションを再起動**

   変更を反映するために、Dockerコンテナを再起動します:

   ```bash theme={null}
   docker compose down
   docker compose up -d
   ```

#### 考慮事項

* **リバースプロキシ構成:**

  リバースプロキシが正しい内部ポート（デフォルトでは`3000`）にリクエストを転送することを確認してください。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。 SSL終端と必要なヘッダーを設定します。

* **ファイアウォール設定:**

  外部アクセスを許可するためにファイアウォールで必要なポートを開けます。

* **一貫性:**

  `SERVER_URL`は、ユーザーがブラウザでアプリケーションにアクセスする方法と一致する必要があります。

#### 永続性

* **データボリューム:**

  Docker Compose 構成では、データベースとサーバーストレージのデータを永続化するためにボリュームを使用します。

* **ステートレス環境:**

  ステートレス環境（例: 一部のクラウドサービス）に展開する場合、データを永続化するために外部ストレージを設定します。

## バックアップと復元

定期的なバックアップは、CRM データを損失から保護します。

### データベースのバックアップを作成

```bash theme={null}
docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql
```

### 日次バックアップを自動化

crontab に追加 (`crontab -e`):

```bash theme={null}
0 2 * * * docker exec twenty-postgres pg_dump -U postgres twenty > /backups/twenty_$(date +\%Y\%m\%d).sql
```

### バックアップから復元

1. アプリケーションを停止します:

```bash theme={null}
docker compose stop twenty-server twenty-front
```

2. データベースを復元します:

```bash theme={null}
docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql
```

3. サービスの再起動:

```bash theme={null}
docker compose up -d
```

### バックアップのベストプラクティス

* **復元を定期的にテスト** — バックアップが実際に機能することを確認
* **バックアップをオフサイトに保管** — クラウドストレージ (S3, GCS など) を使用
* **機密データを暗号化** — バックアップを暗号化で保護
* **複数のコピーを保持** — 日次・週次・月次のバックアップを保持

## トラブルシューティング

問題が発生した場合は、[トラブルシューティング](/l/ja/developers/self-host/capabilities/troubleshooting)を確認して解決策を見つけてください。
