{"version":3,"sources":["webpack:///./src/pages/docs/installation/index.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"wPAMaA,G,UAAe,S,uNAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,oDADR,oDAGA,qOAGA,iBAAQ,CACN,GAAM,gDADR,iDAGA,qBAAG,qBAAY,CACX,WAAc,KADf,YAGH,qBAAG,gBAAO,CACN,KAAQ,kDACR,WAAc,KAFf,0BAAH,+DAME,yBAAgB,CACd,WAAc,KADhB,kBANF,oBAUA,+PAGA,qBAAG,qBAAY,CACX,WAAc,KADf,UAGH,qBAAG,gBAAO,CACN,KAAQ,0CACR,WAAc,KAFf,2BAAH,yFAME,yBAAgB,CACd,WAAc,KADhB,kBANF,oHAYE,gBAAO,CACL,KAAQ,2CACR,WAAc,KAFhB,4CAZF,eAiBA,qBAAG,qBAAY,CACX,WAAc,KADf,YAGH,8LAGE,gBAAO,CACL,KAAQ,8BACR,WAAc,KAFhB,cAHF,8RAWA,iBAAQ,CACN,GAAM,uCADR,yCAGA,qBAAG,gBAAO,CACN,KAAQ,+CACR,WAAc,KAFf,yBAAH,kDAMA,uBAAK,mBAAU,CACX,UAAa,gBACb,WAAc,OAFb,mEAKL,uFACE,yBAAgB,CACd,WAAc,KADhB,sBADF,uCAMA,iBAAQ,CACN,GAAM,4CADR,6CAGA,sEACA,uBAAK,mBAAU,CACX,UAAa,gBACb,WAAc,OAFb,8BAKL,yDACA,uBAAK,mBAAU,CACX,UAAa,gBACb,WAAc,OAFb,0BAKL,mNAEA,iBAAQ,CACN,GAAM,uBADR,wBAGA,qPAGE,yBAAgB,CACd,WAAc,KADhB,yBAHF,4CAOE,yBAAgB,CACd,WAAc,KADhB,SAPF,yDAYE,yBAAgB,CACd,WAAc,KADhB,QAZF,KAgBA,uEACA,uBAAK,mBAAU,CACX,UAAa,gBACb,WAAc,OAFb,sBAKL,uBAAK,mBAAU,CACX,UAAa,gBACb,WAAc,OAFb,sBAKL,2I,qNAMJH,EAAWI,gBAAiB","file":"component---src-pages-docs-installation-index-mdx-ff6b45ce60bde4ee9d6d.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/incubator-superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"installing-superset-locally-using-docker-compose\"\n    }}>{`Installing Superset Locally Using Docker Compose`}</h2>\n    <p>{`The fastest way to try Superset locally is using Docker and Docker Compose on a Linux or Mac OSX\ncomputer. Superset does not have official support for Windows, so we have provided a VM workaround\nbelow.`}</p>\n    <h3 {...{\n      \"id\": \"1-install-a-docker-engine-and-docker-compose\"\n    }}>{`1. Install a Docker Engine and Docker Compose`}</h3>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Mac OSX`}</strong></p>\n    <p><a {...{\n        \"href\": \"https://docs.docker.com/docker-for-mac/install/\",\n        \"parentName\": \"p\"\n      }}>{`Install Docker for Mac`}</a>\n      {`, which includes the Docker\nengine and a recent version of `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`docker-compose`}</inlineCode>\n      {` out of the box.`}</p>\n    <p>{`Once you have Docker for Mac installed, open up the preferences pane for Docker, go to the\n\"Resources\" section and increase the allocated memory to 6GB. With only the 2GB of RAM allocated by\ndefault, Superset will fail to start.`}</p>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Linux`}</strong></p>\n    <p><a {...{\n        \"href\": \"https://docs.docker.com/engine/install/\",\n        \"parentName\": \"p\"\n      }}>{`Install Docker on Linux`}</a>\n      {` by following Docker’s\ninstructions for whichever flavor of Linux suits you. Because `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`docker-compose`}</inlineCode>\n      {` is not installed as\npart of the base Docker installation on Linux, once you have a working engine, follow the\n`}\n      <a {...{\n        \"href\": \"https://docs.docker.com/compose/install/\",\n        \"parentName\": \"p\"\n      }}>{`docker-compose installation instructions`}</a>\n      {` for Linux.`}</p>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Windows`}</strong></p>\n    <p>{`Superset is not officially supported on Windows unfortunately. The best option for Windows users to\ntry out Superset locally is to install an Ubuntu Desktop VM via\n`}\n      <a {...{\n        \"href\": \"https://www.virtualbox.org/\",\n        \"parentName\": \"p\"\n      }}>{`VirtualBox`}</a>\n      {` and proceed with the Docker on Linux instructions inside\nof that VM. We recommend assigning at least 8GB of RAM to the virtual machine as well as\nprovisioning a hard drive of at least 40GB, so that there will be enough space for both the OS and\nall of the required dependencies.`}</p>\n    <h3 {...{\n      \"id\": \"2-clone-supersets-github-repository\"\n    }}>{`2. Clone Superset's Github repository`}</h3>\n    <p><a {...{\n        \"href\": \"https://github.com/apache/incubator-superset\",\n        \"parentName\": \"p\"\n      }}>{`Clone Superset's repo`}</a>\n      {` in your terminal with the\nfollowing command:`}</p>\n    <pre><code {...{\n        \"className\": \"language-bash\",\n        \"parentName\": \"pre\"\n      }}>{`$ git clone https://github.com/apache/incubator-superset.git\n`}</code></pre>\n    <p>{`Once that command completes successfully, you should see a new `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`incubator-superset`}</inlineCode>\n      {` folder in your\ncurrent directory.`}</p>\n    <h3 {...{\n      \"id\": \"3-launch-superset-through-docker-compose\"\n    }}>{`3. Launch Superset Through Docker Compose`}</h3>\n    <p>{`Navigate to the folder you created in step 1:`}</p>\n    <pre><code {...{\n        \"className\": \"language-bash\",\n        \"parentName\": \"pre\"\n      }}>{`$ cd incubator-superset\n`}</code></pre>\n    <p>{`Then, run the following command:`}</p>\n    <pre><code {...{\n        \"className\": \"language-bash\",\n        \"parentName\": \"pre\"\n      }}>{`$ docker-compose up\n`}</code></pre>\n    <p>{`You should see a wall of logging output from the containers being launched on your machine. Once\nthis output slows, you should have a running instance of Superset on your local machine!`}</p>\n    <h3 {...{\n      \"id\": \"4-login-to-superset\"\n    }}>{`4. Login to Superset`}</h3>\n    <p>{`Your local Superset instance also includes a Postgres server to store your data and is already\npre-loaded with some example datasets that ship with Superset. You can access Superset now via your\nweb browser by visiting `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`http://localhost:8088`}</inlineCode>\n      {`. Note that many browsers now default to `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`https`}</inlineCode>\n      {` - if\nyours is one of them, please make sure it uses `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`http`}</inlineCode>\n      {`.`}</p>\n    <p>{`Log in with the default username and password:`}</p>\n    <pre><code {...{\n        \"className\": \"language-bash\",\n        \"parentName\": \"pre\"\n      }}>{`username: admin\n`}</code></pre>\n    <pre><code {...{\n        \"className\": \"language-bash\",\n        \"parentName\": \"pre\"\n      }}>{`password: admin\n`}</code></pre>\n    <p>{`Congrats! You have successfully installed Superset! Click 'Next' to learn how to connect a database\ndriver.`}</p>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}