# Synchroniser automatiquement les sauvegardes Yuzu avec Syncthing entre PC Windows, Synology NAS et Odin 2 Portal

**Dernière mise à jour :** 24/06/2026

## Objectif

Mettre en place une synchronisation **automatique** et **bidirectionnelle** des sauvegardes de jeux Nintendo Switch émulés via **Yuzu**, entre :

- un **PC Windows** (Yuzu)
- un **NAS Synology** servant de hub central Syncthing
- une **Odin 2 Portal Android** (Yuzu Android)

Le cas documenté ici est **Zelda Tears of the Kingdom (TOTK)**, mais la méthode est réutilisable pour n’importe quel autre jeu.

---

## Architecture cible

```
PC Windows (Yuzu)  <---->  NAS Synology (Syncthing)  <---->  Odin 2 Portal (Yuzu Android)

```

Le NAS joue le rôle de **hub central** :

- le PC synchronise ses sauvegardes vers le NAS
- l’Odin synchronise ses sauvegardes vers le NAS
- le NAS redistribue les changements aux autres appareils

Cette architecture évite de dépendre d’un lien direct PC ↔ Odin et permet de conserver une copie persistante des sauvegardes sur le NAS.

---

## Principe de fonctionnement

On ne synchronise **pas** tout le dossier `nand/user/save` de Yuzu. On synchronise uniquement **le dossier de sauvegarde du jeu concerné**.

Pour TOTK, le dossier de sauvegarde est celui du **Title ID** :

```
0100F2C0115B6000

```

Chaque appareil possède son propre chemin Yuzu local, mais Syncthing traite ces chemins comme **le même dossier logique**.

---

## Chemins utilisés dans cette documentation

### PC Windows (Yuzu)

```
C:\Users\nicolas.ancre.NIKOS-GAMES\AppData\Roaming\yuzu\nand\user\save\0000000000000000\97BCE075333CA0C0FD835EA83D24B424\0100F2C0115B6000

```

### NAS Synology (stockage réel DSM)

```
/volume1/hubiC/Jeux/Switch/backup/zelda-totk

```

### Odin 2 Portal (Yuzu Android)

```
Android/data/com.andromeda.androbench2/files/nand/user/save/0000000000000000/FABB2587AE67576FBE3369E49255EE18/0100F2C0115B6000

```

---

## Prérequis

- **PC Windows** avec Yuzu et Syncthing installés
- **NAS Synology** avec accès SSH + Docker / Container Manager
- **Odin 2 Portal** avec Yuzu Android + **Syncthing-Fork**
- un réseau local fonctionnel entre les 3 appareils

---

## Règle d’or

<div id="bkmrk-ne-pas-jouer-au-m%C3%AAme" style="border: 1px solid #d9534f; padding: 12px; border-radius: 6px; background: #fff5f5;">**Ne pas jouer au même jeu sur deux appareils en même temps.**  
Syncthing sait synchroniser des modifications, mais si le même jeu est lancé et sauvegardé sur deux appareils différents en parallèle, des conflits peuvent apparaître.</div>---

## Étape 1 — Identifier le dossier de sauvegarde du jeu

### Sur PC Yuzu

1. Ouvrir Yuzu
2. Faire un clic droit sur le jeu
3. Choisir **Open Save Data Location**
4. Noter le chemin du dossier ouvert

Pour TOTK, le dossier obtenu est :

```
C:\Users\nicolas.ancre.NIKOS-GAMES\AppData\Roaming\yuzu\nand\user\save\0000000000000000\97BCE075333CA0C0FD835EA83D24B424\0100F2C0115B6000

```

### Sur Yuzu Android

Le dossier de sauvegarde est dans l’arborescence de l’application, sous :

```
Android/data/com.andromeda.androbench2/files/nand/user/save/0000000000000000/FABB2587AE67576FBE3369E49255EE18/0100F2C0115B6000

```

**Important :** sur Android, l’accès à `Android/data` peut nécessiter un explorateur de fichiers compatible ou le sélecteur de dossiers SAF utilisé par Syncthing-Fork.

---

