> ⛔ **NE PAS COMMITER CE FICHIER TANT QUE L'ASSISTANT DE CONFIGURATION N'EST PAS EN PLACE ET VALIDÉ.**
> C'est un plan de travail / design (modes d'installation, arbitrages, éléments d'infra). On le supprime ou on le déplace hors du dépôt une fois la bascule faite.

# Assistant de configuration — modes d'installation

> **But** : que **n'importe qui**, avec ou sans connaissances techniques, puisse utiliser PhotoSync **chez lui** ou **à distance** — selon son NAS et ce qu'il est prêt à mettre en place. L'app propose à l'installation un **assistant** qui guide vers le bon mode et en explique honnêtement les avantages/inconvénients.

---

## 0. L'idée directrice : **deux axes**, pas une liste

La plus grosse erreur de conception serait de mélanger « WebDAV », « Agent », « Tailscale », « serveur au milieu » dans une seule liste. Ce sont **deux questions indépendantes** :

- **Axe 1 — Comment l'app atteint le stockage** (le *protocole*) : **WebDAV** (direct) ou **Agent** (riche).
- **Axe 2 — Comment on atteint le NAS depuis l'extérieur** (le *réseau*) : maison seule, cloud constructeur, Tailscale, WireGuard.

➡️ L'assistant est donc un **mini-wizard en 2 étapes** :

```
Étape 1 — Mon NAS, l'app lui parle comment ?
   [ WebDAV — simple, sans rien installer ]      [ Agent — avancé, plus de fonctions ]

Étape 2 — J'y accède d'où ?
   [ À la maison seulement ]   [ Partout — cloud du NAS ]   [ Partout — Tailscale ]   [ Partout — WireGuard ]
```

L'app combine les deux choix et affiche **ce qu'il reste à faire** + **ce qu'on gagne/perd**.

---

## 1. Axe 1 — Le protocole (app ↔ stockage)

