secubox-openwrt/package/secubox/secubox-app-streamlit-forge/README.zh.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
Add complete French (fr) and Chinese (zh) translations for all documentation:

- Root files: README, CHANGELOG, SECURITY, BETA-RELEASE
- docs/: All 16 core documentation files
- DOCS/: All 19 deep-dive documents including embedded/ and archive/
- package/secubox/: All 123+ package READMEs
- Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/

Total: 346 translation files created

Each file includes language switcher links for easy navigation between
English, French, and Chinese versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:00:18 +01:00

8.3 KiB
Raw Blame History

English | Francais | 中文

Streamlit Forge

SecuBox 的 Streamlit 应用发布平台。

概述

Streamlit Forge 是一个用于创建、管理和发布 Streamlit 应用的综合平台。从模板创建应用、管理实例、通过 HAProxy 使用 SSL 暴露服务,并发布到 SecuBox mesh 目录。

功能特性

  • 应用模板 - Basic、Dashboard、Data-Viewer 入门模板
  • 实例管理 - 启动、停止、重启应用实例
  • 端口分配 - 自动端口分配
  • HAProxy 集成 - 一条命令完成 vhost + SSL 暴露
  • Mesh 发布 - 在 SecuBox mesh 网络中共享应用
  • UCI 配置 - 持久化应用设置

安装

opkg install secubox-app-streamlit-forge

CLI 使用方法

# 应用管理
slforge create <name> [options]
  --from-template <tpl>   # 使用模板 (basic, dashboard, data-viewer)
  --from-upload <zip>     # 从 ZIP 文件创建
  --from-git <url>        # 从 Git 仓库克隆

slforge list              # 列出所有应用
slforge info <app>        # 显示应用详情
slforge delete <app>      # 删除应用

# 实例控制
slforge start <app>       # 启动应用实例
slforge stop <app>        # 停止应用实例
slforge restart <app>     # 重启应用
slforge status [app]      # 显示状态
slforge logs <app> [-f]   # 查看日志

# 配置
slforge config <app> list         # 列出配置
slforge config <app> get <key>    # 获取值
slforge config <app> set <k> <v>  # 设置值

# 发布
slforge expose <app> [--domain <d>]  # 创建 vhost + SSL
slforge hide <app>                   # 移除公共访问
slforge publish <app>                # 添加到 mesh 目录
slforge unpublish <app>              # 从 mesh 移除

# Launcher 集成(按需启动)
slforge launcher status              # 显示 launcher 状态
slforge launcher priority <app> <n>  # 设置应用优先级 (1-100)
slforge launcher always-on <app>     # 标记为始终运行

# 模板
slforge templates         # 列出可用模板

示例工作流

# 1. 从 dashboard 模板创建应用
slforge create mydashboard --from-template dashboard

# 2. 启动应用
slforge start mydashboard
# URL: http://192.168.255.1:8501

# 3. 使用 SSL 暴露
slforge expose mydashboard --domain mydashboard.gk2.secubox.in

# 4. 发布到 mesh 目录
slforge publish mydashboard

模板

Basic

带侧边栏和两列布局的最小 Streamlit 应用。

Dashboard

多页面仪表板,包含:

  • 带增量指示器的指标卡片
  • 折线图和面积图
  • 带 CSV 导出的数据表
  • 设置页面

Data-Viewer

CSV/Excel 数据浏览器,包含:

  • 文件上传CSV、XLSX
  • 动态列过滤
  • 直方图和散点图
  • 统计摘要
  • 相关性矩阵

配置

UCI 配置:/etc/config/streamlit-forge

config forge 'main'
    option enabled '1'
    option gitea_url 'http://127.0.0.1:3000'
    option gitea_org 'streamlit-apps'
    option apps_dir '/srv/streamlit/apps'
    option previews_dir '/srv/streamlit/previews'
    option base_domain 'apps.secubox.in'
    option default_port_start '8501'
    option default_memory '512M'

config app 'myapp'
    option name 'myapp'
    option enabled '1'
    option port '8501'
    option entrypoint 'app.py'
    option memory '512M'
    option domain 'myapp.gk2.secubox.in'

应用目录结构

/srv/streamlit/apps/<app>/
|-- src/                  # 应用源代码
|   |-- app.py           # Streamlit 主入口
|   |-- requirements.txt # Python 依赖
|   +-- ...
|-- data/                # 持久化数据
+-- config.json          # 运行时配置

LuCI 界面

安装 luci-app-streamlit-forge 获取 服务 > Streamlit Forge 的 Web 界面。

功能:

  • 状态仪表板(运行中/总应用数、LXC 状态)
  • 带模板选择的创建应用对话框
  • 应用表格,支持启动/停止/打开/暴露/发布/删除
  • 自动刷新轮询

运行时

