(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{s0aW:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return c})),n.d(t,"default",(function(){return p}));var o=n("wx14"),a=n("zLVn"),s=(n("q1tI"),n("7ljp")),r=n("hhGP"),c=(n("qKvR"),{});void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!c.hasOwnProperty("__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/installation/index.mdx"}});var l={_frontmatter:c},i=r.a;function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(s.b)(i,Object(o.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(s.b)("h2",{id:"installing-superset-locally-using-docker-compose"},"Installing Superset Locally Using Docker Compose"),Object(s.b)("p",null,"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."),Object(s.b)("h3",{id:"1-install-a-docker-engine-and-docker-compose"},"1. Install a Docker Engine and Docker Compose"),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Mac OSX")),Object(s.b)("p",null,Object(s.b)("a",{href:"https://docs.docker.com/docker-for-mac/install/",parentName:"p"},"Install Docker for Mac"),", which includes the Docker\nengine and a recent version of ",Object(s.b)("inlineCode",{parentName:"p"},"docker-compose")," out of the box."),Object(s.b)("p",null,'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.'),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Linux")),Object(s.b)("p",null,Object(s.b)("a",{href:"https://docs.docker.com/engine/install/",parentName:"p"},"Install Docker on Linux")," by following Docker’s\ninstructions for whichever flavor of Linux suits you. Because ",Object(s.b)("inlineCode",{parentName:"p"},"docker-compose")," is not installed as\npart of the base Docker installation on Linux, once you have a working engine, follow the\n",Object(s.b)("a",{href:"https://docs.docker.com/compose/install/",parentName:"p"},"docker-compose installation instructions")," for Linux."),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Windows")),Object(s.b)("p",null,"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",Object(s.b)("a",{href:"https://www.virtualbox.org/",parentName:"p"},"VirtualBox")," 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."),Object(s.b)("h3",{id:"2-clone-supersets-github-repository"},"2. Clone Superset's Github repository"),Object(s.b)("p",null,Object(s.b)("a",{href:"https://github.com/apache/incubator-superset",parentName:"p"},"Clone Superset's repo")," in your terminal with the\nfollowing command:"),Object(s.b)("pre",null,Object(s.b)("code",{className:"language-bash",parentName:"pre"},"$ git clone https://github.com/apache/incubator-superset.git\n")),Object(s.b)("p",null,"Once that command completes successfully, you should see a new ",Object(s.b)("inlineCode",{parentName:"p"},"incubator-superset")," folder in your\ncurrent directory."),Object(s.b)("h3",{id:"3-launch-superset-through-docker-compose"},"3. Launch Superset Through Docker Compose"),Object(s.b)("p",null,"Navigate to the folder you created in step 1:"),Object(s.b)("pre",null,Object(s.b)("code",{className:"language-bash",parentName:"pre"},"$ cd incubator-superset\n")),Object(s.b)("p",null,"Then, run the following command:"),Object(s.b)("pre",null,Object(s.b)("code",{className:"language-bash",parentName:"pre"},"$ docker-compose up\n")),Object(s.b)("p",null,"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!"),Object(s.b)("h3",{id:"4-login-to-superset"},"4. Login to Superset"),Object(s.b)("p",null,"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 ",Object(s.b)("inlineCode",{parentName:"p"},"http://localhost:8088"),". Note that many browsers now default to ",Object(s.b)("inlineCode",{parentName:"p"},"https")," - if\nyours is one of them, please make sure it uses ",Object(s.b)("inlineCode",{parentName:"p"},"http"),"."),Object(s.b)("p",null,"Log in with the default username and password:"),Object(s.b)("pre",null,Object(s.b)("code",{className:"language-bash",parentName:"pre"},"username: admin\n")),Object(s.b)("pre",null,Object(s.b)("code",{className:"language-bash",parentName:"pre"},"password: admin\n")),Object(s.b)("p",null,"Congrats! You have successfully installed Superset! Click 'Next' to learn how to connect a database\ndriver."))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/installation/index.mdx"}}),p.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-installation-index-mdx-ff6b45ce60bde4ee9d6d.js.map