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>
9.9 KiB
Streamlit Forge
Plateforme de publication d'applications Streamlit pour SecuBox.
Presentation
Streamlit Forge est une plateforme complete pour creer, gerer et publier des applications Streamlit. Creez des applications a partir de modeles, gerez les instances, exposez via HAProxy avec SSL et publiez sur le catalogue mesh SecuBox.
Fonctionnalites
- Modeles d'applications - Modeles de base : Basic, Dashboard, Data-Viewer
- Gestion des instances - Demarrer, arreter, redemarrer les instances d'applications
- Allocation de ports - Attribution automatique des ports
- Integration HAProxy - Exposition vhost + SSL en une commande
- Publication Mesh - Partagez les applications sur le reseau mesh SecuBox
- Configuration UCI - Parametres d'applications persistants
Installation
opkg install secubox-app-streamlit-forge
Utilisation CLI
# Gestion des applications
slforge create <name> [options]
--from-template <tpl> # Utiliser un modele (basic, dashboard, data-viewer)
--from-upload <zip> # Creer depuis un fichier ZIP
--from-git <url> # Cloner depuis un depot Git
slforge list # Lister toutes les applications
slforge info <app> # Afficher les details de l'application
slforge delete <app> # Supprimer l'application
# Controle des instances
slforge start <app> # Demarrer l'instance
slforge stop <app> # Arreter l'instance
slforge restart <app> # Redemarrer l'application
slforge status [app] # Afficher le statut
slforge logs <app> [-f] # Voir les logs
# Configuration
slforge config <app> list # Lister la config
slforge config <app> get <key> # Obtenir une valeur
slforge config <app> set <k> <v> # Definir une valeur
# Publication
slforge expose <app> [--domain <d>] # Creer vhost + SSL
slforge hide <app> # Retirer l'acces public
slforge publish <app> # Ajouter au catalogue mesh
slforge unpublish <app> # Retirer du mesh
# Integration Launcher (demarrage a la demande)
slforge launcher status # Afficher le statut du launcher
slforge launcher priority <app> <n> # Definir la priorite (1-100)
slforge launcher always-on <app> # Marquer comme toujours actif
# Modeles
slforge templates # Lister les modeles disponibles
Exemple de Workflow
# 1. Creer une application depuis le modele dashboard
slforge create mydashboard --from-template dashboard
# 2. Demarrer l'application
slforge start mydashboard
# URL: http://192.168.255.1:8501
# 3. Exposer avec SSL
slforge expose mydashboard --domain mydashboard.gk2.secubox.in
# 4. Publier sur le catalogue mesh
slforge publish mydashboard
Modeles
Basic
Application Streamlit minimale avec barre laterale et disposition en deux colonnes.
Dashboard
Dashboard multi-pages avec :
- Cartes de metriques avec indicateurs delta
- Graphiques en lignes et en aires
- Tableau de donnees avec export CSV
- Page de parametres
Data-Viewer
Explorateur de donnees CSV/Excel avec :
- Upload de fichiers (CSV, XLSX)
- Filtrage dynamique par colonnes
- Histogrammes et nuages de points
- Resume statistique
- Matrice de correlation
Configuration
Config 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'
Structure du Repertoire d'Application
/srv/streamlit/apps/<app>/
|-- src/ # Code source de l'application
| |-- app.py # Point d'entree Streamlit principal
| |-- requirements.txt # Dependances Python
| +-- ...
|-- data/ # Donnees persistantes
+-- config.json # Configuration runtime
Interface LuCI
Installez luci-app-streamlit-forge pour l'interface web dans Services > Streamlit Forge.
Fonctionnalites :
- Dashboard de statut (applications en cours/total, statut LXC)
- Dialogue de creation d'application avec selection de modele
- Tableau d'applications avec Demarrer/Arreter/Ouvrir/Exposer/Publier/Supprimer
- Actualisation automatique
Runtime
Les applications s'executent dans le conteneur LXC streamlit :
- Applications montees dans
/srv/apps/a l'interieur du conteneur - Virtualenv Python avec Streamlit pre-installe
- Redirection de ports vers le reseau hote
Dependances
- python3, python3-pip
- lxc, lxc-common
- jsonfilter
Emplacements des Fichiers
| Chemin | Description |
|---|---|
/etc/config/streamlit-forge |
Configuration UCI |
/usr/sbin/slforge |
Outil CLI |
/srv/streamlit/apps/ |
Repertoires sources des applications |
/srv/streamlit/previews/ |
Previews generees |
/usr/share/streamlit-forge/templates/ |
Modeles d'applications |
/var/run/streamlit-*.pid |
Fichiers PID |
/var/log/streamlit-*.log |
Logs des applications |
Manifeste du Catalogue Mesh
Les applications publiees creent un manifeste dans /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 a la Demande
Installez secubox-app-streamlit-launcher pour l'optimisation des ressources :
- Chargement Paresseux - Les applications demarrent uniquement lors du premier acces
- Arret sur Inactivite - Arret des applications apres un delai configurable (defaut : 30 min)
- Gestion Memoire - Arret force des applications a basse priorite en cas de pression memoire
- Systeme de Priorite - Garde les applications critiques en fonctionnement plus longtemps
Commandes Launcher
# Verifier le statut du launcher
slforge launcher status
# Definir la priorite (plus haut = reste actif plus longtemps, max 100)
slforge launcher priority myapp 75
# Marquer comme toujours actif (jamais arrete automatiquement)
slforge launcher always-on dashboard
Niveaux de Priorite
| Priorite | Comportement |
|---|---|
| 100 + always_on | Jamais arrete automatiquement |
| 80-99 | Arrete en dernier lors de pression memoire |
| 50 (defaut) | Priorite normale |
| 1-49 | Arrete en premier lors de pression memoire |
Fonctionnement
- L'utilisateur accede a
https://app.example.com - Si l'application est arretee, le launcher la demarre a la demande
- Le temps d'acces est enregistre
- Apres le delai d'inactivite, l'application est automatiquement arretee
- La pression memoire declenche l'arret des applications a basse priorite
Voir le README de secubox-app-streamlit-launcher pour la configuration complete.
Manifeste de Module (NFO)
Les applications peuvent inclure un manifeste README.nfo avec des metadonnees pour :
- Identite - Nom, version, auteur, licence
- Classification - Categorie, mots-cles, tags
- Runtime - Port, memoire, dependances
- Dynamiques - Contexte IA pour l'integration de contenu generatif
Commandes NFO
# Generer README.nfo pour une application existante
slforge nfo init myapp
# Voir le resume NFO
slforge nfo info myapp
# Editer le manifeste
slforge nfo edit myapp
# Valider le manifeste
slforge nfo validate myapp
# Exporter en JSON (pour APIs)
slforge nfo json myapp
# Installer une application depuis un repertoire avec NFO
slforge nfo install /path/to/myapp
Structure du Fichier NFO
[identity]
id=myapp
name=My Application
version=1.0.0
author=CyberMind
[description]
short=Un dashboard pour les metriques systeme
long=<<EOF
Description detaillee multi-lignes...
EOF
[tags]
category=administration
keywords=dashboard,monitoring,metrics
[runtime]
type=streamlit
port=8501
memory=512M
[dynamics]
prompt_context=<<EOF
Cette application affiche les metriques systeme.
Les utilisateurs peuvent demander des graphiques ou exports de donnees.
EOF
capabilities=data-visualization,export
input_types=api,json
output_types=charts,tables,csv
Installateur Integre
Les applications peuvent inclure un install.sh qui lit le NFO :
# Installer depuis un repertoire
cd /path/to/myapp
./install.sh
# Ou utiliser slforge
slforge nfo install /path/to/myapp
Voir /usr/share/streamlit-forge/NFO-SPEC.md pour la specification complete.
Integration IA Generative
La section [dynamics] fournit un contexte pour les assistants IA :
[dynamics]
prompt_context=<<EOF
Cette application est un dashboard de visualisation de donnees.
Elle peut afficher des graphiques, tableaux et exporter des donnees.
Donnees disponibles : CPU, memoire, metriques reseau.
EOF
capabilities=data-visualization,real-time-updates,export
input_types=json,api,prometheus
output_types=charts,tables,csv,pdf
Les systemes IA peuvent lire ce contexte pour comprendre ce que fait l'application et comment assister les utilisateurs.
Emplacements des Fichiers
| Chemin | Description |
|---|---|
/etc/config/streamlit-forge |
Configuration UCI |
/usr/sbin/slforge |
Outil CLI |
/srv/streamlit/apps/ |
Repertoires sources des applications |
/srv/streamlit/apps/<app>/README.nfo |
Manifeste de l'application |
/srv/streamlit/previews/ |
Previews generees |
/usr/share/streamlit-forge/templates/ |
Modeles d'applications |
/usr/share/streamlit-forge/lib/nfo-parser.sh |
Bibliotheque parseur NFO |
/usr/share/streamlit-forge/nfo-template.nfo |
Modele NFO |
/usr/share/streamlit-forge/install.sh |
Installateur integre |
/var/run/streamlit-*.pid |
Fichiers PID |
/var/log/streamlit-*.log |
Logs des applications |