You are viewing documentation for a legacy Rasa product. If you want to get started building assistants with Rasa please check out our latest [documentation here](/content/docs/index.html).

This page contains information about customizing Rasa X.

## Making Changes to the Deployment
If you want to change values for an installed Rasa X deployment, please follow these steps.

- helm
- rasactl

1. To modify the parameters of an existing deployment, set the relevant values in your `values.yml`.

2. Get the release name which Helm used during the installation. If are unsure which release name was used, use the following command to find out the release name:

```bash
   helm list --namespace <your namespace>
   ```

3. Upgrade the deployment:

```bash
   helm repo update

helm upgrade \
       --values values.yml \
       --namespace <your namespace> \
       --reuse-values \
       <your release name> rasa-x/rasa-x
   ```

## Adding a Custom Action Server
1. To use a custom action server you need to build a Docker image for your action server. Please see [Building an Action Server Image](/content/docs/action-server/deploy-action-server/index.html) for more information on how to build an image and deploy it to a registry.

2. Add the image and tag you want to use to the `values.yml`. If your image is stored in a private registry, please refer to [this guide](https://legacy-docs-enterprise.rasa.com/docs/rasa-enterprise/1.0.x/installation-and-setup/customize/#adding-image-pull-secrets-for-private-registries) in order to see how to add image pull secrets to your deployment.

```yaml
   # app (custom action server) specific settings
   app:
     # name of the custom action server image to use
     name:"<name of your action server image>"
     # tag refers to the custom action server image tag
     tag:"<tag of your image>"
   ```

## Configuring Rasa Open Source Channels
To configure the [messaging and voice channels](/content/docs/rasa/user-guide/messaging-and-voice-channels/index.html) which the Rasa container should use, put the content of your `credentials.yml` in the `values.yml` as done in this example:

```yaml
   # rasa: Settings common for all Rasa containers
   rasa:
     # additionalChannelCredentials which should be used by Rasa to connect to various
     # input channels
     additionalChannelCredentials:
       socketio:
         user_message_evt: user_uttered
         bot_message_evt: bot_uttered
         session_persistence: true/false
   ```

## Adding Environment Variables
To add extra environment variables to your containers, add the environment variable to an `extraEnvs` array on the service in your `values.yml`. These values can be provided directly or refer to [secrets](https://legacy-docs-enterprise.rasa.com/docs/rasa-enterprise/1.0.x/installation-and-setup/customize/#using-an-external-secret).

```yaml
   # rasa: Settings common for all Rasa containers
   rasa:
     # other configured parameters
     # ...
     extraEnvs:
       - name: "SANIC_RESPONSE_TIMEOUT"
         value: "7200"
   ```

## Adding Image Pull Secrets for Private Registries
1. Create a [secret](https://kubernetes.io/docs/concepts/configuration/secret/) for your private registry...

2. Add the name of the created secret to your `values.yml` file:
   ```yaml
   # images: Settings for the images
   images:
     # imagePullSecrets which are required to pull images for private registries
     imagePullSecrets:
       - name: <name of your pull secret>
   ```

## Create / Update Rasa X Users
1. Get the name of the Rasa X pod:
   ```bash
   kubectl --namespace <your namespace> get pod -l app.kubernetes.io/component=rasa-x
   ```

2. Connect to the shell of this pod:
   ```bash
   kubectl --namespace <your namespace> exec -it <name of the Rasa X pod> bash
   ```

3. **Rasa Enterprise only**: Run the following command to create a new user. Please see [Role-Based Access Control](https://legacy-docs-enterprise.rasa.com/docs/rasa-enterprise/1.0.x/enterprise/role-based-access-control#default-roles) for available default roles:
   ```bash
   python scripts/manage_users.py create <username><password><role>
   ```

4. To update the password of an existing user:
   ```bash
   python scripts/manage_users.py create --update <username><password><role>
   ```

## Debug Mode
To activate the debug mode for all Rasa Open Source and Rasa X related pods, use the following configuration in your `values.yml`:
   ```yaml
   debugMode: "true"
   ```

## Specifying Volume Sizes
Rasa X requires two volume claims: one for Rasa X, and one for the database. You can define the claim sizes by setting the `size` of these services in your override file:
   ```yaml
   rasax:
     persistence:
       size: "10Gi"
   postgresql:
     persistence:
       size: "100Gi"
   ```

## Configuring Databases
Rasa X is officially compatible with the following databases:

- PostgreSQL
- Oracle ≥ 11.0

By default, Rasa X uses PostgreSQL as a database. It can be configured to use an on-premise database or your own cloud provided database. Using Oracle as your Rasa X database instead of PostgreSQL also requires some additional setup.

### PostgreSQL
Please check out the [Environment Variables](https://legacy-docs-enterprise.rasa.com/docs/rasa-enterprise/1.0.x/installation-and-setup/customize/#adding-environment-variables) for how to configure Rasa X to use a non-default PostgreSQL database.

### Oracle
Using Oracle as your Rasa X database requires database setup and configuration.

```bash
# Connect to Oracle
docker build . -t rasa/rasa-x:1.0.4-oracle
```

## Environment Variables
### Global Environment Variables
| Variable | Description |
| --- | --- |
| `RASA_X_VERSION` | The version of Rasa X used by the Rasa X docker container. |
| `RASA_VERSION` | The version of Rasa used by the Rasa docker containers. |

### RabbitMQ Variables
Variables defining the behavior of RabbitMQ:
| Variable | Default Value | Description |
| --- | --- | --- |
| `RABBITMQ_HOST` | `"rabbit"` | Hostname of the container hosting RabbitMQ. |

### DB Variables
Variables that define the credentials for the PostgreSQL database:
| Variable | Default Value | Description |
| --- | --- | --- |
| `DB_HOST` | `"db"` | Hostname of the container hosting the PostgreSQL database. |
