{"version":3,"sources":["webpack:///./src/pages/docs/installation/configuring.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"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","file":"component---src-pages-docs-installation-configuring-mdx-02fd1bf8439ddf68c9a3.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/max/code/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\": \"configuring-superset\"\n    }}>{`Configuring Superset`}</h2>\n    <h3 {...{\n      \"id\": \"configuration\"\n    }}>{`Configuration`}</h3>\n    <p>{`To configure your application, you need to create a file `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` and add it to your\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`PYTHONPATH`}</inlineCode>\n      {`. Here are some of the parameters you can set in that file:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`# Superset specific config\nROW_LIMIT = 5000\n\nSUPERSET_WEBSERVER_PORT = 8088\n\n# Flask App Builder configuration\n# Your App secret key\nSECRET_KEY = '\\\\2\\\\1thisismyscretkey\\\\1\\\\2\\\\e\\\\y\\\\y\\\\h'\n\n# The SQLAlchemy connection string to your database backend\n# This connection defines the path to the database that stores your\n# superset metadata (slices, connections, tables, dashboards, ...).\n# Note that the connection information to connect to the datasources\n# you want to explore are managed directly in the web UI\nSQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'\n\n# Flask-WTF flag for CSRF\nWTF_CSRF_ENABLED = True\n# Add endpoints that need to be exempt from CSRF protection\nWTF_CSRF_EXEMPT_LIST = []\n# A CSRF token that expires in 1 year\nWTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365\n\n# Set this API key to enable Mapbox visualizations\nMAPBOX_API_KEY = ''\n`}</code></pre>\n    <p>{`All the parameters and default values defined in\n`}\n      <a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/blob/master/superset/config.py\",\n        \"parentName\": \"p\"\n      }}>{`https://github.com/apache/incubator-superset/blob/master/superset/config.py`}</a>\n      {`\ncan be altered in your local `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`. Administrators will want to read through the file\nto understand what can be configured locally as well as the default values in place.`}</p>\n    <p>{`Since `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` acts as a Flask configuration module, it can be used to alter the\nsettings Flask itself, as well as Flask extensions like `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-wtf`}</inlineCode>\n      {`, `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-cache`}</inlineCode>\n      {`, `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-migrate`}</inlineCode>\n      {`,\nand `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-appbuilder`}</inlineCode>\n      {`. Flask App Builder, the web framework used by Superset, offers many\nconfiguration settings. Please consult the\n`}\n      <a {...{\n        \"href\": \"https://flask-appbuilder.readthedocs.org/en/latest/config.html\",\n        \"parentName\": \"p\"\n      }}>{`Flask App Builder Documentation`}</a>\n      {`\nfor more information on how to configure it.`}</p>\n    <p>{`Make sure to change:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`SQLALCHEMY_DATABASE_URI`}</inlineCode>\n        {`: by default it is stored at ~/.superset/superset.db`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`SECRET_KEY`}</inlineCode>\n        {`: to a long random string`}</li>\n\n    </ul>\n    <p>{`If you need to exempt endpoints from CSRF (e.g. if you are running a custom auth postback endpoint),\nyou can add the endpoints to `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`WTF_CSRF_EXEMPT_LIST`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`WTF_CSRF_EXEMPT_LIST = [‘’]\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"flask-appbuilder-permissions\"\n    }}>{`Flask AppBuilder Permissions`}</h3>\n    <p>{`By default, every time the Flask-AppBuilder (FAB) app is initialized the permissions and views are\nadded automatically to the backend and associated with the ‘Admin’ role. The issue, however, is when\nyou are running multiple concurrent workers this creates a lot of contention and race conditions\nwhen defining permissions and views.`}</p>\n    <p>{`To alleviate this issue, the automatic updating of permissions can be disabled by setting\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`FAB_UPDATE_PERMS = False`}</inlineCode>\n      {` (defaults to True).`}</p>\n    <p>{`In a production environment initialization could take on the following form:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`superset init gunicorn -w 10 … superset:app\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"running-on-a-wsgi-http-server\"\n    }}>{`Running on a WSGI HTTP Server`}</h3>\n    <p>{`While you can run Superset on NGINX or Apache, we recommend using Gunicorn in async mode. This\nenables impressive concurrency even and is fairly easy to install and configure. Please refer to the\ndocumentation of your preferred technology to set up this Flask WSGI application in a way that works\nwell in your environment. Here’s an async setup known to work well in production:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`      -w 10 \\\\\n      -k gevent \\\\\n      --timeout 120 \\\\\n      -b  0.0.0.0:6666 \\\\\n      --limit-request-line 0 \\\\\n      --limit-request-field_size 0 \\\\\n      --statsd-host localhost:8125 \\\\\n      \"superset.app:create_app()\"\n`}</code></pre>\n    <p>{`Refer to the `}\n      <a {...{\n        \"href\": \"https://docs.gunicorn.org/en/stable/design.html\",\n        \"parentName\": \"p\"\n      }}>{`Gunicorn documentation`}</a>\n      {` for more\ninformation. `}\n      <em {...{\n        \"parentName\": \"p\"\n      }}>{`Note that the development web server (`}\n        <inlineCode {...{\n          \"parentName\": \"em\"\n        }}>{`superset run`}</inlineCode>\n        {` or `}\n        <inlineCode {...{\n          \"parentName\": \"em\"\n        }}>{`flask run`}</inlineCode>\n        {`) is not intended\nfor production use.`}</em></p>\n    <p>{`If you're not using Gunicorn, you may want to disable the use of `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-compress`}</inlineCode>\n      {` by setting\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`COMPRESS_REGISTER = False`}</inlineCode>\n      {` in your `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`.`}</p>\n    <h3 {...{\n      \"id\": \"configuration-behind-a-load-balancer\"\n    }}>{`Configuration Behind a Load Balancer`}</h3>\n    <p>{`If you are running superset behind a load balancer or reverse proxy (e.g. NGINX or ELB on AWS), you\nmay need to utilize a healthcheck endpoint so that your load balancer knows if your superset\ninstance is running. This is provided at `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`/health`}</inlineCode>\n      {` which will return a 200 response containing “OK”\nif the the webserver is running.`}</p>\n    <p>{`If the load balancer is inserting `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`X-Forwarded-For/X-Forwarded-Proto`}</inlineCode>\n      {` headers, you should set\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`ENABLE_PROXY_FIX = True`}</inlineCode>\n      {` in the superset config file (`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`) to extract and use the\nheaders.`}</p>\n    <p>{`In case the reverse proxy is used for providing SSL encryption, an explicit definition of the\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`X-Forwarded-Proto`}</inlineCode>\n      {` may be required. For the Apache webserver this can be set as follows:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`RequestHeader set X-Forwarded-Proto \"https\"\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"custom-oauth2-configuration\"\n    }}>{`Custom OAuth2 Configuration`}</h3>\n    <p>{`Beyond FAB supported providers (Github, Twitter, LinkedIn, Google, Azure, etc), its easy to connect\nSuperset with other OAuth2 Authorization Server implementations that support “code” authorization.`}</p>\n    <p>{`First, configure authorization in Superset `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`AUTH_TYPE = AUTH_OAUTH\nOAUTH_PROVIDERS = [\n    {   'name':'egaSSO',\n        'token_key':'access_token', # Name of the token in the response of access_token_url\n        'icon':'fa-address-card',   # Icon for the provider\n        'remote_app': {\n            'consumer_key':'myClientId',  # Client Id (Identify Superset application)\n            'consumer_secret':'MySecret', # Secret for this Client Id (Identify Superset application)\n            'request_token_params':{\n                'scope': 'read'               # Scope for the Authorization\n            },\n            'access_token_method':'POST',    # HTTP Method to call access_token_url\n            'access_token_params':{        # Additional parameters for calls to access_token_url\n                'client_id':'myClientId'\n            },\n            'access_token_headers':{    # Additional headers for calls to access_token_url\n                'Authorization': 'Basic Base64EncodedClientIdAndSecret'\n            },\n            'base_url':'https://myAuthorizationServer/oauth2AuthorizationServer/',\n            'access_token_url':'https://myAuthorizationServer/oauth2AuthorizationServer/token',\n            'authorize_url':'https://myAuthorizationServer/oauth2AuthorizationServer/authorize'\n        }\n    }\n]\n\n# Will allow user self registration, allowing to create Flask users from Authorized User\nAUTH_USER_REGISTRATION = True\n\n# The default user self registration role\nAUTH_USER_REGISTRATION_ROLE = \"Public\"\n`}</code></pre>\n    <p>{`Then, create a `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`CustomSsoSecurityManager`}</inlineCode>\n      {` that extends `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`SupersetSecurityManager`}</inlineCode>\n      {` and overrides\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`oauth_user_info`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`from superset.security import SupersetSecurityManager\n\nclass CustomSsoSecurityManager(SupersetSecurityManager):\n\n    def oauth_user_info(self, provider, response=None):\n        logging.debug(\"Oauth2 provider: {0}.\".format(provider))\n        if provider == 'egaSSO':\n            # As example, this line request a GET to base_url + '/' + userDetails with Bearer  Authentication,\n    # and expects that authorization server checks the token, and response with user details\n            me = self.appbuilder.sm.oauth_remotes[provider].get('userDetails').data\n            logging.debug(\"user_data: {0}\".format(me))\n            return { 'name' : me['name'], 'email' : me['email'], 'id' : me['user_name'], 'username' : me['user_name'], 'first_name':'', 'last_name':''}\n    ...\n`}</code></pre>\n    <p>{`This file must be located at the same directory than `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` with the name\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`custom_sso_security_manager.py`}</inlineCode>\n      {`. Finally, add the following 2 lines to `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`from custom_sso_security_manager import CustomSsoSecurityManager\nCUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"feature-flags\"\n    }}>{`Feature Flags`}</h3>\n    <p>{`To support a diverse set of users, Superset has some features that are not enabled by default. For\nexample, some users have stronger security restrictions, while some others may not. So Superset\nallow users to enable or disable some features by config. For feature owners, you can add optional\nfunctionalities in Superset, but will be only affected by a subset of users.`}</p>\n    <p>{`You can enable or disable features with flag from `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`DEFAULT_FEATURE_FLAGS = {\n    'CLIENT_CACHE': False,\n    'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False,\n    'PRESTO_EXPAND_DATA': False,\n}\n`}</code></pre>\n    <p>{`Here is a list of flags and descriptions:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>\n\n        <p {...{\n          \"parentName\": \"li\"\n        }}><inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`ENABLE_EXPLORE_JSON_CSRF_PROTECTION`}</inlineCode>\n          {`: For some security concerns, you may need to enforce CSRF\nprotection on all query request to the `}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`explore_json`}</inlineCode>\n          {` endpoint. When\n`}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`ENABLE_EXPLORE_JSON_CSRF_PROTECTION`}</inlineCode>\n          {` is set to true, your users cannot make GET request to\n`}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`explore_json`}</inlineCode>\n          {`. The default value for this feature is `}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`False`}</inlineCode>\n          {` and `}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`explore_json`}</inlineCode>\n          {` will accept both\nGET and POST request. See `}\n          <a {...{\n            \"href\": \"https://github.com/apache/incubator-superset/pull/7935\",\n            \"parentName\": \"p\"\n          }}>{`PR 7935`}</a>\n          {` for\nmore details.`}</p>\n\n      </li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>\n\n        <p {...{\n          \"parentName\": \"li\"\n        }}><inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`PRESTO_EXPAND_DATA`}</inlineCode>\n          {`: When this feature is enabled, nested types in Presto will be expanded into\nextra columns and / or arrays. This is experimental, and doesn’t work with all nested types.`}</p>\n\n      </li>\n\n    </ul>\n    <h3 {...{\n      \"id\": \"sip-15\"\n    }}>{`SIP 15`}</h3>\n    <p><a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/issues/6360\",\n        \"parentName\": \"p\"\n      }}>{`Superset Improvement Proposal 15`}</a>\n      {` aims to\nensure that time intervals are handled in a consistent and transparent manner for both the Druid and\nSQLAlchemy connectors.`}</p>\n    <p>{`Prior to SIP-15 SQLAlchemy used inclusive endpoints however these may behave like exclusive for\nstring columns (due to lexicographical ordering) if no formatting was defined and the column\nformatting did not conform to an ISO 8601 date-time (refer to the SIP for details).`}</p>\n    <p>{`To remedy this rather than having to define the date/time format for every non-IS0 8601 date-time\ncolumn, once can define a default column mapping on a per database level via the `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`extra`}</inlineCode>\n      {` parameter:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`{\n    \"python_date_format_by_column_name\": {\n        \"ds\": \"%Y-%m-%d\"\n    }\n}\n`}</code></pre>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`New Deployments`}</strong></p>\n    <p>{`All new deployments should enable SIP-15 by setting this value in `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`SIP_15_ENABLED = True\n\n`}</code></pre>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Existing Deployments`}</strong></p>\n    <p>{`Given that it is not apparent whether the chart creator was aware of the time range inconsistencies\n(and adjusted the endpoints accordingly) changing the behavior of all charts is overly aggressive.\nInstead SIP-15 proivides a soft transistion allowing producers (chart owners) to see the impact of\nthe proposed change and adjust their charts accordingly.`}</p>\n    <p>{`Prior to enabling SIP-15, existing deployments should communicate to their users the impact of the\nchange and define a grace period end date (exclusive of course) after which all charts will conform\nto the [start, end) interval.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`from dateime import date\n\nSIP_15_ENABLED = True\nSIP_15_GRACE_PERIOD_END = date(<YYYY>, <MM>, <DD>)\n`}</code></pre>\n    <p>{`To aid with transparency the current endpoint behavior is explicitly called out in the chart time\nrange (post SIP-15 this will be [start, end) for all connectors and databases). One can override the\ndefaults on a per database level via the `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`extra`}</inlineCode>\n      {` parameter.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`{\n    \"time_range_endpoints\": [\"inclusive\", \"inclusive\"]\n}\n`}</code></pre>\n    <p>{`Note in a future release the interim SIP-15 logic will be removed (including the\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`time_grain_endpoints`}</inlineCode>\n      {` form-data field) via a code change and Alembic migration.`}</p>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}