diff --git a/docs/self-hosting/govern/environment-variables.md b/docs/self-hosting/govern/environment-variables.md index 05229b8..36a78d6 100644 --- a/docs/self-hosting/govern/environment-variables.md +++ b/docs/self-hosting/govern/environment-variables.md @@ -77,18 +77,16 @@ This is where you'll make all configuration changes. Remember to restart the ins ### Database settings -| Variable | Description | Default Value | -| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | -| **PGHOST** | Hostname or IP address of your PostgreSQL server. | plane-db | -| **PGDATABASE** | Name of the PostgreSQL database Plane will use. | plane | -| **POSTGRES_USER** | Username for PostgreSQL authentication. | plane | -| **POSTGRES_PASSWORD** | Password for PostgreSQL authentication. **Critical:** Use a strong, unique password here. | plane | -| **POSTGRES_DB** | Same as PGDATABASE - the name of the PostgreSQL database. | plane | -| **POSTGRES_PORT** | TCP port your PostgreSQL server is listening on. | 5432 | -| **PGDATA** | Directory path where PostgreSQL data is stored. Only relevant if you're managing PostgreSQL within the same container/system. | /var/lib/postgresql/data | -| **DATABASE_URL** | Full connection string for PostgreSQL. If provided, this takes precedence over individual connection parameters. Format: `postgresql://username:password@host:port/dbname` | | -| **FOLLOWER_POSTGRES_URI** | Connection string for a PostgreSQL read replica. Used for read-heavy operations to reduce load on the primary database. | Same as DATABASE_URL | -| **PLANE_PI_DATABASE_URL** | Connection string for the Plane Intelligence database. A separate database used by the PI service. | postgresql://plane:plane@plane-db/plane_pi | +| Variable | Description | Default Value | +| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| **PGHOST** | Hostname or IP address of your PostgreSQL server. | plane-db | +| **PGDATABASE** | Name of the PostgreSQL database Plane will use. | plane | +| **POSTGRES_USER** | Username for PostgreSQL authentication. | plane | +| **POSTGRES_PASSWORD** | Password for PostgreSQL authentication. **Critical:** Use a strong, unique password here. | plane | +| **POSTGRES_DB** | Same as PGDATABASE - the name of the PostgreSQL database. | plane | +| **POSTGRES_PORT** | TCP port your PostgreSQL server is listening on. | 5432 | +| **PGDATA** | Directory path where PostgreSQL data is stored. Only relevant if you're managing PostgreSQL within the same container/system. | /var/lib/postgresql/data | +| **DATABASE_URL** | Full connection string for PostgreSQL. If provided, this takes precedence over individual connection parameters. Format: `postgresql://username:password@host:port/dbname` | | ### Redis settings @@ -164,14 +162,13 @@ This is where you'll make all configuration changes. Remember to restart the ins ### OpenSearch -| Variable | Description | Default Value | -| --------------------------- | --------------------------------------------------------------- | ------------------------------------ | -| **OPENSEARCH_ENABLED** | Enable OpenSearch integration | 1 | -| **OPENSEARCH_URL** | OpenSearch endpoint URL | https://opensearch.example.com:9200/ | -| **OPENSEARCH_USERNAME** | Authentication username | admin | -| **OPENSEARCH_PASSWORD** | Authentication password | your-secure-password | -| **OPENSEARCH_INDEX_PREFIX** | Prefix for all index names (useful for multi-tenant setups) | (empty) | -| **OPENSEARCH_ML_MODEL_ID** | OpenSearch ML model ID used for embedding-based search features | (empty) | +| Variable | Description | Default Value | +| --------------------------- | ----------------------------------------------------------- | ------------------------------------ | +| **OPENSEARCH_ENABLED** | Enable OpenSearch integration | 1 | +| **OPENSEARCH_URL** | OpenSearch endpoint URL | https://opensearch.example.com:9200/ | +| **OPENSEARCH_USERNAME** | Authentication username | admin | +| **OPENSEARCH_PASSWORD** | Authentication password | your-secure-password | +| **OPENSEARCH_INDEX_PREFIX** | Prefix for all index names (useful for multi-tenant setups) | (empty) | ### Plane AI @@ -186,6 +183,17 @@ To start Plane AI services, set each replica count to `1`: | **PI_WORKER_REPLICAS** | Plane AI Worker replica count | Yes | | **PI_MIGRATOR_REPLICAS** | Plane AI Migrator replica count | Yes | +#### Database settings + +::: info Plane AI database +Plane AI uses a separate PostgreSQL database. Create a new database (e.g. `plane_pi`) on your PostgreSQL server, then set **PLANE_PI_DATABASE_URL** to its connection string. Example: `postgresql://user:password@host:5432/plane_pi` +::: + +| Variable | Description | Default Value | +| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | +| **PLANE_PI_DATABASE_URL** | Connection string for the Plane AI database. A separate database used by the PI service. | postgresql://plane:plane@plane-db/plane_pi | +| **FOLLOWER_POSTGRES_URI** | Connection string for a Plane PostgreSQL DB read replica. Used for read-heavy operations to reduce load on the primary database. | Same as DATABASE_URL | + #### LLM provider API keys Plane AI supports multiple LLM providers. Configure one or more by adding their API keys. diff --git a/docs/self-hosting/methods/install-methods-commercial/kubernetes.md b/docs/self-hosting/methods/install-methods-commercial/kubernetes.md index 0253f84..b2429f0 100644 --- a/docs/self-hosting/methods/install-methods-commercial/kubernetes.md +++ b/docs/self-hosting/methods/install-methods-commercial/kubernetes.md @@ -437,27 +437,32 @@ airgapped: #### Plane AI deployment -| Setting | Default | Required | Description | -| -------------------------------- | :----------------------------------------------: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------- | -| services.pi.enabled | false | No | Set to `true` to enable the Plane AI service and its API, worker, beat, and migrator workloads. | -| services.pi.replicas | 1 | Yes | Number of replicas for the Plane AI API deployment. It must be >=1. | -| services.pi.memoryLimit | 1000Mi | | Memory limit for the Plane AI API deployment. | -| services.pi.cpuLimit | 500m | | CPU limit for the Plane AI API deployment. | -| services.pi.memoryRequest | 50Mi | | Memory request for the Plane AI API deployment. | -| services.pi.cpuRequest | 50m | | CPU request for the Plane AI API deployment. | -| services.pi.image | artifacts.plane.so/makeplane/plane-pi-commercial | | Docker image for the Plane AI service. | -| services.pi.pullPolicy | Always | | Image pull policy for the Plane AI deployment. | -| services.pi.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the Plane AI API service. | -| services.pi.nodeSelector | {} | | Node selector for the Plane AI API deployment. | -| services.pi.tolerations | [] | | Tolerations for the Plane AI API deployment. | -| services.pi.affinity | {} | | Affinity rules for the Plane AI API deployment. | -| services.pi.labels | {} | | Custom labels to add to the Plane AI API deployment. | -| services.pi.annotations | {} | | Custom annotations to add to the Plane AI API deployment. | -| env.pg_pi_db_name | plane_pi | | PostgreSQL database name used by Plane AI when `postgres.local_setup=true`. | -| env.pg_pi_db_remote_url | "" | | PostgreSQL connection URL for Plane AI when using a remote database. Required when `postgres.local_setup=false` and Plane AI is enabled. | -| env.pi_envs.internal_secret | tyfvfqvBJAgpm9bzvf3r4urJer0Ehfdubk | | Internal secret used by Plane AI for OAuth and internal APIs. | -| env.pi_envs.plane_api_host | "" | | Override for the Plane API host URL used by Plane AI. Defaults to the license domain. | -| env.pi_envs.cors_allowed_origins | "" | | CORS allowed origins for Plane AI API. Defaults to the license domain. | +::: info Plane AI database +Plane AI uses a separate PostgreSQL database. Create a new database (e.g. `plane_pi`) and connect it using `env.pg_pi_db_remote_url` in values, or **PLANE_PI_DATABASE_URL** when using `pi_api_env_existingSecret`. +::: + +| Setting | Default | Required | Description | +| --------------------------------- | :----------------------------------------------: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------- | +| services.pi.enabled | false | No | Set to `true` to enable the Plane AI service and its API, worker, beat, and migrator workloads. | +| services.pi.replicas | 1 | Yes | Number of replicas for the Plane AI API deployment. It must be >=1. | +| services.pi.memoryLimit | 1000Mi | | Memory limit for the Plane AI API deployment. | +| services.pi.cpuLimit | 500m | | CPU limit for the Plane AI API deployment. | +| services.pi.memoryRequest | 50Mi | | Memory request for the Plane AI API deployment. | +| services.pi.cpuRequest | 50m | | CPU request for the Plane AI API deployment. | +| services.pi.image | artifacts.plane.so/makeplane/plane-pi-commercial | | Docker image for the Plane AI service. | +| services.pi.pullPolicy | Always | | Image pull policy for the Plane AI deployment. | +| services.pi.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the Plane AI API service. | +| services.pi.nodeSelector | {} | | Node selector for the Plane AI API deployment. | +| services.pi.tolerations | [] | | Tolerations for the Plane AI API deployment. | +| services.pi.affinity | {} | | Affinity rules for the Plane AI API deployment. | +| services.pi.labels | {} | | Custom labels to add to the Plane AI API deployment. | +| services.pi.annotations | {} | | Custom annotations to add to the Plane AI API deployment. | +| env.pg_pi_db_name | plane_pi | | PostgreSQL database name used by Plane AI when `postgres.local_setup=true`. | +| env.pg_pi_db_remote_url | "" | | PostgreSQL connection URL for Plane AI when using a remote database. Required when `postgres.local_setup=false` and Plane AI is enabled. | +| env.pi_envs.follower_postgres_uri | Same as Plane DATABASE_URL | No | Connection string for a Plane PostgreSQL DB read replica. Used for read-heavy operations to reduce load on the primary database. | +| env.pi_envs.internal_secret | tyfvfqvBJAgpm9bzvf3r4urJer0Ehfdubk | | Internal secret used by Plane AI for OAuth and internal APIs. | +| env.pi_envs.plane_api_host | "" | | Override for the Plane API host URL used by Plane AI. Defaults to the license domain. | +| env.pi_envs.cors_allowed_origins | "" | | CORS allowed origins for Plane AI API. Defaults to the license domain. | #### Plane AI Worker Deployment @@ -659,6 +664,7 @@ To configure the external secrets for your application, you need to define speci | | GITLAB_CLIENT_ID | Required if `services.silo.connectors.gitlab.enabled` is true | GitLab client ID | your_gitlab_client_id | | | GITLAB_CLIENT_SECRET | Required if `services.silo.connectors.gitlab.enabled` is true | GitLab client secret key | your_gitlab_client_secret_key | | pi_api_env_existingSecret | PLANE_PI_DATABASE_URL | Required if `services.pi.enabled=true` | PostgreSQL connection URL for Plane AI database | **k8s service example**: `postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local/plane_pi`

