Patterns d'Authentification
L'authentification est obligatoire pour chaque app du Yundera App Store. Les exceptions doivent être justifiées dans un fichier rationale.md. Il existe trois patterns supportés.
Pattern 1 — SSO via AppShield (préféré)
Le sidecar AppShield gère l'authentification. Le backend n'est accessible qu'à travers le sidecar sur le réseau interne pcs et n'est jamais exposé directement.
C'est le pattern recommandé pour la plupart des apps. Voir le template complet pour la configuration compose complète.
Exemples : ConvertX, Spliit, Netdata, Stremio, Terminal, Tribler.
Pattern 2 — AppShield + désactiver l'auto-auth de l'app
Certains backends ont leur propre système de connexion. Avec AppShield, désactivez l'auth intégrée du backend pour que les utilisateurs ne soient pas invités à se connecter deux fois.
myapp-backend:
environment:
# Désactiver l'authentification propre au backend
AUTHENTICATION_ENABLED: "false" # varie selon l'app
# ou : AUTH_MODE: "none"
# ou : --noauth flag
# ou : WEBUI_AUTH: "false"
La variable d'environnement spécifique dépend de l'application.
Pattern 3 — L'app garde sa propre auth (sans AppShield)
Quand l'authentification de l'app ne peut pas ou ne devrait pas être désactivée, exposez l'app directement avec les labels Caddy et laissez-la gérer la connexion elle-même.
Documentez les identifiants par défaut dans tips.before_install :
x-casaos:
tips:
before_install:
en_us: |
## Identifiants par Défaut
| Nom d'utilisateur | Mot de passe |
|----------|----------|
| `admin` | `$APP_DEFAULT_PASSWORD` |
Exemples : Jellyfin, Immich, n8n, Stirling-PDF.
Ne jamais coder en dur les mots de passe dans le fichier compose. Toujours utiliser $APP_DEFAULT_PASSWORD pour les identifiants générés.
Checklist
Avant de soumettre votre PR :
- L'auth est activée et documentée
- AppShield est fixé à une version spécifique (actuellement
ghcr.io/yundera/appshield:2.0.3) - Le
container_namedu sidecar est égal auname:de premier niveau - Les labels Caddy sont uniquement sur le sidecar
- Le backend n'a pas de
ports:ni de labels Caddy - Aucun label
auth-${APP_DOMAIN}nulle part - Pas d'identifiants codés en dur
-
index: /?hash=$AUTH_HASHest défini avec AppShield