| | **WebDAV (direct)** | **Agent (Pi / Docker / mini-PC)** |
|---|---|---|
| Ce que l'utilisateur installe | **Rien** — il coche « activer WebDAV » dans son NAS | Un **agent** Node quelque part (Docker sur le NAS, Pi, mini-PC) |
| Coût | **0 €** | 0 € si NAS-Docker ou PC ; ~40-80 € si Pi |
| Marche sur vieux NAS | ✅ (WebDAV existe même sur les NAS EOL — cf. TS-228) | ⚠️ seulement si le NAS fait tourner Docker, sinon Pi/PC |
| Galerie / upload / download / tri par date / corbeille | ✅ (corbeille via `MOVE` WebDAV) | ✅ |
| **Dédup serveur (nom+contenu)** | ❌ à refaire côté app | ✅ (l'agent le fait) |
| **Transcodage vidéo à la demande** (codecs non natifs) | ❌ impossible (un NAS ne transcode pas) | ✅ (le Pi transcode) |
| Sécurité de l'auth | mot de passe **du compte NAS** stocké dans l'app | **token** dédié (révocable, ne donne accès qu'à PhotoSync) |
| Chantier dev | client WebDAV dans l'app (HTTP, faisable en JS) | **déjà fait** (agent existant) |

> 🔒 **Point sécurité WebDAV** : en **HTTP clair**, le mot de passe du NAS circule en clair. → WebDAV doit se faire en **HTTPS** (cf. [HTTPS-MIGRATION.md](HTTPS-MIGRATION.md)), d'autant plus sur iOS où le HTTP clair est bloqué (ATS, cf. [IOS-MIGRATION.md](IOS-MIGRATION.md)).

> ⚠️ **Piège QNAP à guider absolument** (validé sur TS-228) : à l'activation de WebDAV, choisir le mode **« Autorisation du dossier partagé »**, *pas* « Autorisation WebDAV » — sinon la racine est vide / les partages renvoient 404 alors même que le compte a accès. L'onboarding doit afficher ce conseil. Détail : [CONFIGURATION.md](CONFIGURATION.md) §7.

> ❌ **Pas de 3ᵉ mode « SMB direct »** : faire parler SMB à l'app demanderait une lib native lourde (iOS+Android) pour aucun gain face à l'agent. Le « mode SMB » de l'utilisateur avancé **est** le mode Agent (c'est l'agent qui parle SMB au NAS).

---

## 2. Axe 2 — L'accès depuis l'extérieur (le morceau dur, à dire honnêtement)

À la maison (même Wi-Fi), c'est facile pour **tous**. **L'accès distant reste la vraie difficulté, quel que soit le mode** — c'est une contrainte de réseau, pas un défaut de l'app.

| Option | Pour qui | Gratuit | Difficulté | Piège |
|---|---|---|---|---|
| **Maison seulement** | tout le monde | ✅ | 🟢 | Aucun accès hors Wi-Fi |
| **Cloud du constructeur** (Synology QuickConnect, QNAP myQNAPcloud) | débutant, **NAS encore supporté** | ✅ | 🟢 (assistant intégré au NAS) | **Meurt quand le NAS devient EOL** — voir ⚠️ ci-dessous |
| **Tailscale** | intermédiaire | ✅ | 🟠 | Doit tourner sur un appareil maison (vieux NAS ≠ capable → besoin d'un Pi) |
| **WireGuard auto-hébergé** | avancé | VPS payant | 🔴 | Config clés + VPS (cf. [WIREGUARD-MIGRATION.md](WIREGUARD-MIGRATION.md)) |
| Redirection de port | — | ✅ | 🟠 | **Expose le NAS sur internet** : à proscrire, surtout NAS EOL |

> ⚠️ **Le cloud constructeur est un piège pour le cœur de cible.** Il est parfait… tant que le NAS est supporté. Mais l'**audience visée par PhotoSync, ce sont justement les vieux NAS abandonnés** (cf. [Genèse README](README.md#L15)) : sur un TS-228 EOL, **myQNAPcloud cesse de fonctionner** — c'est **littéralement ce qui a déclenché la création de l'app**. Donc l'assistant peut le **proposer** au débutant dont le NAS marche encore, mais doit **prévenir** que ce chemin disparaîtra à l'EOL, et que **le mode pérenne** (WebDAV/Agent + Tailscale/WireGuard) est ce qui survit à l'abandon constructeur. **C'est l'argument de valeur n°1 de l'app.**

---

## 3. Recommandation par profil

| Profil | Axe 1 (protocole) | Axe 2 (accès) | Pourquoi |
|---|---|---|---|
| **Débutant, sans argent, à la maison** | WebDAV | Maison seulement | Zéro install, zéro coût, marche partout |
| **Débutant, NAS récent, veut le distant** | WebDAV | Cloud constructeur *(avec avertissement EOL)* | Le plus simple aujourd'hui, mais fragile à long terme |
| **Vieux NAS EOL (cœur de cible)** | WebDAV | Tailscale *(via un appareil maison)* ou Maison seule | Le cloud constructeur est mort → le mode pérenne prend le relais |
| **Bricoleur / toi** | Agent | WireGuard (ou Tailscale) | Transcodage, dédup serveur, souveraineté |

➡️ **Défaut conseillé par l'assistant** : **WebDAV + Maison seulement** (marche pour tout le monde, tout de suite), puis proposer d'« ajouter l'accès distant » en option.

---

## 4. Ce qui est écarté, et pourquoi (pour mémoire)

- ❌ **Agent hébergé chez le dev (VPS qui monte le NAS de l'utilisateur)** : un serveur en datacenter ne peut joindre un NAS domestique que via un tunnel ouvert depuis la maison **ou** en exposant le SMB sur internet (dangereux). Si l'utilisateur sait ouvrir le tunnel, il peut héberger l'agent chez lui → le VPS n'apporte rien, **sauf** faire transiter toutes les photos + stocker le mot de passe NAS chez le dev. Casse le modèle « rien ne transite par chez moi », ajoute coût + responsabilité + obligations RGPD + review plus lourde (Apple/Google).
- ❌ **Passerelle/relais payant qui voit les photos** : mêmes raisons.
- ✅ **Distinction à garder** : un VPS comme **simple hub WireGuard** (l'agent reste **chez l'utilisateur**, le VPS ne relaie que du chiffré) est **légitime** — c'est le plan [WIREGUARD-MIGRATION.md](WIREGUARD-MIGRATION.md). La ligne rouge : le serveur du dev ne doit **jamais** voir les fichiers ni les identifiants.

---

## 5. Implications développement (pour planifier)

| Chantier | Détail | État |
|---|---|---|
| **Écran d'onboarding / wizard 2 axes** | Sélection mode + explications + test de connexion | À créer |
| **Client WebDAV dans l'app** | lister / upload / download / `MOVE` (corbeille) / fichier de config ; en JS | À créer |
| **Dédup côté app (mode WebDAV)** | nom+taille a minima (le serveur ne déduplique plus) | À créer |
| **Abstraction « backend »** | une interface commune `list/upload/download/trash` avec 2 implémentations (WebDAV / Agent) pour ne pas dupliquer la logique UI | À concevoir |
| **HTTPS** | requis pour WebDAV (mot de passe) et pour iOS/ATS | cf. [HTTPS-MIGRATION.md](HTTPS-MIGRATION.md) |
| **Détection/aide cloud constructeur** | au minimum : champ URL + avertissement EOL ; au mieux : aide par marque | À créer |
| **Onboarding « propre » sans serveur** | nécessaire aussi pour la review App Store (cf. [IOS-MIGRATION.md](IOS-MIGRATION.md) §8 bis) | Recouvre le wizard |

> 💡 L'**abstraction backend** est la clé : si l'UI (galerie, sync, corbeille) parle à une interface commune, ajouter le mode WebDAV ne touche pas tout le code — on écrit juste une 2ᵉ implémentation à côté de l'actuelle (Agent).

---

## 6. Décisions à trancher

- [ ] **Vise-t-on vraiment les deux modes** (WebDAV grand public **+** Agent avancé), ou on commence par un seul ?
- [ ] **Mode par défaut** de l'assistant : WebDAV + Maison ? (recommandé)
- [ ] **Cloud constructeur** : on l'aide explicitement (par marque) ou on se limite à « colle ton URL distante ici » + avertissement EOL ?
- [ ] **Dédup mode WebDAV** : nom seul, nom+taille, ou hash (plus lent) ?
- [ ] **Priorité** : sortir d'abord le mode WebDAV (débloque le grand public) ou d'abord finir iOS sur le mode Agent existant ?

---

*Voir aussi : [CONFIGURATION.md](CONFIGURATION.md) (mise en place détaillée de chaque mode), [HTTPS-MIGRATION.md](HTTPS-MIGRATION.md), [IOS-MIGRATION.md](IOS-MIGRATION.md), [WIREGUARD-MIGRATION.md](WIREGUARD-MIGRATION.md), [README.md](README.md#L15) (genèse / vision grand public).*
