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>
5.7 KiB
5.7 KiB
SecuBox Streamlit Launcher
Lanceur d'applications Streamlit a la demande avec arret sur inactivite et gestion de la memoire.
Presentation
Le Streamlit Launcher optimise l'utilisation des ressources sur les appareils contraints par :
- Demarrage des applications a la demande lors du premier acces (chargement paresseux)
- Arret des applications inactives apres un delai configurable (defaut : 30 min)
- Gestion de la pression memoire en arretant les applications a basse priorite quand la memoire est faible
- Systeme de priorite pour garder les applications critiques en fonctionnement plus longtemps
Architecture
+-------------+ +--------------+ +-----------------+
| HAProxy |---->| mitmproxy |---->| Streamlit |
| (vhost) | | (WAF+track) | | Launcher Daemon |
+-------------+ +--------------+ +--------+--------+
| |
Suivre acces Start/Stop
| |
+------v------+ +-----v-----+
| /tmp/access | | slforge |
| (touch) | | start/ |
+-------------+ | stop |
+-----------+
Installation
opkg install secubox-app-streamlit-launcher
Reference CLI
# Afficher le statut
streamlit-launcherctl status
# Lister toutes les applications avec details
streamlit-launcherctl list
# Demarrer/arreter manuellement une application
streamlit-launcherctl start <app>
streamlit-launcherctl stop <app>
# Definir la priorite (plus haut = reste actif plus longtemps)
streamlit-launcherctl priority <app> <value>
# Definir toujours actif (jamais d'arret auto)
streamlit-launcherctl priority <app> 100 1
# Executer la verification d'inactivite manuellement
streamlit-launcherctl check
# Executer la verification de pression memoire
streamlit-launcherctl check-memory
Configuration
Editez /etc/config/streamlit-launcher :
config global 'global'
# Activer le daemon launcher
option enabled '1'
# Activer le demarrage a la demande (vs toujours actif)
option on_demand '1'
# Minutes d'inactivite avant arret d'une application
option idle_timeout '30'
# Secondes entre les verifications d'inactivite
option check_interval '60'
# Memoire libre minimale (Mo) avant arret force des applications
option memory_threshold '100'
# Secondes max d'attente pour le demarrage d'une application
option startup_timeout '30'
# Priorites des applications (plus haut = reste actif plus longtemps)
config priority 'control'
option app 'control'
option value '100'
option always_on '1'
config priority 'ytdownload'
option app 'ytdownload'
option value '30'
Systeme 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 |
Integration avec slforge
Le launcher fonctionne aux cotes de slforge (Streamlit Forge) :
slforgegere la configuration, la creation et le start/stop basique des applicationsstreamlit-launcherctlajoute la gestion a la demande et de l'inactivite
Quand le mode a la demande est active :
- L'utilisateur accede a
https://app.example.com - HAProxy route vers mitmproxy
- Si l'application est arretee, mitmproxy peut declencher le demarrage via hook
- Le launcher demarre l'application et attend qu'elle soit prete
- La requete est servie
- L'acces est enregistre
- Apres le delai d'inactivite, l'application est arretee
Suivi des Acces
Le launcher suit les acces aux applications via des fichiers touch dans /tmp/streamlit-access/ :
# Enregistrer un acces (reinitialise le timer d'inactivite)
streamlit-launcherctl track <app>
# Ou directement
touch /tmp/streamlit-access/<app>
Ceci peut etre declenche par :
- Hook de requete mitmproxy
- Script de health check HAProxy
- Tache cron parsant les logs d'acces
Gestion Memoire
Quand la memoire libre descend sous le seuil :
- Les applications sont triees par priorite (plus basse en premier)
- Les applications a basse priorite sont arretees une par une
- S'arrete quand la memoire remonte au-dessus du seuil
- Les applications toujours actives ne sont jamais arretees
Controle du Service
# Activer/demarrer le daemon
/etc/init.d/streamlit-launcher enable
/etc/init.d/streamlit-launcher start
# Verifier le statut du daemon
/etc/init.d/streamlit-launcher status
# Voir les logs
logread -e streamlit-launcher
Fichiers
| Chemin | Description |
|---|---|
/usr/sbin/streamlit-launcherctl |
Outil CLI |
/etc/config/streamlit-launcher |
Configuration UCI |
/etc/init.d/streamlit-launcher |
Script init Procd |
/tmp/streamlit-access/ |
Fichiers de suivi des acces |
/usr/share/streamlit-launcher/loading.html |
Modele de page de chargement |
Exemple : Optimiser pour Faible Memoire
# Definir un delai agressif (10 min)
uci set streamlit-launcher.global.idle_timeout='10'
# Abaisser le seuil memoire (declencher le nettoyage a 150Mo libres)
uci set streamlit-launcher.global.memory_threshold='150'
# Rendre le dashboard toujours actif
streamlit-launcherctl priority dashboard 100 1
# Abaisser la priorite des applications lourdes
streamlit-launcherctl priority jupyter 20
streamlit-launcherctl priority analytics 30
uci commit streamlit-launcher
/etc/init.d/streamlit-launcher restart