Chatwoot/docs/development/project-setup/environment-variables.md

182 lines
5.3 KiB
Markdown
Raw Normal View History

---
path: "/docs/environment-variables"
title: "Environment Variables"
---
2019-11-23 20:12:58 +00:00
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
### Database configuration
2019-09-22 05:59:26 +00:00
You can set Postgres connection URI as `DATABASE_URL` in the environment to connect to the database.
The URI is of the format
```bash
postgresql://[user[:password]@][netloc][:port][,...][/dbname][?param1=value1&...]
```
Alternatively, use the following values in database.yml which lives inside `config` directory.
2019-09-22 05:59:26 +00:00
```bash
development:
<<: *default
username: postgres
password:
database: chatwoot_dev
```
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
We use `dotenv-rails` gem to manage the environment variables. There is a file called `env.example` in the root directory of this project with all the environment variables set to empty value. You can set the correct values as per the following options. Once you set the values, you should rename the file to `.env` before you start the server.
2019-09-22 05:59:26 +00:00
### Configure FB Channel
To use FB Channel, you have to create an Facebook app in developer portal. You can find more details about creating FB channels [here](https://developers.facebook.com/docs/apps/#register)
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
```bash
FB_VERIFY_TOKEN=
FB_APP_SECRET=
FB_APP_ID=
2019-09-22 05:59:26 +00:00
```
### Configure emails
For development, you don't need an email provider. Chatwoot uses [letter-opener](https://github.com/ryanb/letter_opener) gem to test emails locally
For production use, use the following variables to set SMTP server.
```bash
MAILER_SENDER_EMAIL=
SMTP_ADDRESS=
SMTP_USERNAME=
SMTP_PASSWORD=
```
If you would like to use Sendgrid to send your emails, use the following environment variables:
```bash
SMTP_ADDRESS=smtp.sendgrid.net
SMTP_AUTHENTICATION=plain
SMTP_DOMAIN=<your verified domain>
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_PORT=587
SMTP_USERNAME=apikey
SMTP_PASSWORD=<your Sendgrid API key>
```
If you would like to use Mailgun to send your emails, use the following environment variables:
```bash
SMTP_ADDRESS=smtp.mailgun.org
SMTP_AUTHENTICATION=plain
SMTP_DOMAIN=<Your domain, this has to be verified in Mailgun>
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_PORT=587
SMTP_USERNAME=<Your SMTP username, view under Domains tab>
SMTP_PASSWORD=<Your SMTP password, view under Domains tab>
```
If you would like to use Mailchimp to send your emails, use the following environment variables:
Note: Mandrill is the transactional email service for Mailchimp. You need to enable transactional email and login to mandrillapp.com.
```bash
SMTP_ADDRESS=smtp.mandrillapp.com
SMTP_AUTHENTICATION=plain
SMTP_DOMAIN=<Your verified domain in Mailchimp>
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_PORT=587
SMTP_USERNAME=<Your SMTP username displayed under Settings -> SMTP & API info>
SMTP_PASSWORD=<Any valid API key, create an API key under Settings -> SMTP & API Info>
```
2019-09-22 05:59:26 +00:00
### Configure frontend URL
Provide the following value as frontend url
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
```bash
FRONTEND_URL='http://localhost:3000'
2019-09-22 05:59:26 +00:00
```
### Configure storage
Chatwoot uses [active storage](https://edgeguides.rubyonrails.org/active_storage_overview.html) for storing attachments. The default storage option is the local storage on your server.
But you can change it to use any of the cloud providers like amazon s3, microsoft azure and google gcs etc. Refer [configuring cloud storage](./configuring-cloud-storage) for additional environment variables required.
2019-09-22 05:59:26 +00:00
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
```bash
ACTIVE_STORAGE_SERVICE='local'
2019-09-22 05:59:26 +00:00
```
### Configure Redis
2019-09-22 05:59:26 +00:00
For development, you can use the following url to connect to redis.
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
```bash
REDIS_URL='redis:://127.0.0.1:6379'
2019-09-22 05:59:26 +00:00
```
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
To authenticate redis connections made by app server and sidekiq, if it's protected by a password, use the following
environment variable to set the password.
```bash
REDIS_PASSWORD=
```
🔥Docker and environment variables cleanup (#270) * Added dotenv-rails gem to manage environment variables * Added dotenv-rails gem to manage environment variables * Removed figaro which was used earlier for this purpose * Standardized variable names * Changed all env variables to be upper case. This included changes in files referencing env variables. * Added example env file with all variables set to empty value * Removed the earlier setup of copying application.yml and database.yml and the scripts and documentation associated to this * Docker setup * Added docker file for building the docker images * Added entrypoint.sh script which is referenced inside the Docker image * Cloned the Procfile for development using docker which has slight change compared to regular procfile * Added the docker-compose.yml which has 3 service's configuration, postgres, redis and chatwoot server and a mounted volume for postgres * Added docker related info to documentation * Added the docker setup info in the documentation * Added info for using`rbenv` instead of rvm for managing ruby versions * Updated the documentation for environment variables to have one about `dotenv-rails` gem and removed the documentation about the old copy paste method used by figaro * Changing the postgres database, username and password as environment variables * Removed database.yml from gitignore * Made the postgres databse, username and password as environemnt variables * Added this in documentation * Added a quick setup page * Added quick setup page * Removed the docs from README and added link to the docs in website * Removed the figaro related things from circle.ci config * Adding external volume for redis in docker compose * Added instructions for adding the redis volume in docs
2019-11-23 19:57:39 +00:00
### Configure Postgres host
You can set the following environment variable to set the host for postgres.
```bash
POSTGRES_HOST=localhost
```
For production and testing you have the following variables for defining the postgres database,
username and password.
```bash
POSTGRES_DATABASE=chatwoot_production
POSTGRES_USERNAME=admin
POSTGRES_PASSWORD=password
2019-11-23 20:12:58 +00:00
```
### Rails Production Variables
For production deployment, you have to set the following variables
```bash
RAILS_ENV=production
SECRET_KEY_BASE=replace_with_your_own_secret_string
```
You can generate `SECRET_KEY_BASE` using `rake secret` command from project root folder.
### Rails Logging Variables
By default chatwoot will capture `info` level logs in production. Ref [rails docs](https://guides.rubyonrails.org/debugging_rails_applications.html#log-levels) for the additional log level options.
We will also retain 1 GB of your recent logs and your last shifted log file.
You can fine tune these settings using the following environment variables
```bash
# possible values: 'debug', 'info', 'warn', 'error', 'fatal' and 'unknown'
LOG_LEVEL=
# value in megabytes
LOG_SIZE= 1024
```
### Push Notification
Chatwoot uses web push for push notification on the dashboard. Inorder to get the push notifications working you have to setup the following [VAPID](https://tools.ietf.org/html/draft-thomson-webpush-vapid-02) keys.
```bash
VAPID_PUBLIC_KEY=
VAPID_PRIVATE_KEY=
```
If you are comfortable with the Rails console, you could run `rails console` and run the following commands
```rb
vapid_key = Webpush.generate_key
# Copy the following to environment variables
vapid_key.public_key
vapid_key.private_key
```
Or you can generate a VAPID key from https://d3v.one/vapid-key-generator/