## Étape 2 — Préparer le dossier de sauvegarde sur le NAS

Créer un dossier dédié au jeu sur le NAS :

```
/volume1/hubiC/Jeux/Switch/backup/zelda-totk

```

Ce dossier servira de réplique centrale des sauvegardes TOTK.

---

## Étape 3 — Déployer Syncthing sur le Synology

### Docker Compose Syncthing

Créer un dossier de travail, par exemple :

```
/volume1/docker/syncthing

```

Puis créer le fichier `docker-compose.yml` suivant :

```yaml
services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    hostname: nas-syncthing
    network_mode: host
    restart: unless-stopped
    environment:
      - PUID=1026
      - PGID=100
      - UMASK=002
    volumes:
      - /volume1/docker/syncthing:/var/syncthing
      - /volume1/hubiC/Jeux/Switch/backup/zelda-totk:/sync/zelda-totk

```

### Pourquoi `network_mode: host` ?

Parce que Syncthing fonctionne mieux ainsi sur un réseau local pour la découverte des appareils et les connexions directes.

---

## Étape 4 — Corriger le problème de certificats Docker sur Synology (si nécessaire)

Dans notre cas, Docker sur le Synology ne pouvait plus tirer d’images depuis Docker Hub à cause de l’absence du bundle CA :

```
/etc/ssl/certs/ca-certificates.crt

```

### Symptômes

```
Error response from daemon: Get "https://registry-1.docker.io/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority

```

### Correction

En root sur le NAS :

```bash
sudo -i

mkdir -p /root/backup-ca-fix-20260624
cp -a /etc/ssl /root/backup-ca-fix-20260624/etc-ssl-backup

cd /tmp
wget --no-check-certificate https://curl.se/ca/cacert.pem -O cacert.pem

mkdir -p /etc/ssl/certs
cp /tmp/cacert.pem /etc/ssl/certs/ca-certificates.crt
chmod 644 /etc/ssl/certs/ca-certificates.crt

```

### Vérification

```bash
curl -I https://registry-1.docker.io/v2/

```

Le bon résultat est un `HTTP/2 401` ou un code similaire **sans erreur TLS**.

---

## Étape 5 — Corriger les permissions du conteneur Syncthing

Le conteneur Syncthing doit pouvoir écrire :

- dans son dossier de configuration : `/volume1/docker/syncthing`
- dans le dossier de sauvegarde du jeu : `/volume1/hubiC/Jeux/Switch/backup/zelda-totk`

Dans notre cas, l’utilisateur Synology `n.ancre` possède :

```
uid=1026
gid=100

```

### Commandes de correction

```bash
sudo -i

chown -R 1026:100 /volume1/docker/syncthing
chown -R 1026:100 /volume1/hubiC/Jeux/Switch/backup/zelda-totk

chmod -R u+rwX,g+rwX /volume1/docker/syncthing
chmod -R u+rwX,g+rwX /volume1/hubiC/Jeux/Switch/backup/zelda-totk

```

---

## Étape 6 — Démarrer Syncthing sur le NAS

```bash
cd /volume1/docker/syncthing
docker compose down
docker compose up -d

```

### Vérifier le conteneur

```bash
docker logs syncthing --tail 50

```

### Vérifier que le montage du dossier de sauvegarde est bon

```bash
docker exec -it syncthing sh
ls /sync/
ls /sync/zelda-totk/

```

Dans notre cas, on devait voir des fichiers comme :

```
album
option.sav
slot_00
slot_01
slot_02
slot_03
slot_04
slot_05
storage

```

---

## Étape 7 — Configurer la synchronisation PC ↔ NAS

### 1. Ajouter le NAS comme appareil dans Syncthing sur le PC

Récupérer l’ID du NAS dans son interface web Syncthing, puis l’ajouter dans Syncthing côté PC.

### 2. Créer le dossier partagé sur le PC

- **Folder Label :** `TOTK Save`
- **Folder ID :** `totk-save`
- **Folder Type :** `Send & Receive`
- **Folder Path :**

