secubox-openwrt/package/secubox/secubox-app-streamlit-launcher/README.fr.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

194 lines
5.7 KiB
Markdown

[English](README.md) | Francais | [中文](README.zh.md)
# 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
```bash
opkg install secubox-app-streamlit-launcher
```
## Reference CLI
```bash
# 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) :
- `slforge` gere la configuration, la creation et le start/stop basique des applications
- `streamlit-launcherctl` ajoute la gestion a la demande et de l'inactivite
Quand le mode a la demande est active :
1. L'utilisateur accede a `https://app.example.com`
2. HAProxy route vers mitmproxy
3. Si l'application est arretee, mitmproxy peut declencher le demarrage via hook
4. Le launcher demarre l'application et attend qu'elle soit prete
5. La requete est servie
6. L'acces est enregistre
7. 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/` :
```bash
# 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 :
1. Les applications sont triees par priorite (plus basse en premier)
2. Les applications a basse priorite sont arretees une par une
3. S'arrete quand la memoire remonte au-dessus du seuil
4. Les applications toujours actives ne sont jamais arretees
## Controle du Service
```bash
# 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
```bash
# 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
```