Metabase is an open-source java-based software that enables users to analyse data from a range of data sources including relational databases (e.g. Postgresql, MySQL etc.), NoSql databases etc.
It can be quite helpful when one has a data science question that could easily be answered by data analysis.
By default, it stores application-specific data e.g. users, stored queries, configurations etc. on an H2 database on the same file system where it is installed.
However, it is difficult to retrieve this data once the application crushes (which it might do if you write a wrong sql query for it to run on your data). It is therefore usually better to have the application save the data in a postgreSQL database such that it recovers its original state after any crush.
Technology | Usage |
---|---|
Docker | metabase and postgres run in different Docker containers |
Docker Compose | Docker compose netwroks the different Docker containers to allow them work together as dependent services |
Metabase | SQL based Analysis and Visualization program for any database |
Postgres | A database engine that stores relational data in a persistent way |
This assumes the local machine is running on Ubuntu
-
Ensure docker is installed. If it is not installed, install it. Here are the instructions.
-
Ensure docker compose is installed on your system. If it is not installed, install it. Here are the instructions.
-
Clone this git repository
git clone https://github.com/Tinitto/compose-postgres-metabase.git
-
Enter the compose-postgres-metabase folder
cd compose-postgres-metabase
-
Convert
config/metabase_database.env.example
toconfig/metabase_database.env
. -
Update the environment variables
MB_DB_PASS
,MB_DB_HOST
,MB_ENCRYPTION_SECRET_KEY
and save.ENV MB_DB_PASS=<put_here_the_password_for_the_metabase_user> # Make sure the firewall at the database server allows connections to port 54320 ENV MB_DB_HOST=<put here the IP address for the Metabase database server e.g. 00.000.000.00> ENV MB_ENCRYPTION_SECRET_KEY=<Add a random string here as the secret>
-
Convert
config/postgres.env.example
toconfig/postgres.env
. -
Update the environment variables
POSTGRES_PASSWORD
,METABASE_PASSWORD
and save.# Add the password for the postgres user POSTGRES_PASSWORD=<put here the_password for the postgres user> # Add the password for the metabase user METABASE_PASSWORD=<put here the password for the metabase user>
-
Start the docker compose services
sudo docker-compose up -d
-
Set up your metabase instance by visiting the local metabase start URL If you are on a server, use
http://<server IP>:3000
.
Service | Port |
---|---|
Metabase | 3000 |
Postgres | 54320 |
Some of the configuration was learnt from the Beyond Jupyter talk by Joshua Gorner