```
C:\Users\nicolas.ancre.NIKOS-GAMES\AppData\Roaming\yuzu\nand\user\save\0000000000000000\97BCE075333CA0C0FD835EA83D24B424\0100F2C0115B6000

```

Partager ce dossier avec le NAS.

### 3. Accepter le dossier côté NAS

Quand le NAS reçoit la proposition de dossier, utiliser les paramètres suivants :

- **Folder Label :** `TOTK Save`
- **Folder ID :** `totk-save`
- **Folder Type :** `Send & Receive`
- **Folder Path côté conteneur :**

```
/sync/zelda-totk

```

**Important :** dans l’interface Syncthing du conteneur, il faut utiliser le chemin **vu par le conteneur**, pas le chemin DSM brut.

### 4. Activer le versioning sur le NAS

Sur le dossier `TOTK Save` côté NAS, activer un versioning :

- **Staggered File Versioning** recommandé
- ou à défaut **Trash Can File Versioning**

### 5. Vérification

Le dossier doit finir en état **Up to Date / À jour** sur :

- le PC
- le NAS

---

## Étape 8 — Configurer la synchronisation Odin ↔ NAS

### 1. Sauvegarde de sécurité sur l’Odin

Avant toute chose, faire une copie du dossier de sauvegarde Android vers un emplacement de backup.

### 2. Installer et ouvrir Syncthing-Fork

Récupérer l’ID de l’appareil Odin dans Syncthing-Fork.

### 3. Ajouter l’Odin comme appareil dans Syncthing sur le NAS

Depuis le NAS, ajouter un appareil distant avec l’ID de l’Odin, puis partager le dossier `TOTK Save` avec lui.

### 4. Accepter le NAS sur l’Odin

Dans Syncthing-Fork, accepter le NAS comme appareil.

### 5. Accepter le dossier partagé sur l’Odin

Quand l’Odin reçoit le dossier :

- **Folder Label :** `TOTK Save`
- **Folder ID :** `totk-save`
- **Folder Type :** `Send & Receive`

### 6. Sélectionner le bon dossier local sur l’Odin

Choisir comme chemin local :

```
Android/data/com.andromeda.androbench2/files/nand/user/save/0000000000000000/FABB2587AE67576FBE3369E49255EE18/0100F2C0115B6000

```

Le plus fiable est de le sélectionner via le sélecteur de dossiers Android / SAF si Syncthing-Fork le propose.

### 7. Autoriser l’accès au dossier

Valider toutes les permissions Android demandées pour l’accès au dossier `Android/data/...`.

### 8. Vérifier la première synchronisation

Après association au NAS, le dossier doit finir **À jour / Up to Date** sur :

- le PC
- le NAS
- l’Odin

---

## Étape 9 — Vérifier le fonctionnement

### Test 1 — PC → NAS → Odin

1. Lancer TOTK sur le PC
2. Créer une nouvelle sauvegarde
3. Fermer Yuzu
4. Attendre la synchro Syncthing
5. Vérifier que le NAS passe à jour
6. Vérifier que l’Odin passe à jour
7. Lancer TOTK sur l’Odin et confirmer que la nouvelle sauvegarde est visible

### Test 2 — Odin → NAS → PC

1. Lancer TOTK sur l’Odin
2. Sauvegarder
3. Fermer Yuzu Android
4. Attendre la synchro vers le NAS
5. Vérifier que le PC passe à jour
6. Lancer TOTK sur le PC et confirmer que la nouvelle sauvegarde est visible

---

## Comment ajouter un nouveau jeu plus tard

La logique est toujours la même :

1. identifier le dossier de sauvegarde du jeu sur le PC
2. identifier le dossier de sauvegarde du jeu sur l’Odin
3. créer un dossier dédié sur le NAS
4. monter ce dossier dans le conteneur Syncthing
5. créer un nouveau partage Syncthing avec un nouvel ID
6. associer ce partage au PC, au NAS et à l’Odin

---

## Exemple de méthode pour ajouter un nouveau jeu

### 1. Trouver le dossier de sauvegarde sur le PC

Dans Yuzu PC :

1. clic droit sur le jeu
2. **Open Save Data Location**

