{"version":3,"sources":["webpack:///./src/pages/docs/installation/configuring.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---src-pages-docs-installation-configuring-mdx-a612bed4d3244681a48b.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\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\n\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 `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{` and add it to your\n`}<inlineCode parentName=\"p\">{`PYTHONPATH`}</inlineCode>{`. Here are some of the parameters you can set in that file:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`# 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`}<a parentName=\"p\" {...{\n        \"href\": \"https://github.com/apache/superset/blob/master/superset/config.py\"\n      }}>{`https://github.com/apache/superset/blob/master/superset/config.py`}</a>{`\ncan be altered in your local `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`. 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 `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{` acts as a Flask configuration module, it can be used to alter the\nsettings Flask itself, as well as Flask extensions like `}<inlineCode parentName=\"p\">{`flask-wtf`}</inlineCode>{`, `}<inlineCode parentName=\"p\">{`flask-cache`}</inlineCode>{`, `}<inlineCode parentName=\"p\">{`flask-migrate`}</inlineCode>{`,\nand `}<inlineCode parentName=\"p\">{`flask-appbuilder`}</inlineCode>{`. Flask App Builder, the web framework used by Superset, offers many\nconfiguration settings. Please consult the\n`}<a parentName=\"p\" {...{\n        \"href\": \"https://flask-appbuilder.readthedocs.org/en/latest/config.html\"\n      }}>{`Flask App Builder Documentation`}</a>{`\nfor more information on how to configure it.`}</p>\n    <p>{`Make sure to change:`}</p>\n    <ul>\n      <li parentName=\"ul\"><inlineCode parentName=\"li\">{`SQLALCHEMY_DATABASE_URI`}</inlineCode>{`: by default it is stored at ~/.superset/superset.db`}</li>\n      <li parentName=\"ul\"><inlineCode parentName=\"li\">{`SECRET_KEY`}</inlineCode>{`: to a long random string`}</li>\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 `}<inlineCode parentName=\"p\">{`WTF_CSRF_EXEMPT_LIST`}</inlineCode>{`:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`WTF_CSRF_EXEMPT_LIST = [‘’]\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 parentName=\"pre\" {...{}}>{`      -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 `}<a parentName=\"p\" {...{\n        \"href\": \"https://docs.gunicorn.org/en/stable/design.html\"\n      }}>{`Gunicorn documentation`}</a>{` for more\ninformation. `}<em parentName=\"p\">{`Note that the development web server (`}<inlineCode parentName=\"em\">{`superset run`}</inlineCode>{` or `}<inlineCode parentName=\"em\">{`flask run`}</inlineCode>{`) is not intended\nfor production use.`}</em></p>\n    <p>{`If you're not using Gunicorn, you may want to disable the use of `}<inlineCode parentName=\"p\">{`flask-compress`}</inlineCode>{` by setting\n`}<inlineCode parentName=\"p\">{`COMPRESS_REGISTER = False`}</inlineCode>{` in your `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`.`}</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 `}<inlineCode parentName=\"p\">{`/health`}</inlineCode>{` which will return a 200 response containing “OK”\nif the the webserver is running.`}</p>\n    <p>{`If the load balancer is inserting `}<inlineCode parentName=\"p\">{`X-Forwarded-For/X-Forwarded-Proto`}</inlineCode>{` headers, you should set\n`}<inlineCode parentName=\"p\">{`ENABLE_PROXY_FIX = True`}</inlineCode>{` in the superset config file (`}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`) 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`}<inlineCode parentName=\"p\">{`X-Forwarded-Proto`}</inlineCode>{` may be required. For the Apache webserver this can be set as follows:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`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 `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`.`}</p>\n    <pre><code parentName=\"pre\" {...{\n        \"className\": \"language-python\"\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 `}<inlineCode parentName=\"p\">{`CustomSsoSecurityManager`}</inlineCode>{` that extends `}<inlineCode parentName=\"p\">{`SupersetSecurityManager`}</inlineCode>{` and overrides\n`}<inlineCode parentName=\"p\">{`oauth_user_info`}</inlineCode>{`:`}</p>\n    <pre><code parentName=\"pre\" {...{\n        \"className\": \"language-python\"\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 `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{` with the name\n`}<inlineCode parentName=\"p\">{`custom_sso_security_manager.py`}</inlineCode>{`. Finally, add the following 2 lines to `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`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 `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`:`}</p>\n    <pre><code parentName=\"pre\" {...{\n        \"className\": \"language-python\"\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      <li parentName=\"ul\">\n        <p parentName=\"li\"><inlineCode parentName=\"p\">{`ENABLE_EXPLORE_JSON_CSRF_PROTECTION`}</inlineCode>{`: For some security concerns, you may need to enforce CSRF\nprotection on all query request to the `}<inlineCode parentName=\"p\">{`explore_json`}</inlineCode>{` endpoint. When\n`}<inlineCode parentName=\"p\">{`ENABLE_EXPLORE_JSON_CSRF_PROTECTION`}</inlineCode>{` is set to true, your users cannot make GET request to\n`}<inlineCode parentName=\"p\">{`explore_json`}</inlineCode>{`. The default value for this feature is `}<inlineCode parentName=\"p\">{`False`}</inlineCode>{` and `}<inlineCode parentName=\"p\">{`explore_json`}</inlineCode>{` will accept both\nGET and POST request. See `}<a parentName=\"p\" {...{\n            \"href\": \"https://github.com/apache/superset/pull/7935\"\n          }}>{`PR 7935`}</a>{` for\nmore details.`}</p>\n      </li>\n      <li parentName=\"ul\">\n        <p parentName=\"li\"><inlineCode parentName=\"p\">{`PRESTO_EXPAND_DATA`}</inlineCode>{`: 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      </li>\n    </ul>\n    <h3 {...{\n      \"id\": \"sip-15\"\n    }}>{`SIP 15`}</h3>\n    <p><a parentName=\"p\" {...{\n        \"href\": \"https://github.com/apache/superset/issues/6360\"\n      }}>{`Superset Improvement Proposal 15`}</a>{` 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 `}<inlineCode parentName=\"p\">{`extra`}</inlineCode>{` parameter:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`{\n    \"python_date_format_by_column_name\": {\n        \"ds\": \"%Y-%m-%d\"\n    }\n}\n`}</code></pre>\n    <p><strong parentName=\"p\">{`New Deployments`}</strong></p>\n    <p>{`All new deployments should enable SIP-15 by setting this value in `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`SIP_15_ENABLED = True\n\n`}</code></pre>\n    <p><strong parentName=\"p\">{`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 parentName=\"pre\" {...{\n        \"className\": \"language-python\"\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 `}<inlineCode parentName=\"p\">{`extra`}</inlineCode>{` parameter.`}</p>\n    <pre><code parentName=\"pre\" {...{\n        \"className\": \"language-python\"\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`}<inlineCode parentName=\"p\">{`time_grain_endpoints`}</inlineCode>{` form-data field) via a code change and Alembic migration.`}</p>\n\n    </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}