能否将VM本地服务器的Apache Superset嵌入Cpanel的Flask应用?
Apache Superset仪表盘嵌入Cpanel Flask应用的可行性及实现参考
可行性结论
完全可以实现。Apache Superset原生支持仪表盘嵌入(iframe或官方SDK方式),只要你的VM服务器上的Superset服务能被Cpanel部署的Flask应用所在服务器访问(需配置VM防火墙、端口转发确保可达,同内网可直接用内网IP),就能在Flask应用中嵌入仪表盘,再通过Cpanel子域名对外展示。
核心实现步骤
1. 配置Superset允许嵌入
- 编辑Superset的
superset_config.py配置文件,添加/修改以下参数:ENABLE_EMBEDDING = True SESSION_COOKIE_SAMESITE = None # 跨域场景下需设置,生产环境配合HTTPS使用 SESSION_COOKIE_SECURE = True # 生产环境强制HTTPS - 重启Superset服务生效。
- 在Superset仪表盘的编辑页面,找到「Embed Dashboard」选项,生成带有效期的嵌入令牌或直接获取嵌入URL。
2. 在Flask应用中嵌入仪表盘
有两种常用方式:
- iframe嵌入(快速实现):在Flask的HTML模板中直接添加iframe标签,指向Superset的嵌入URL:
<iframe src="http://你的VM服务器IP:8088/superset/embedded/你的仪表盘令牌/" width="100%" height="800px" frameborder="0" allowfullscreen> </iframe> - 官方SDK嵌入(更灵活):在模板中引入Superset的嵌入SDK,通过令牌加载仪表盘:
<script src="http://你的VM服务器IP:8088/superset/assets/embedded-sdk.js"></script> <div id="superset-dashboard"></div> <script> supersetEmbedDashboard({ id: '你的仪表盘UUID', supersetDomain: 'http://你的VM服务器IP:8088', embedToken: '你的嵌入令牌', container: '#superset-dashboard', height: 800, }); </script>
3. Cpanel端配置
- 通过Cpanel的「Python Applications」工具部署你的Flask应用,绑定目标子域名(如
embed.yourdomain.com)。 - 测试子域名下的页面是否能正常加载Superset仪表盘,若出现跨域问题,需在Superset配置中添加CORS允许规则:
CORS_OPTIONS = { "supports_credentials": True, "resources": ["*"], "origins": ["你的子域名地址"] }
参考文档
- Apache Superset官方嵌入指南:官方文档的「Embedding Dashboards」章节,详细讲解嵌入配置、令牌生成、权限控制等内容。
- Flask模板渲染文档:Flask官方文档「Template Rendering」部分,学习如何在Flask模板中整合外部HTML/JS资源。
- Cpanel Python应用部署文档:Cpanel官方文档中「Python Applications」相关内容,了解Flask应用部署、子域名绑定的具体操作。
内容的提问来源于stack exchange,提问作者Sutefano18
相关产品推荐
相关产品推荐

