--- id: google-cloud-run title: Google Cloud Run --- # Deploying ToolJet on Google Cloud Run :::info You should manually set up a PostgreSQL database to be used by ToolJet. We recommend using **Cloud SQL** for this purpose. Also for deploying ToolJet 3.0, Redis, Postgrest along with PostgreSQL are required. ::: ## Deploying ToolJet application 1. Create a new Google Cloud Run Service: We are using a multi-container setup - **Google Cloud Run service** - **tooljet-app (container - 1)** - **postgrest (container - 2)** - **redis (container - 3)** - **Cloud SQL (for PostgreSQL)** - **for both (TOOLJET_DB and PG_DB)**
Google Cloud Run New Setup
2. Ingress and Authentication can be set as shown below, to begin with. Feel free to change the security configurations as per your requirements.
ingress-auth
3. Under the containers tab, please make sure the port is set to 3000 and command `npm, run, start:prod` is entered in container argument field with CPU capacity set to 2GiB:
port-and-capacity-tooljet
- If the above command is not compatible, please use the following command structure instead:
port-and-capacity-tooljet-alternative-command
- If you encounter any migration issues, please execute the following command. Be aware that executing this command may cause the revision to break. However, modifying the command back to `npm, run, start:prod` will successfully reboot the instance:
port-and-capacity-tooljet-migration-fix-command
4. Under environmental variables, please add the below ToolJet application variables. You can use these variables in the container 1: tooljet-app | **Environment Variable** | **Value** | |-----------------------------|-------------------------------| | `LOCKBOX_MASTER_KEY` | `` | | `SECRET_KEY_BASE` | `` | | `PG_USER` | `postgres` | | `PG_HOST` | `` | | `PG_PASS` | `` | | `PG_DB` | `tooljet_production` | | `TOOLJET_DB` | `tooljet_db` | | `TOOLJET_DB_USER` | `postgres` | | `TOOLJET_DB_HOST` | `` | | `TOOLJET_DB_PASS` | `` | | `PGRST_HOST` | `localhost:3001` | | `PGRST_JWT_SECRET` | `` | | `REDIS_HOST` | `localhost` | | `REDIS_PORT` | `6379` | | `REDIS_USER` | `default` | | `TOOLJET_HOST` | `` | **Note:** These environment variables are in general and might change in the future. You can also refer env variable [**here**](/docs/setup/env-vars). Update `TOOLJET_HOST` environment variable if you want to use the default url assigned with Cloud run after the initial deploy. :::tip If you are using [Public IP](https://cloud.google.com/sql/docs/postgres/connect-run) for Cloud SQL, then database host connection (value for `PG_HOST`) needs to be set using unix socket format, `/cloudsql/`. ::: 5. Please go to the connection tab. Under the Cloud SQL instance please select the PostgreSQL database which you have set-up.
cloud-SQL-tooljet
## Deploy 2nd container: Postgrest Check for the option **ADD-CONTAINER**.
add-container
1. For the Postgrest container image `postgrest/postgrest:v12.2.0`. **Note:** v12.2.0 is recommended for Postgrest.
postgrest-container
2. You can add the following environment variables in the **variables and secrets of postgrest container**, for the postgrest container to communicate to the **tooljet-app**. | **Environment Variable** | **Value** | | ------------------------ | ----------------------------------------------------------- | | `PGRST_DB_PRE_CONFIG` | `postgrest.pre_config` | | `PGRST_JWT_SECRET` | `` | | `PGRST_DB_URI` | `postgres://:password@/` | | `PGRST_SERVER_PORT` | `3001` |
postgrest-environment-variables
## Deploy 3rd container: Redis Check for the option **ADD-CONTAINER** and create another container for Redis. For the Redis container we recommend using image `redis:6.2`
redis-container
Click on deploy once the above parameters are set. :::info Once the Service is created and live, to make the Cloud Service URL public. Please follow the steps [**here**](https://cloud.google.com/run/docs/securing/managing-access) to make the service public. ::: ## Upgrading to the Latest LTS Version New LTS versions are released every 3-5 months with an end-of-life of 18 months. To check the latest LTS version, visit the [ToolJet Docker Hub](https://hub.docker.com/r/tooljet/tooljet/tags) page. The LTS tags follow a naming convention with the prefix `LTS-` followed by the version number, for example `tooljet/tooljet:ee-lts-latest`. 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 LTS Version: - It is crucial to perform a **comprehensive backup of your database** before starting the upgrade process to prevent data loss. - Users on versions earlier than **v2.23.0-ee2.10.2** must first upgrade to this version before proceeding to the LTS version. _If you have any questions feel free to join our [Slack Community](https://join.slack.com/t/tooljet/shared_invite/zt-2rk4w42t0-ZV_KJcWU9VL1BBEjnSHLCA) or send us an email at hello@tooljet.com._