Aller au contenu principal

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.

attention

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_name du sidecar est égal au name: 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_HASH est défini avec AppShield