Deploy Redash


Redash is an open-source self-hosted platform for collaborative data querying and visualization. It is quick to set up and it works with many popular data sources including Redshift, Google BigQuery, Google Spreadsheets, PostgreSQL, MySQL, and ElasticSearch.

The main features of Redash include:

  • Browser-based and REST API: Redash runs fully in your browser, with a shareable URL for every view and a well-defined API.
  • Query editor: You can quickly compose SQL and NoSQL queries with a schema browser and utilize autocomplete. You can also create snippets and reuse them.
  • Visualization and dashboards: Redash allows you to create presentable visualizations with drag and drop. You can group your visuals into dashboards that can automatically update at regular intervals of your choosing.
  • Alerts: You can define trigger conditions and be alerted instantly when your data changes.

Redash Query Screenshot

You can host your Redash instance on Render in just a few minutes. Once it’s live, you will be able to connect to your data sources, build dashboards to visualize data, and share them with your team.

Table of Contents

One-Click Deploy

Click Deploy to Render below to set up Redash on Render.

Deploy to Render

Execute the statement below in the Render Shell for your Redash service. This will initialize your database:

$ render-redash create_db

That’s it! Visit your service available on your .onrender.com URL, fill in the basic information about your user account, and start using Redash on Render!

Manual Deployment

Create a Database

Create a new managed PostgreSQL instance on Render. The database should be up in a few minutes; wait for it to go live before moving to the next step.

Note your database internal connection string; you will need it later.

Create a Redis Instance

Create a new private Redis instance using the Redis deployment guide and make note of the service name and port.

Create an Environment Group

Create a new Environment Group named redash-shared and add the following environment variables to it:

KeyValue
REDASH_COOKIE_SECRETClick Generate to get a secure random value
REDASH_LOG_LEVELINFO

Deploy the Redash Web Service

  1. Fork render-examples/redash on GitHub or click Use this template. Make sure to give Render’s GitHub app permission to access your new repository
  2. Start creating a new Web Service on Render using your new repo.
  3. Pick a name for your Redash instance and make sure that the Environment is set to Docker.
  4. Select at least the Standard plan. The Redash web server may exhaust the memory limit on starter plans.
  5. Under Advanced, set the Docker Command to render-redash server.
  6. Add the following environment variables under Advanced.

    KeyValue
    REDASH_DATABASE_URLyour database internal connection string
    REDIS_HOSTPORTRedis hostname and port, for example: redis-123c:10000
  7. Click Create Web Service to deploy your service.
  8. In your web service, under the Environment tab, link your shared configuration environment group with this service.

At this point, your service is likely going to fail while connecting to the database and might report logs about missing tables in the database. This is expected. We will create these tables in the next step.

Create Redash Background Workers

Redash executes queries and other processing tasks outside its web server, using background services. For this, you have to create two Render Background Workers: a scheduler and a worker.

Scheduler

  1. Create a new Background Worker on Render and select the same repository you used for the web service. Make sure the Environment is set to Docker and pick a name for your Redash scheduler, e.g. redash-scheduler.
  2. Under Advanced, set the Docker Command to render-redash scheduler.
  3. Add the following environment variables under Advanced:

    KeyValue
    REDASH_DATABASE_URLyour database internal connection string
    REDIS_HOSTPORTRedis hostname and port, for example: redis-123c:10000
    QUEUEScelery
    WORKERS_COUNT1
  4. Click Create Background Worker to deploy your scheduler.
  5. In your scheduler, under Environment, link your shared environment group with this service.

Worker

  1. Now, create another Background Worker on Render and select the same repository you used for the web service and the scheduler.
  2. Pick a name for your Redash worker, e.g. redash-worker, and make sure that the Environment is set to Docker.
  3. Under Advanced, set the Docker Command to render-redash worker.
  4. Add the following environment variables under Advanced:

    KeyValue
    REDASH_DATABASE_URLyour database internal connection string
    REDIS_HOSTPORTRedis hostname and port, for example: redis-123c:10000
    QUEUESqueries,scheduled_queries,schemas
  5. Click Create Background Worker to deploy your worker.
  6. In your worker, under Environment, link your shared environment group with this service.

Initialize the Database

To create and prefill the database tables necessary for Redash to operate, you will have to execute a special one-time command. Go to the Shell tab of your Redash web service and run the following command:

$ render-redash create_db

That’s it! After about a minute, the script will finish running, and your Redash installation will be available on your .onrender.com URL. Go to https://your-subdomain.onrender.com, fill in the basic information about your user account, and start using Redash on Render!

Redash Initial Setup

Optional: Setting up Mailing

To allow Redash to send emails (user invites, password resets, alert triggers, and more), you will need to configure it with the mail server you use. Our one-click deploy has a template for this step that is commented out in its render.yaml file.

  1. Create a new Environment Group named e.g. redash-mailing and add the relevant environment variables (not all may be required for your use-case):

    KeyValue
    REDASH_MAIL_SERVERSMTP server address
    REDASH_MAIL_PORTSMTP server port, default: 25
    REDASH_MAIL_USE_TLSdefault: false
    REDASH_MAIL_USE_SSLdefault: false
    REDASH_MAIL_USERNAMEdefault: None
    REDASH_MAIL_PASSWORDdefault: None
    REDASH_MAIL_DEFAULT_SENDERemail address to send from
  2. Link the newly created group to your Redash web service and your background workers.