{
  "schema_version": 1,
  "generated_at": "2026-10-23T00:00:00.000Z",
  "canonical_url": "https://openlogs.fyi/tools/apache-superset",
  "slug": "apache-superset",
  "name": "Apache Superset",
  "tagline": "Data exploration and dashboard application that connects to SQL databases.",
  "replaces": {
    "summary": "Paid business intelligence services, such as Tableau.",
    "products": [
      {
        "slug": "tableau",
        "name": "Tableau",
        "vendor": "Salesforce",
        "url": "https://openlogs.fyi/alternatives/tableau"
      }
    ]
  },
  "stack": [
    {
      "kind": "language",
      "name": "Python"
    },
    {
      "kind": "database",
      "name": "Redis"
    },
    {
      "kind": "database",
      "name": "PostgreSQL"
    }
  ],
  "deployment_methods": [
    "docker_compose"
  ],
  "requirements": {
    "min_ram_mb": null,
    "min_cpu_cores": null,
    "source_url": null
  },
  "license": {
    "spdx": "Apache-2.0",
    "class": "osi",
    "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/LICENSE.txt"
  },
  "business_model": {
    "value": "unknown",
    "notes": "The README at the pinned commit does not state a business model, so it stays unknown.",
    "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/README.md",
    "checked_at": "2026-10-22"
  },
  "difficulty": {
    "value": "hard",
    "reason": "6 services (2 database or broker: redis, postgres), 5 volume mounts, 1 env value to set, no elevated host access. Heuristic score 8 of 11: hard. A source checkout is needed, so the rating is at least medium."
  },
  "repository": {
    "owner": "apache",
    "name": "superset",
    "url": "https://github.com/apache/superset"
  },
  "compose_check": {
    "status": "config_ok",
    "validated_at": "2026-10-22",
    "summary": "config_ok on 2026-10-22"
  },
  "recipe": {
    "version": 1,
    "source_path": "docker-compose-image-tag.yml",
    "source_repo": "apache/superset",
    "source_commit_sha": "47300cf4c2f13aa3a4bef6c7f349f58397de0035",
    "source_kind": "app_repo",
    "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docker-compose-image-tag.yml"
  },
  "install_steps": [
    {
      "order": 1,
      "kind": "prerequisite",
      "language": "text",
      "label": "Docker with the Compose plugin and git",
      "body": "A host with Docker, the Docker Compose plugin and git. This entry needs a checkout of the project repository.",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docs/admin_docs/installation/docker-compose.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 2,
      "kind": "shell",
      "language": "bash",
      "label": "Get the source at commit 47300cf",
      "body": "git init superset\ncd superset\ngit remote add origin https://github.com/apache/superset.git\ngit sparse-checkout init --cone\ngit sparse-checkout set docker\ngit fetch --depth 1 --filter=blob:none origin 47300cf4c2f13aa3a4bef6c7f349f58397de0035\ngit checkout FETCH_HEAD",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docs/admin_docs/installation/docker-compose.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 3,
      "kind": "compose",
      "language": "yaml",
      "label": "The compose file in the checkout: docker-compose-image-tag.yml (shown here for reading)",
      "body": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n# -----------------------------------------------------------------------\n# We don't support docker compose for production environments.\n# If you choose to use this type of deployment make sure to\n# create you own docker environment file (docker/.env) with your own\n# unique random secure passwords and SECRET_KEY.\n#\n# For verbose logging during development:\n# - Set SUPERSET_LOG_LEVEL=debug in docker/.env-local for detailed Superset logs\n# -----------------------------------------------------------------------\nx-superset-image: &superset-image apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest}\nx-superset-volumes:\n  &superset-volumes # /app/pythonpath_docker will be appended to the PYTHONPATH in the final container\n  - ./docker:/app/docker\n  - superset_home:/app/superset_home\nx-superset-environment: &superset-environment\n  # Tagged images must use their bundled packages rather than host bind mounts.\n  DEV_MODE: \"false\"\n\nservices:\n  redis:\n    image: redis:7\n    container_name: superset_cache\n    restart: unless-stopped\n    volumes:\n      - redis:/data\n\n  db:\n    env_file:\n      - path: docker/.env # default\n        required: true\n      - path: docker/.env-local # optional override\n        required: false\n    image: postgres:17\n    container_name: superset_db\n    restart: unless-stopped\n    volumes:\n      - db_home:/var/lib/postgresql/data\n      - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d\n\n  superset:\n    env_file:\n      - path: docker/.env # default\n        required: true\n      - path: docker/.env-local # optional override\n        required: false\n    environment: *superset-environment\n    image: *superset-image\n    container_name: superset_app\n    command: [\"/app/docker/docker-bootstrap.sh\", \"app-gunicorn\"]\n    user: \"root\"\n    restart: unless-stopped\n    ports:\n      - 8088:8088\n    depends_on:\n      superset-init:\n        condition: service_completed_successfully\n    volumes: *superset-volumes\n\n  superset-init:\n    image: *superset-image\n    container_name: superset_init\n    command: [\"/app/docker/docker-init.sh\"]\n    env_file:\n      - path: docker/.env # default\n        required: true\n      - path: docker/.env-local # optional override\n        required: false\n    environment: *superset-environment\n    depends_on:\n      db:\n        condition: service_started\n      redis:\n        condition: service_started\n    user: \"root\"\n    volumes: *superset-volumes\n    healthcheck:\n      disable: true\n\n  superset-worker:\n    image: *superset-image\n    container_name: superset_worker\n    command: [\"/app/docker/docker-bootstrap.sh\", \"worker\"]\n    env_file:\n      - path: docker/.env # default\n        required: true\n      - path: docker/.env-local # optional override\n        required: false\n    environment: *superset-environment\n    restart: unless-stopped\n    depends_on:\n      superset-init:\n        condition: service_completed_successfully\n    user: \"root\"\n    volumes: *superset-volumes\n    healthcheck:\n      test:\n        [\n          \"CMD-SHELL\",\n          \"celery -A superset.tasks.celery_app:app inspect ping -d celery@$$HOSTNAME\",\n        ]\n\n  superset-worker-beat:\n    image: *superset-image\n    container_name: superset_worker_beat\n    command: [\"/app/docker/docker-bootstrap.sh\", \"beat\"]\n    env_file:\n      - path: docker/.env # default\n        required: true\n      - path: docker/.env-local # optional override\n        required: false\n    environment: *superset-environment\n    restart: unless-stopped\n    depends_on:\n      superset-init:\n        condition: service_completed_successfully\n    user: \"root\"\n    volumes: *superset-volumes\n    healthcheck:\n      disable: true\n\nvolumes:\n  superset_home:\n    external: false\n  db_home:\n    external: false\n  redis:\n    external: false\n",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docker-compose-image-tag.yml",
      "validation_status": "config_ok"
    },
    {
      "order": 4,
      "kind": "note",
      "language": "text",
      "label": "What the compose file check ran with",
      "body": "The compose file check ran in a checkout of apache/superset at 47300cf4c2f13aa3a4bef6c7f349f58397de0035 (a sparse checkout: the top-level files and the folder docker). The Docker Compose guide tells the reader to shallow-clone the repository and start an official release with docker compose -f docker-compose-image-tag.yml up.",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docs/admin_docs/installation/docker-compose.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 5,
      "kind": "shell",
      "language": "bash",
      "label": "Start it",
      "body": "docker compose -f docker-compose-image-tag.yml up -d",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docs/admin_docs/installation/docker-compose.mdx",
      "validation_status": "unvalidated"
    },
    {
      "order": 6,
      "kind": "verify",
      "language": "text",
      "label": "Open the app",
      "body": "Open http://localhost:8088. The compose file publishes host port 8088 for the superset service. The docs say to visit this address in a web browser.",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docker-compose-image-tag.yml",
      "validation_status": "unvalidated"
    }
  ],
  "notes": [
    {
      "kind": "gotcha",
      "title": "Some images use the latest tag or no tag",
      "body": "Images without a pinned version: superset: apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest}, superset-init: apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest}, superset-worker: apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest}, superset-worker-beat: apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest}. A later pull can get a different version.",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docker-compose-image-tag.yml",
      "checked_at": "2026-10-22"
    },
    {
      "kind": "gotcha",
      "title": "The compose file publishes host ports",
      "body": "Host ports: 8088 (superset). A port without a host address listens on all host network interfaces.",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docker-compose-image-tag.yml",
      "checked_at": "2026-10-22"
    },
    {
      "kind": "gotcha",
      "title": "The compose file mounts host folders",
      "body": "Host paths mounted into containers: ./docker/docker-entrypoint-initdb.d at /docker-entrypoint-initdb.d (db), ./docker at /app/docker (superset), ./docker at /app/docker (superset-init), ./docker at /app/docker (superset-worker), ./docker at /app/docker (superset-worker-beat).",
      "source_url": "https://github.com/apache/superset/blob/47300cf4c2f13aa3a4bef6c7f349f58397de0035/docker-compose-image-tag.yml",
      "checked_at": "2026-10-22"
    }
  ],
  "signals": {
    "captured_at": "2026-10-22",
    "stars": 75252,
    "forks": 18507,
    "open_issues": 614,
    "last_push": "2026-10-22",
    "days_since_push": 0,
    "latest_release": "6.1.0",
    "latest_release_date": "2026-05-13",
    "days_since_release": 162
  },
  "links": {
    "html": "https://openlogs.fyi/tools/apache-superset",
    "markdown": "https://openlogs.fyi/tools/apache-superset.md",
    "json": "https://openlogs.fyi/tools/apache-superset.json"
  },
  "updated_at": "2026-10-22"
}
