Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
Self-host Apache Superset
updated Oct 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
An Apache Software Foundation data-exploration and dashboarding platform: write SQL in a browser editor or build charts without code, assemble them into dashboards, and connect to a wide range of SQL databases. It is a Python (Flask) backend with a React frontend that keeps its own state in a metadata database, and the full feature set also needs a Redis cache and Celery workers. Upstream's Docker Compose setup is for trying it out; its recommended production route is Kubernetes.
Runs on a VPS from $12/mo (Kamatera 4GB, 4 GB RAM) · prices checked Sep 2026
Our recommendation
Pick Apache Superset when you want an Apache-2.0 BI platform for people who write SQL and build charts: a browser SQL editor, a no-code chart builder, dashboards, and connections to a wide range of SQL databases. It is a Python (Flask) and React application with a metadata database, a Redis cache and Celery workers for alerts, reports and async queries; the repo's Docker Compose file starts all of them. Upstream publishes no RAM minimum; with example data skipped, the stack idled at roughly 0.9 GB on our test server, so our 2 GB floor is an estimate. If you want something quicker to stand up for a mixed team of SQL and non-SQL users, Metabase is the catalog's other BI tool.
What you need
Any VPS with at least 2048 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Apache Superset 6.1.0 — the repo's own docker-compose-image-tag.yml (app, Celery worker + beat, PostgreSQL, Redis). Upstream says this compose setup is for trying Superset and is not production-ready; its production path is Kubernetes.git clone --depth=1 --branch 6.1.0 https://github.com/apache/superset.gitcd superset# the -dev image carries the Postgres driver the compose file needs; set your own secret key and admin password (the default login is admin/admin) and skip the example dataSUPERSET_ADMIN_PASSWORD=$(openssl rand -hex 12) && echo "Superset admin password: $SUPERSET_ADMIN_PASSWORD"printf 'SUPERSET_SECRET_KEY=%s\nADMIN_PASSWORD=%s\nSUPERSET_LOAD_EXAMPLES=no\n' "$(openssl rand -base64 42)" "$SUPERSET_ADMIN_PASSWORD" > docker/.env-localTAG=6.1.0-dev docker compose -f docker-compose-image-tag.yml up -d# the init container runs migrations first → http://SERVER_IP:8088, log in as admin
Superset's own installation docs are blunt about what the Docker route is and is not:
non-negotiableUpstream says it does not support or recommend Docker Compose for production and calls the compose installation "not production-ready out of the box". The recommended production route is Kubernetes (community Helm chart); the PyPI route is the only one without containers but leaves caching, workers and beat for you to wire up. Treat our snippet as a single-server trial or small internal deployment.
non-negotiableThe repo's docker/.env ships defaults meant for development: SUPERSET_SECRET_KEY=TEST_NON_DEV_SECRET, database passwords of superset, DEV_MODE=true, SUPERSET_ENV=development, and an admin / admin login. Our snippet overrides the secret key and admin password through docker/.env-local and skips the example data (SUPERSET_LOAD_EXAMPLES=no); review the rest before exposing the port.
non-negotiableAll charts, dashboards and users live in the PostgreSQL metadata database, in a Docker volume that upstream notes is not backed up. Back it up. The default lean images lack the driver for your data warehouse and the headless browser Alerts & Reports needs; the -dev image we use bundles the Postgres driver but runs as root, which upstream says to avoid in production, so extend lean with your own image for a long-lived install.
non-negotiableThe compose file pulls images through apachesuperset.docker.scarf.sh, a Scarf gateway that collects aggregate install telemetry. Upstream documents the opt-out: change the image prefix to apache/superset and set SCARF_ANALYTICS=False. Check out the release tag that matches the image tag so the mounted docker/ scripts stay in sync with the image.