**external**: `postgresql://username:password@your-db-host:5432/plane_pi` | +| | FOLLOWER_POSTGRES_URI | No | Connection string for a PostgreSQL read replica | Same as DATABASE_URL. Used for read-heavy operations to reduce load on the primary database. **k8s**: `postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane` | | | AMQP_URL | Required if `services.pi.enabled=true` | RabbitMQ connection URL | **k8s service example**: `amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/`

**external**: `amqp://username:password@your-rabbitmq-host:5672/` | | | AES_SECRET_KEY | Required if `services.pi.enabled=true` | AES secret key for Plane AI | dsOdt7YrvxsTIFJ37pOaEVvLxN8KGBCr (or your own value) | | | OPENAI_API_KEY | required if `services.pi.ai_providers.openai.enabled` is true | OpenAI API key | your_openai_api_key | diff --git a/docs/self-hosting/methods/kubernetes.md b/docs/self-hosting/methods/kubernetes.md index 9e42c96..d77f99a 100644 --- a/docs/self-hosting/methods/kubernetes.md +++ b/docs/self-hosting/methods/kubernetes.md @@ -435,27 +435,32 @@ airgapped: #### Plane AI deployment -| Setting | Default | Required | Description | -| -------------------------------- | :----------------------------------------------: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------- | -| services.pi.enabled | false | No | Set to `true` to enable the Plane AI service and its API, worker, beat, and migrator workloads. | -| services.pi.replicas | 1 | Yes | Number of replicas for the Plane AI API deployment. It must be >=1. | -| services.pi.memoryLimit | 1000Mi | | Memory limit for the Plane AI API deployment. | -| services.pi.cpuLimit | 500m | | CPU limit for the Plane AI API deployment. | -| services.pi.memoryRequest | 50Mi | | Memory request for the Plane AI API deployment. | -| services.pi.cpuRequest | 50m | | CPU request for the Plane AI API deployment. | -| services.pi.image | artifacts.plane.so/makeplane/plane-pi-commercial | | Docker image for the Plane AI service. | -| services.pi.pullPolicy | Always | | Image pull policy for the Plane AI deployment. | -| services.pi.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the Plane AI API service. | -| services.pi.nodeSelector | {} | | Node selector for the Plane AI API deployment. | -| services.pi.tolerations | [] | | Tolerations for the Plane AI API deployment. | -| services.pi.affinity | {} | | Affinity rules for the Plane AI API deployment. | -| services.pi.labels | {} | | Custom labels to add to the Plane AI API deployment. | -| services.pi.annotations | {} | | Custom annotations to add to the Plane AI API deployment. | -| env.pg_pi_db_name | plane_pi | | PostgreSQL database name used by Plane AI when `postgres.local_setup=true`. | -| env.pg_pi_db_remote_url | "" | | PostgreSQL connection URL for Plane AI when using a remote database. Required when `postgres.local_setup=false` and Plane AI is enabled. | -| env.pi_envs.internal_secret | tyfvfqvBJAgpm9bzvf3r4urJer0Ehfdubk | | Internal secret used by Plane AI for OAuth and internal APIs. | -| env.pi_envs.plane_api_host | "" | | Override for the Plane API host URL used by Plane AI. Defaults to the license domain. | -| env.pi_envs.cors_allowed_origins | "" | | CORS allowed origins for Plane AI API. Defaults to the license domain. | +::: info Plane AI database +Plane AI uses a separate PostgreSQL database. Create a new database (e.g. `plane_pi`) and connect it using `env.pg_pi_db_remote_url` in values, or **PLANE_PI_DATABASE_URL** when using `pi_api_env_existingSecret`. +::: + +| Setting | Default | Required | Description | +| --------------------------------- | :----------------------------------------------: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------- | +| services.pi.enabled | false | No | Set to `true` to enable the Plane AI service and its API, worker, beat, and migrator workloads. | +| services.pi.replicas | 1 | Yes | Number of replicas for the Plane AI API deployment. It must be >=1. | +| services.pi.memoryLimit | 1000Mi | | Memory limit for the Plane AI API deployment. | +| services.pi.cpuLimit | 500m | | CPU limit for the Plane AI API deployment. | +| services.pi.memoryRequest | 50Mi | | Memory request for the Plane AI API deployment. | +| services.pi.cpuRequest | 50m | | CPU request for the Plane AI API deployment. | +| services.pi.image | artifacts.plane.so/makeplane/plane-pi-commercial | | Docker image for the Plane AI service. | +| services.pi.pullPolicy | Always | | Image pull policy for the Plane AI deployment. | +| services.pi.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the Plane AI API service. | +| services.pi.nodeSelector | {} | | Node selector for the Plane AI API deployment. | +| services.pi.tolerations | [] | | Tolerations for the Plane AI API deployment. | +| services.pi.affinity | {} | | Affinity rules for the Plane AI API deployment. | +| services.pi.labels | {} | | Custom labels to add to the Plane AI API deployment. | +| services.pi.annotations | {} | | Custom annotations to add to the Plane AI API deployment. | +| env.pg_pi_db_name | plane_pi | | PostgreSQL database name used by Plane AI when `postgres.local_setup=true`. | +| env.pg_pi_db_remote_url | "" | | PostgreSQL connection URL for Plane AI when using a remote database. Required when `postgres.local_setup=false` and Plane AI is enabled. | +| env.pi_envs.follower_postgres_uri | Same as Plane DATABASE_URL | No | Connection string for a Plane PostgreSQL DB read replica. Used for read-heavy operations to reduce load on the primary database. | +| env.pi_envs.internal_secret | tyfvfqvBJAgpm9bzvf3r4urJer0Ehfdubk | | Internal secret used by Plane AI for OAuth and internal APIs. | +| env.pi_envs.plane_api_host | "" | | Override for the Plane API host URL used by Plane AI. Defaults to the license domain. | +| env.pi_envs.cors_allowed_origins | "" | | CORS allowed origins for Plane AI API. Defaults to the license domain. | #### Plane AI Worker Deployment @@ -657,6 +662,7 @@ To configure the external secrets for your application, you need to define speci | | GITLAB_CLIENT_ID | Required if `services.silo.connectors.gitlab.enabled` is true | GitLab client ID | your_gitlab_client_id | | | GITLAB_CLIENT_SECRET | Required if `services.silo.connectors.gitlab.enabled` is true | GitLab client secret key | your_gitlab_client_secret_key | | pi_api_env_existingSecret | PLANE_PI_DATABASE_URL | Required if `services.pi.enabled=true` | PostgreSQL connection URL for Plane AI database | **k8s service example**: `postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local/plane_pi`

**external**: `postgresql://username:password@your-db-host:5432/plane_pi` | +| | FOLLOWER_POSTGRES_URI | No | Connection string for a PostgreSQL read replica | Same as DATABASE_URL. Used for read-heavy operations to reduce load on the primary database. **k8s**: `postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane` | | | AMQP_URL | Required if `services.pi.enabled=true` | RabbitMQ connection URL | **k8s service example**: `amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/`

**external**: `amqp://username:password@your-rabbitmq-host:5672/` | | | AES_SECRET_KEY | Required if `services.pi.enabled=true` | AES secret key for Plane AI | dsOdt7YrvxsTIFJ37pOaEVvLxN8KGBCr (or your own value) | | | OPENAI_API_KEY | required if `services.pi.ai_providers.openai.enabled` is true | OpenAI API key | your_openai_api_key |