A Docker Compose script to handle a great variety of data analysis, visualization, and mapping needs.
The goal of this repository is not to create tools, but to maintain a single docker compose script and docker images (if needed) for a collection of tools to accomplish the goals of the various users of such a system.
This stack of tools aims to bring big enterprise features like what Esri or Tableau provides, but in an open-source way.
These desires were born out of everyday operations in my own personal experience.
- Database (PostGIS)
- ETL Tools (n8n.io + PGFutter)
- Data Science and Analysis Tools (Jupyter Notebook Server)
- Visualization Tools (Chronograf for TimeSeries, Grafana for Dashboard/Visualization)
- Geospatial Tools (GeoServer + Kepler.gl)
- Dashboard (Grafana or ???)
- Communication tools (TBD)
- traefik:v1.7
- kartoza/postgis:12.0
- kartoza/pg-backup:12.0
- dpage/pgadmin4
- oscarfonts/geoserver
- crazycapivara/kepler.gl
This setup works using Traefik host rules. That means you'll need to point several subdomains at your docker host's IP.
- http(s)://ROOT-URL:8080/ - Traefik dashboard
- http(s)://geoserver.ROOT-URL/ - Geoserver GIS platform
- http(s)://pgadmin.ROOT-URL/ - PGAdmin 4 instance
- http(s)://keplergl.ROOT-URL/ - Kepler.gl
See the .env-sample file to get everything off the ground.
Once it's running, here are a few URLs you'll want:
These are a few contrived and not-so-contrived reasons you may want to use these tools.
- Your small business is growing and needs insights. Use this tool to import exported CSVs, turn them into visualizations, map your customers, and project profits.
- You are an local independent political candidate, who needs to knock doors, poll voters, communicate to supporters, and create a dashboard around your progress.
- You are a data scientist who needs to play with maps and share them in an easy and standard way for other researchers to use your work fully, while still allowing access to the public.
- Your organization is looking to cut costs and you're the one who needs to pull all these tools together to continue smooth operations.
- As a system admin, I want a single point of entry for all service endpoints (I don't want to deal with ports)
- As a system admin, I want a single point of entry over SSL, managed as automatically as possible (Let's Encrypt)
- As a system admin, I want to know the entire suite of tools are being backed up regularly to the cloud
- As a system admin, I want to easily restore the entire stack
- As a system admin, I want to easily selectively restore a single part of the stack
- As a system admin, I want to easily deploy this on a single host
- As a system admin, I want to easily deploy this on a swarm
- As a system admin, I want the system to be deployed with sane defaults and warnings in place
- As a system admin, it would be nice to have an interactive configuration generator (or at least a heavily commented file)
- As a system admin, it would be nice to be able to swap individual components of the stack with equivalent competitors
- As a data analyst, I want to be able to upload a CSV and create a reasonably optimized database table
- As a data analyst, I want to be able to query data available to me quickly
- As a data analyst, I want to be able to visualize and share my analysis quickly
- As a data analyst, I want to be able to run complex modeling and predictions and publish them
- As a data analyst, I want to be able to store and visualize time series data quickly
- As a data analyst, I want to be able to publish my work as a shareable dashboard
- As a data analyst, I want a robust suite of ETL tools to import large datasets from different sources
- As a GIS analyst, I want to have access to popular geospatial formats for desktop tools
- As a GIS analyst, I want to be able to import layers from other services easily
- As a GIS analyst, I want to be able to join data and perform complex formatting for layers in my GIS application
- As a GIS analyst, I want to be able to share my maps online with others easily
- As a GIS analyst, I want to be able to provide data with addresses and have them geocoded automatically
- As a GIS analyst, I want to be able to provide data with latitude and longitude fields and have them mapped automatically
- As a GIS analyst, I want to be able to provide symbols on a map that are complex, categorical, and/or data driven
- As a business user, I want to send messaging to interested parties
- As a business user, I want to collect responses from survey data
- As a business user, I want to receive alerts when thresholds are hit on timeseries data I care about.
- As a business user, I want to view a dashboard of all of the analysts work, and explore data behind the dashboard more deeply