ToolJet/docs/versioned_docs/version-2.0.0/setup/heroku.md
Adish M d49fde2cce
Docs changes for the upcoming single docker image (#12176)
* docs changes for the upcoming single docker image

* Updated env variables

* minor formatting

* add minor refinements

* [docs] updated cloud-run and azure-container

* few corrections in deployment docs

* Add postgrest to google cloud run doc

* Formating redis content

* Formating

* Formating

* Formating

* correction in the explaining redis

* updated version

* deprecating ToolJet client deployment doc

* deprecating ToolJet client deployment from beta version

---------

Co-authored-by: rudrapratik30 <pratik104agrawal@gmail.com>
Co-authored-by: Karan Rathod <karan.altcampus@gmail.com>
Co-authored-by: Souvik <psouvik260@gmail.com>
2025-03-17 17:06:34 +05:30

162 lines
No EOL
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: heroku
title: Heroku
---
# Deploying ToolJet on Heroku
<iframe width="800" height="500" src="https://www.youtube.com/embed/ApDtwE1OXY0" frameborder="0" allowfullscreen width="100%"></iframe>
*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
### Follow the steps below to deploy ToolJet on Heroku:
1. Click the button below to start one click deployment.
<div style={{textAlign: 'center'}}>
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/tooljet/tooljet/tree/main)
</div>
2. On Heroku tab, you'll be asked to provide an `App name` and `Choose a region`. Enter the name for your deployment and select the region according to your choice.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/setup/heroku/appname.png" alt="heroku appname" />
</div>
3. Now let's enter the `Config vars` to configure additional [environment variables](/docs/setup/env-vars) that are required for the installation.
- **LOCKBOX_MASTER_KEY**: ToolJet server uses lockbox to encrypt datasource credentials. You should set the environment variable LOCKBOX_MASTER_KEY with a 32 byte hexadecimal string. If you have OpenSSL installed, you can run the command `openssl rand -hex 32` to generate the key.
- **NODE_ENV**: By default NODE_ENV is set to production.
- **NODE_OPTIONS**: Node options are configured to increase node memory to support app build.
- **SECRET_KEY_BASE**: ToolJet server uses a secure 64 byte hexadecimal string to encrypt session cookies. You should set the environment variable SECRET_KEY_BASE. If you have OpenSSL installed, you can run the command `openssl rand -hex 64` to generate the key.
- **TOOLJET_HOST**: Public URL of ToolJet installation. This is usually `https://<app-name-in-first-step\>.herokuapp.com`.
- **TOOLJET_SERVER_URL**: URL of ToolJet server installation. (This is same as the TOOLJET_HOST for Heroku deployments)
4. Click on `Deploy app` button at the bottom to initiate the build.
5. After the successful build, you'll see two buttons at the bottom: `Manage App` and `View`. Click on the `View` to open the app or click on `Manage App` to configure any settings.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/setup/heroku/build.png" alt="heroku build" />
</div>
:::tip
ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on Heroku, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
:::
### Deploying Tooljet Database
If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database.
This feature is only enabled if `ENABLE_TOOLJET_DB` is set to `true` in the Tooljet application.
#### Follow the steps below to deploy ToolJet Database on Heroku:
:::note
Please install Heroku CLI on your local machine. Please refer Heroku CLI installation steps [**here**](https://devcenter.heroku.com/articles/heroku-cli).
:::
1. **Create a new Heroku app using the PostgREST buildpack**
1.1 Create a folder with your app name. Please give a unique name to the app.
```bash
mkdir ${YOUR_PGRST_APP_NAME}
cd $${YOUR_PGRST_APP_NAME}
git init
```
1.2 Add PostgREST buildpack to your app.
```bash
heroku apps:create ${YOUR_PGRST_APP_NAME} --buildpack https://github.com/PostgREST/postgrest-heroku.git
heroku git:remote -a ${YOUR_PGRST_APP_NAME}
```
2. **Attach the Tooljet apps PostgreSQL database your Tooljet database app**
`${HEROKU_PG_DB_NAME` Should be the name of the PostgreSQL created by the Tooljet app.
You can get the `${HEROKU_PG_DB_NAME` of the Tooljet application from the Resources tab under Heroku Postgres attachments as shown below. (eg: `${HEROKU_PG_DB_NAME = postgresql-transparent-24158` ).
```bash
heroku addons:attach ${HEROKU_PG_DB_NAME} -a ${YOUR_PGRST_APP_NAME}
```
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/heroku/PostgreSQL-database.png" alt="PostgreSQL-database" />
</div>
3. **Create a Procfile**
:::info
The Procfile is a simple text file that is named Procfile without a file extension. For example, Procfile.txt is not valid.
:::
Please paste the below string within the Procfile file.
```bash
web: PGRST_SERVER_HOST=0.0.0.0 PGRST_SERVER_PORT=${PORT} PGRST_DB_URI=${PGRST_DB_URI:-${DATABASE_URL}} ./postgrest-${POSTGREST_VER}
```
4. **Set environment variables**
You can also refer environment variable [**here**](/docs/setup/env-vars/#enable-tooljet-database--optional-).
:::tip
If you have openssl installed, you can run the
command `openssl rand -hex 32` to generate the value for `PGRST_JWT_SECRET`.
If this parameter is not specified, PostgREST will refuse authentication requests.
:::
```bash
heroku config:set PGRST_JWT_SECRET=
heroku config:set POSTGREST_VER=10.0.0
```
You can also refer environment variable [**here**](/docs/setup/env-vars/#enable-tooljet-database--optional-).
5. **Build and deploy your app**
```bash
git add Procfile
git commit -m "PostgREST on Heroku"
git push --set-upstream heroku main
```
Your Heroku app should be live at `${YOUR_APP_NAME}.herokuapp.com`.
6. **Additional environment variables for Tooljet application**
Please enter the below env variables in the Tooljet application, under the setting tab. You can also refer environment variable [**here**](/docs/setup/env-vars/#enable-tooljet-database--optional-).
## Upgrading to the Latest Version
The latest version includes architectural changes and, hence, comes with new migrations.
If this is a new installation of the application, you may start directly with the latest version. This guide is not required for new installations.
#### Prerequisites for Upgrading to the Latest Version:
- It is **crucial to perform a comprehensive backup of your database** before starting the upgrade process to prevent data loss.
- Ensure that your current version is v2.23.0-ee2.10.2 before upgrading.
- Users on versions earlier than v2.23.0-ee2.10.2 must first upgrade to this version before proceeding to the latest version.
For specific issues or questions, refer to our **[Slack](https://tooljet.slack.com/join/shared_invite/zt-25438diev-mJ6LIZpJevG0LXCEcL0NhQ#)**.