应用在 streamlit LXC 容器内运行:

  • 应用挂载在容器内的 /srv/apps/
  • 预装 Streamlit 的 Python virtualenv
  • 端口转发到主机网络

依赖

  • python3, python3-pip
  • lxc, lxc-common
  • jsonfilter

文件位置

路径 描述
/etc/config/streamlit-forge UCI 配置
/usr/sbin/slforge CLI 工具
/srv/streamlit/apps/ 应用源目录
/srv/streamlit/previews/ 生成的预览
/usr/share/streamlit-forge/templates/ 应用模板
/var/run/streamlit-*.pid PID 文件
/var/log/streamlit-*.log 应用日志

Mesh 目录清单

发布的应用会在 /usr/share/secubox/plugins/catalog/ 创建清单:

{
  "id": "streamlit-myapp",
  "name": "myapp",
  "type": "streamlit-app",
  "version": "1.0.0",
  "category": "apps",
  "runtime": "streamlit",
  "actions": {
    "start": "slforge start myapp",
    "stop": "slforge stop myapp"
  }
}

按需 Launcher

安装 secubox-app-streamlit-launcher 进行资源优化:

  • 延迟加载 - 应用仅在首次访问时启动
  • 空闲关闭 - 在可配置的超时后停止应用默认30 分钟)
  • 内存管理 - 内存不足时强制停止低优先级应用
  • 优先级系统 - 让关键应用运行更长时间

Launcher 命令

# 检查 launcher 状态
slforge launcher status

# 设置应用优先级(越高 = 运行时间越长,最大 100
slforge launcher priority myapp 75

# 标记为始终运行(永不自动停止)
slforge launcher always-on dashboard

优先级级别

优先级 行为
100 + always_on 永不自动停止
80-99 内存压力时最后停止
50默认 正常优先级
1-49 内存压力时最先停止

工作原理

  1. 用户访问 https://app.example.com
  2. 如果应用已停止launcher 按需启动
  3. 记录应用访问时间
  4. 空闲超时后,应用自动停止
  5. 内存压力触发低优先级应用关闭

完整配置请参阅 secubox-app-streamlit-launcher README。

模块清单 (NFO)

应用可以包含 README.nfo 清单文件,包含以下元数据:

  • 身份 - 名称、版本、作者、许可证
  • 分类 - 类别、关键词、标签
  • 运行时 - 端口、内存、依赖
  • 动态 - 用于生成内容集成的 AI 上下文

NFO 命令

# 为现有应用生成 README.nfo
slforge nfo init myapp

# 查看 NFO 摘要
slforge nfo info myapp

# 编辑清单
slforge nfo edit myapp

# 验证清单
slforge nfo validate myapp

# 导出为 JSON用于 API
slforge nfo json myapp

# 从带 NFO 的目录安装应用
slforge nfo install /path/to/myapp

NFO 文件结构

[identity]
id=myapp
name=My Application
version=1.0.0
author=CyberMind

[description]
short=系统指标仪表板
long=<<EOF
多行详细描述...
EOF

[tags]
category=administration
keywords=dashboard,monitoring,metrics

[runtime]
type=streamlit
port=8501
memory=512M

[dynamics]
prompt_context=<<EOF
此应用显示系统指标。
用户可以请求图表或数据导出。
EOF
capabilities=data-visualization,export
input_types=api,json
output_types=charts,tables,csv

捆绑安装器

应用可以包含读取 NFO 的 install.sh

# 从目录安装
cd /path/to/myapp
./install.sh

# 或使用 slforge
slforge nfo install /path/to/myapp

完整规范请参阅 /usr/share/streamlit-forge/NFO-SPEC.md

生成式 AI 集成

[dynamics] 部分为 AI 助手提供上下文:

[dynamics]
prompt_context=<<EOF
此应用是数据可视化仪表板。
它可以显示图表、表格并导出数据。
可用数据CPU、内存、网络指标。
EOF

capabilities=data-visualization,real-time-updates,export
input_types=json,api,prometheus
output_types=charts,tables,csv,pdf

AI 系统可以读取此上下文以了解应用的功能以及如何协助用户。

文件位置

路径 描述
/etc/config/streamlit-forge UCI 配置
/usr/sbin/slforge CLI 工具
/srv/streamlit/apps/ 应用源目录
/srv/streamlit/apps/<app>/README.nfo 应用清单
/srv/streamlit/previews/ 生成的预览
/usr/share/streamlit-forge/templates/ 应用模板
/usr/share/streamlit-forge/lib/nfo-parser.sh NFO 解析器库
/usr/share/streamlit-forge/nfo-template.nfo NFO 模板
/usr/share/streamlit-forge/install.sh 捆绑安装器
/var/run/streamlit-*.pid PID 文件
/var/log/streamlit-*.log 应用日志