### 2. Créer le dossier dédié sur le NAS

Exemple pour Mario Kart 8 Deluxe :

```
/volume1/hubiC/Jeux/Switch/backup/mario-kart-8-deluxe

```

### 3. Ajouter le volume dans le `docker-compose.yml` du NAS

Exemple :

```yaml
services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    hostname: nas-syncthing
    network_mode: host
    restart: unless-stopped
    environment:
      - PUID=1026
      - PGID=100
      - UMASK=002
    volumes:
      - /volume1/docker/syncthing:/var/syncthing
      - /volume1/hubiC/Jeux/Switch/backup/zelda-totk:/sync/zelda-totk
      - /volume1/hubiC/Jeux/Switch/backup/mario-kart-8-deluxe:/sync/mario-kart-8-deluxe

```

Après modification :

```bash
cd /volume1/docker/syncthing
docker compose down
docker compose up -d

```

### 4. Créer un nouveau dossier partagé Syncthing

Exemple :

- **Folder Label :** `Mario Kart 8 Save`
- **Folder ID :** `mk8-save`

### 5. Côté PC

Créer le partage sur le chemin exact du save Mario Kart 8.

### 6. Côté NAS

Accepter le partage en pointant vers :

```
/sync/mario-kart-8-deluxe

```

### 7. Côté Odin

Associer le même partage au dossier de sauvegarde Mario Kart 8 côté Android.

---

## Convention recommandée pour les nouveaux jeux

<table border="1" cellpadding="6" cellspacing="0" id="bkmrk-%C3%89l%C3%A9ment-convention-r"><thead><tr><th>Élément</th><th>Convention recommandée</th><th>Exemple TOTK</th></tr></thead><tbody><tr><td>Dossier NAS réel</td><td>`/volume1/hubiC/Jeux/Switch/backup/<nom-jeu>`</td><td>`/volume1/hubiC/Jeux/Switch/backup/zelda-totk`</td></tr><tr><td>Chemin conteneur</td><td>`/sync/<nom-jeu>`</td><td>`/sync/zelda-totk`</td></tr><tr><td>Folder Label Syncthing</td><td>`<Nom du jeu> Save`</td><td>`TOTK Save`</td></tr><tr><td>Folder ID Syncthing</td><td>`<slug-court>-save`</td><td>`totk-save`</td></tr></tbody></table>

---

## Bonnes pratiques

- toujours faire une sauvegarde manuelle avant la première synchro d’un nouveau jeu
- utiliser **un dossier Syncthing par jeu**
- activer le **versioning** sur le NAS
- ne pas lancer le même jeu en même temps sur deux appareils
- tester le flux **PC → NAS → Odin** puis **Odin → NAS → PC** après chaque nouveau jeu ajouté

---

## Dépannage

### Erreur : `permission denied` sur le NAS

Vérifier :

- le `PUID` / `PGID` du conteneur
- les permissions du dossier réel DSM
- les droits sur `/volume1/docker/syncthing` et sur le dossier du jeu

### Erreur : le dossier Syncthing NAS ne doit pas pointer vers `/volume1/...`

Dans l’interface Syncthing **du conteneur**, le chemin du dossier doit être le **chemin monté dans le conteneur** :

```
/sync/zelda-totk

```

et non le chemin DSM brut.

### Erreur TLS Docker Hub sur Synology

Vérifier la présence de :

```
/etc/ssl/certs/ca-certificates.crt

```

et reconstruire le bundle CA si nécessaire.

### Syncthing Android n’arrive pas à écrire dans `Android/data`

Réassocier le dossier via le sélecteur Android / SAF et revérifier les permissions accordées à Syncthing-Fork.

---

## Résultat attendu

À la fin, la sauvegarde TOTK est synchronisée automatiquement entre :

- le PC de jeu
- le NAS Synology
- l’Odin 2 Portal

Le joueur peut :

- jouer sur le PC en streaming Moonlight / Sunshine
- reprendre la partie sur l’Odin en local
- puis revenir sur le PC plus tard

sans avoir à copier les sauvegardes manuellement.