Joe bot is hosted and developed on GitLab.com. Why? GitLab Inc. is our (Postgres.ai) long-term client and an early adopter (see GitLab Development Docs). GitLab has an open-source version. Last but not least: GitLab uses PostgreSQL.
However, nowadays, not many open-source projects are hosted at GitLab.com unfortunately. ⭐️ Please support the project by giving a star on GitLab! It's on the main page of the Database Lab Engine repository, in the upper right corner:
Step 1. Requirements
- Set up Database Lab Engine (e.g., running on address https://dblab.domain.com) before configuring Joe Bot
Make sure the address used in
accessHostis accessible from where you are going to run Joe Bot. :::
- Prepare any Linux machine with Docker. See the official documentation on how to install Docker on Linux
Step 2. Configure communication channels
There are two available types of communication with Joe:
- Web UI powered by Postgres.ai Console
You can use both of them in parallel. If you can develop in Go language, feel free to implement more types of communication: see communication channels issues.
We need to define where to store the configuration file. We will use
Then, configure ways of communication with Joe.
Step 2a. Set up Joe in Postgres.ai Console ("Web UI")
If you don't need Web UI and prefer working with Joe only in messengers (such as Slack), comment out
channelMapping: communicationTypes: webui subsection in Jog config, and proceed to the next step.
Before configuring Web UI make sure you have a Postgres.ai account.
If you don't have a Postgres.ai account yet, see the guide on how to start working with Postgres.ai Console.
To configure Web UI:
First, get your
PLATFORM_TOKEN. This token lets Joe Bot talk to Postgres.ai Platform to enable Web UI chat window, save the history of commands, and visualize query plans. In Postgres.ai Console, switch to proper organization and open the
Access Tokenspage. Save it to Joe config (
Then, go to the
Joe instancespage in the
SQL Optimizationsidebar section.
Choose a project from the dropdown menu and press the
Signing secret. Put it in the configuration file (
channelMapping: webui: <your channel name>: credentials: signingSecret). We will add and verify the URL on the last step, so do not close the page.
Step 2b. Set up Joe bot in Slack
If you need to work with Joe bot in Slack, uncomment
channelMapping: communicationTypes: slack subsection in Joe config, and follow these instructions.
Configure a new Slack App in order to use Joe in Slack and add the app to your team Workspace. Joe Bot should be available with public URL calls from Slack.
Create "#db-lab" channel in your Slack Workspace (You can use another channel name).
- Use "Joe Bot" as App Name and select a proper team Workspace.
Grant permissions on the "OAuth & Permissions" page for the following "Scopes/Bot Token Scopes":
Go to the "App Home" page and edit "App Display Name".
- Use "Joe Bot" as Display Name and "joe-bot" as the default username.
Enable Incoming Webhooks Feature.
Go to the "OAuth & Permissions" page and press "Install App to Workspace".
Allow access to your Workspace with requested permissions.
You will get
Bot User OAuth Access Tokenwhich is required to run the Joe app (use as
Go to the "Basic Information" page to get
Signing Secretfrom the "App Credentials" section (use as
Now we have all tokens and ready to run Joe Bot.
Step 3. Run Joe Bot container
Launch Joe Bot container which immediately connects to the Database Lab instance(s) you've specified in the config file.sudo docker run \--name joe_bot \--publish 2400:2400 \--restart=on-failure \--volume ~/.dblab/joe.yml:/home/config/config.yml \--detach \postgresai/joe:latest
To observe Joe logs use:sudo docker logs -f joe_bot
Need you to reconfigure or upgrade, you can stop and remove the container any time using
sudo docker stop joe_botand
sudo docker rm joe_botand then launching it again as described above.
Make a publicly accessible HTTP(S) server port specified in the configuration to receive requests from communication channels Request URL (e.g., http://184.108.40.206:2400, https://joe.dev.domain.com).
Instead of working using insecure HTTP, you can set up NGINX with SSL enabled and open port 443, similarly as described in "Secure Database Lab Engine".
Step 4. Verify the configuration
Step 4a. Finish the Web UI configuration
Return to the page of Joe configuration in the Console, enter the URL with the specific path
/webui/. For example,
Verifybutton to check connection and
Addthe instance after the verification is passed.
Choose the created instance and send a command.
Step 4b. Finish the Slack configuration
Enable Event Subscriptions Feature.
- Go to the "Event Subscriptions" page.
- Specify Request URL adding the specific path,
https://joe.dev.domain.com/slack/). URL will be verified by Slack API.
- In the "Subscribe to Bot Events" dropdown-tab add
- Press "Save Changes".
Invite "Joe Bot" to "#db-lab" channel.
Send a command to the #db-lab channel. For example,
See available configuration options here.
Reach out to our team, we'll be happy to help! Use the Intercom widget located at the right bottom corner.