# Dépannage

Les messages ci-dessous sont ceux que l’agent affiche réellement en français (après `Erreur :` sur la sortie d’erreur, ou dans `/var/log/neverwiped.log`). L’agent suit la langue du système et parle aussi anglais et espagnol (`Error:` …) ; pour retrouver ces messages mot pour mot, relancez la commande avec `NEVERWIPED_LANG=fr`. Commencez toujours par :

```sh
neverwiped status
tail -n 50 /var/log/neverwiped.log
```

## Installation (install.sh)

Le script d’installation écrit ses messages en anglais, préfixés par `neverwiped install.sh:`.

| Message | Cause | Solution |
|---|---|---|
| `only Linux is supported.` | système autre que Linux | utilisez un serveur Linux |
| `unsupported architecture …` | ni amd64 ni arm64 | non pris en charge |
| `Linux kernel … is too old (3.2 or newer is required).` | noyau antérieur à 3.2 (CentOS 6 et plus ancien) | système avec Linux 3.2 ou plus (RHEL/CentOS 7+, Debian 8+, Ubuntu 14.04+) |
| `run as root, for example: curl -fsSL … \| sudo sh` | lancé sans root | `curl -fsSL https://neverwiped.com/install.sh \| sudo sh -s -- --api-key … --yes` |
| `curl or wget is required.` | ni curl ni wget | `apt install curl`, `dnf install curl` ou `apk add curl` |
| `sha256sum or openssl is required to verify the download.` | aucun outil d’empreinte | installez `coreutils` ou `openssl` |
| `download failed: …` | plateforme injoignable depuis le serveur | vérifiez la sortie HTTPS vers https://neverwiped.com (pare-feu, proxy, DNS) |
| `checksum mismatch for neverwiped-linux-… Nothing was installed.` | fichier téléchargé altéré (proxy, coupure) | relancez ; si cela persiste, contactez le support |
| `no published checksum for linux-…; contact support.` | binaire non publié côté plateforme | contactez le support |

## Installation (neverwiped install)

| Message | Cause | Solution |
|---|---|---|
| `clé d’API manquante : ajoutez --api-key CLÉ (créez-la dans votre espace client, rubrique « Clés d’API »)` | mode `--yes` sans clé | ajoutez `--api-key nw_acc_…` ou `NEVERWIPED_API_KEY` |
| `enregistrement du serveur : Clé d’API invalide ou révoquée. Créez une clé dans votre espace client, rubrique « Clés d’API ».` | clé mal copiée, révoquée, **adresse e-mail du compte pas encore confirmée**, ou compte désactivé | confirmez l’e-mail (lien reçu à l’inscription), puis créez une nouvelle clé |
| `enregistrement du serveur : Cette opération demande une clé d’API de compte.` | clé d’agent (`nw_agt_…`) utilisée à la place d’une clé de compte | utilisez une clé `nw_acc_…` |
| `enregistrement du serveur : Aucun abonnement actif sur ce compte. Choisissez une formule dans votre espace client.` | pas d’abonnement ni d’essai | choisissez une formule |
| `enregistrement du serveur : Votre abonnement ne permet pas de nouvelles sauvegardes (essai terminé ou suspendu).` | essai terminé, impayé, résiliation | réglez ou choisissez une formule |
| `enregistrement du serveur : Votre formule … autorise N serveur(s). Supprimez un serveur ou passez à la formule supérieure.` | nombre de serveurs atteint | supprimez un ancien serveur dans l’espace client ou changez de formule |
| `enregistrement du serveur : Trop d’enregistrements de serveurs, réessayez plus tard.` | trop d’essais rapprochés | réessayez plus tard |
| `enregistrement du serveur : Le stockage est momentanément indisponible. Réessayez dans quelques minutes.` | stockage en maintenance | réessayez plus tard |
| `plateforme injoignable (https://neverwiped.com) : …` | réseau, DNS, pare-feu sortant | `curl -I https://neverwiped.com` depuis le serveur |
| `téléchargement de restic : …` ou `téléchargement de restic : HTTP 404 (…)` | GitHub injoignable depuis le serveur | ouvrez la sortie vers `github.com` et `objects.githubusercontent.com`, ou utilisez un miroir : `NEVERWIPED_RESTIC_BASE_URL=https://miroir/… neverwiped install …` |
| `empreinte SHA-256 de restic incorrecte (attendue …, obtenue …) : téléchargement refusé` | fichier altéré ou miroir incorrect | vérifiez le miroir, relancez |
| `accès au stockage : …` | https://storage.neverwiped.com injoignable (port 443 sortant fermé ?) | `curl -I https://storage.neverwiped.com` depuis le serveur |
| `installation interrompue, rien n’a été enregistré. Ajustez le plan avec --include / --exclude / --no-databases / --no-docker puis relancez « neverwiped install »` | plan refusé | relancez avec les options voulues |
| `aucune réponse possible (entrée non interactive) : relancez avec --yes pour confirmer sans question` | pas de terminal pour répondre | ajoutez `--yes` |
| `Avertissement : planification automatique impossible : ni systemd ni cron n’est disponible : planifiez vous-même « /usr/local/bin/neverwiped backup --scheduled » (…)` | ni systemd ni cron | installez cron (`apt install cron`) puis relancez `neverwiped install --yes`, ou planifiez la commande indiquée |
| `les sauvegardes sont suspendues pour ce compte (abonnement inactif)` | abonnement inactif au moment de la première sauvegarde | réglez la situation dans l’espace client |
| `neverwiped doit être lancé en root (par exemple : sudo neverwiped …)` | utilisateur non root | `sudo neverwiped …` |

## Sauvegardes

| Message | Cause | Solution |
|---|---|---|
| `neverwiped n’est pas encore configuré sur ce serveur : lancez « neverwiped install »` | agent non installé, ou `/etc/neverwiped/config.json` effacé | `neverwiped install --api-key … --yes` |
| `sauvegardes suspendues pour ce compte (abonnement inactif) ; la restauration reste possible` | essai terminé, impayé après la période de grâce, résiliation effective | régularisez dans l’espace client ; les sauvegardes reprennent d’elles-mêmes |
| `la plateforme refuse la sauvegarde : Les nouvelles sauvegardes sont suspendues pour ce compte (abonnement inactif). La restauration reste possible.` | idem, vu par la plateforme | idem |
| `… 403 Forbidden … (stockage refusé : quota de votre formule atteint ou abonnement suspendu ; voir votre espace client)` | quota atteint (ou suspension) | `neverwiped status` (ligne `Espace`) ; excluez des fichiers ou changez de formule |
| `Ce serveur a été supprimé de votre compte.` | serveur supprimé dans l’espace client ou agent désinstallé | réinstallez : `rm -f /etc/neverwiped/config.json` puis `neverwiped install --api-key … --yes` (un nouveau dépôt est créé) |
| `une autre opération neverwiped est déjà en cours` | sauvegarde planifiée ou restauration en cours | attendez la fin (`tail -f /var/log/neverwiped.log`) |
| `rien à sauvegarder : aucun chemin du plan n’existe` | dossiers du plan supprimés | relancez `neverwiped install --yes` pour recalculer le plan |
| `export postgresql toutes les bases : …` (ou `export mysql conteneur … : …`), journal `ERREUR export … : …` | export de base impossible (droits, base arrêtée) | testez `runuser -u postgres -- pg_dumpall > /dev/null` ou `mysqldump --all-databases > /dev/null` ; la sauvegarde est marquée en échec tant que l’export échoue |
| `export mysql … : export interrompu : le fichier ne se termine pas par « -- Dump completed »` | export MySQL/MariaDB coupé avant la fin (serveur arrêté ou redémarré, disque plein, connexion perdue) | `df -h /var/lib/neverwiped`, journal de la base, puis `neverwiped backup now` ; un export partiel n’est jamais gardé comme bon |
| `Avertissement : N table(s) MySQL/MariaDB hors InnoDB …` | tables MyISAM ou Aria : copiées à leur tour, pas dans l’instantané du reste | la sauvegarde réussit ; convertissez-les (`ALTER TABLE base.table ENGINE=InnoDB`), voir « Restaurer une base de données » |
| `docker est introuvable` | Docker désinstallé depuis l’installation | relancez `neverwiped install --yes` (ou `--no-docker`) |
| `volume Docker … : volume introuvable : …` | volume supprimé | relancez `neverwiped install --yes` |
| `Avertissement : N fichier(s) illisible(s), par exemple …` | fichiers non lisibles (droits, fichiers supprimés pendant la sauvegarde) | sans gravité si ponctuel ; excluez-les sinon |
| `Nettoyage des anciennes sauvegardes non effectué : …` | nettoyage hebdomadaire impossible cette fois | sans conséquence immédiate, il sera retenté ; si cela dure, contactez le support |
| `Avertissement : compte rendu non transmis à la plateforme : …` | plateforme injoignable après la sauvegarde | la sauvegarde est faite ; l’espace client se mettra à jour à la suivante |
| `export vide` | l’outil d’export n’a rien produit (base vide ou droits insuffisants) | vérifiez l’export à la main (commandes ci-dessus) |
| `restic n’a pas produit de résumé` | restic interrompu (mémoire, disque plein, signal) | `df -h /var/cache /var/lib/neverwiped`, `free -m`, puis `neverwiped backup now` |
| `politique de conservation vide : nettoyage annulé par sécurité` | la plateforme n’a pas transmis de durée de conservation | rien n’est supprimé ; contactez le support si cela se répète |
| `Trop de requêtes.` | limite de débit de l’API | attendez quelques minutes |

## Restauration

| Message | Cause | Solution |
|---|---|---|
| `aucune sauvegarde ne correspond à "…" ; dates disponibles : …` | date ou identifiant inexistant | choisissez une des dates listées |
| `identifiant "…" ambigu` | préfixe trop court | donnez plus de caractères (voir `neverwiped list`) |
| `aucune sauvegarde disponible` | aucune sauvegarde réussie | `neverwiped backup now` |
| `désinstallation annulée` | confirmation de `uninstall` refusée | `neverwiped uninstall --yes` |
| `restauration annulée, rien n’a été modifié` | confirmation refusée, ou mot d’une autre langue (seul le mot affiché est accepté : `RESTAURER`, `RESTORE` en anglais, `RESTAURAR` en espagnol) | relancez et tapez le mot affiché, ou ajoutez `--target` |
| `aucune réponse possible (entrée non interactive) : relancez avec --yes pour confirmer sans question` | restauration en place sans terminal | `--target DOSSIER`, ou `--yes` si l’écrasement est voulu |
| `utilisation : neverwiped restore <date\|id\|latest> [--target DOSSIER] [--include CHEMIN] [--yes]` | argument manquant | indiquez une date, un identifiant ou `latest` |

## Serveur perdu (neverwiped recover)

| Message | Cause | Solution |
|---|---|---|
| `ce serveur a déjà une configuration neverwiped (…)` | `recover` lancé sur un serveur où l’agent est installé | sur ce serveur, `neverwiped list` et `neverwiped restore` suffisent |
| `un fichier de clé existe déjà (/etc/neverwiped/repo.key)` | reste d’une ancienne installation | déplacez le fichier (`mv /etc/neverwiped/repo.key /root/`) puis relancez |
| `clé de récupération manquante : ajoutez --recovery-key-file FICHIER ou la variable NEVERWIPED_RECOVERY_KEY` | mode `--yes` sans clé de récupération | indiquez le fichier qui la contient |
| `ce compte a plusieurs serveurs : choisissez-en un avec --server ID ou NOM (…)` | mode `--yes` et plusieurs serveurs | ajoutez `--server` avec un des noms listés |
| `aucun serveur … sur ce compte ; serveurs : …` | nom ou identifiant inconnu | choisissez dans la liste affichée |
| `la clé de récupération n’ouvre pas les sauvegardes de … (clé erronée ?)` | clé mal recopiée ou d’un autre serveur | vérifiez la clé (6 groupes de 6 caractères séparés par des tirets) et relancez `neverwiped recover` |
| `les sauvegardes de ce serveur ont été supprimées (serveur retiré du compte, données effacées) : rien à récupérer` | serveur supprimé dans l’espace client, ou données effacées après impayé | aucune récupération possible |
| `Serveur inconnu sur ce compte.` | le serveur appartient à un autre compte | utilisez une clé d’API du bon compte |
| `Cette opération demande une clé d’API de compte.` | clé d’agent (`nw_agt_…`) utilisée | utilisez une clé `nw_acc_…` |

## Messages à l’équipe (neverwiped feedback)

| Message | Solution |
|---|---|
| `message vide : écrivez-le après la commande (neverwiped feedback "…") ou sur l’entrée standard` | donnez le message |
| `message trop long (N caractères, 5000 au maximum)` | raccourcissez |
| `neverwiped n’est pas installé sur ce serveur : ajoutez --api-key CLÉ (clé de compte, espace client > Clés d’API)` | ajoutez `--api-key nw_acc_…` |
| `type inconnu "…" (bug, idea, help ou other)` | `--kind bug`, `idea`, `help` ou `other` |

## Options

| Message | Solution |
|---|---|
| `option inconnue --…` | voir https://docs.neverwiped.com/commandes |
| `l’option --… attend une valeur` | `--target /chemin`, `--api-key nw_acc_…` |
| `commande inconnue "…" (voir « neverwiped help »)` | commandes : `install`, `estimate`, `status`, `limits`, `backup now`, `list`, `restore`, `recover`, `feedback`, `uninstall`, `version`, `help` |
| `langue non prise en charge "…" (en, fr ou es)` | `--lang fr`, `--lang en` ou `--lang es` |
| `utilisation : neverwiped backup now` | écrivez `backup now` |
| `utilisation : neverwiped limits [--limit-upload DÉBIT\|off] [--limit-cpus N\|off] [--priority low\|normal] [--json]` | argument inattendu : `limits` ne prend que des options |
| `débit invalide "…" : donnez un nombre et une unité, par exemple 20mbit, 800kbit, 2MB ou 500KiB (ou off pour ne pas limiter)` | ajoutez l’unité : `--limit-upload 20mbit` (bits) ou `--limit-upload 2MB` (octets) |
| `le débit "…" est sous 1 KiB/s (8 kbit/s), la plus petite limite acceptée par restic` | donnez au moins `8kbit` ; en pratique quelques Mbit/s |
| `nombre de cœurs invalide "…" : donnez un entier de 1 à …, ou off` | `--limit-cpus 1` ; `nproc` affiche le nombre de cœurs |
| `priorité invalide "…" : low ou normal` | `--priority low` ou `--priority normal` |
| `Note : une sauvegarde lancée par le minuteur systemd est arrêtée au bout de 12 heures. …` (à l’installation) | à la limite d’envoi, la première sauvegarde peut dépasser 12 h : `neverwiped limits --limit-upload off`, `neverwiped backup now`, puis remettez la limite |

## Vérifier la planification

```sh
systemctl list-timers neverwiped-backup.timer   # systemd
cat /etc/cron.d/neverwiped                      # cron
crontab -l | grep neverwiped                    # crontab de root (Alpine, BusyBox)
```

Si rien n’apparaît, relancez `neverwiped install --yes`.

## Toujours bloqué ?

Écrivez au support depuis l’adresse de votre compte en joignant la sortie de `neverwiped status` et les 50 dernières lignes de `/var/log/neverwiped.log`. Ne joignez jamais `/etc/neverwiped/config.json`, `repo.key` ni votre clé de récupération.

## Récupération d’un serveur perdu et avis (`recover`, `feedback`)

| Message | Cause et solution |
|---|---|
| `utilisation : neverwiped recover [--api-key CLÉ] [--server ID\|NOM] [--recovery-key-file FICHIER] [--yes] [--api-url URL]` | Argument inattendu : `recover` ne prend que des options. |
| `clé d’API manquante : ajoutez --api-key CLÉ (clé de compte, créée dans votre espace client, rubrique « Clés d’API »)` | Mode non interactif sans clé : créez une clé de compte et passez-la avec `--api-key` (ou `NEVERWIPED_API_KEY`). |
| `clé de récupération vide` | Le fichier de `--recovery-key-file` (ou `NEVERWIPED_RECOVERY_KEY`) est vide : collez la clé notée à l’installation. |
| `aucun serveur sur ce compte : rien à récupérer (pour protéger ce serveur, lancez « neverwiped install »)` | La clé appartient à un compte sans serveur : vérifiez le compte, ou installez normalement. |
| `récupération annulée, rien n’a été modifié` | Vous avez répondu non à la confirmation : l’ancien serveur garde ses accès. |
| `message vide : écrivez-le après la commande (neverwiped feedback "…") ou sur l’entrée standard` | `feedback` sans texte. |
| `rien n’a été envoyé` | Vous avez refusé l’envoi de l’avis après l’aperçu. |

## Autres messages fixes de l’agent

Ces messages s’affichent tels quels. Les messages d’utilisation rappellent la syntaxe exacte de la commande : relancez-la avec les bonnes options. Détails dans la [référence des commandes](https://docs.neverwiped.com/commandes).

- utilisation : neverwiped check [--read 5%|1/26|2G] [--full]
- utilisation : neverwiped restore <date|id|latest> [--target DOSSIER] [--include CHEMIN] [--yes] [--plan | --approve CODE]
- le code d’accord ne correspond pas à cette restauration (la sauvegarde, le dossier ou les chemins diffèrent du plan approuvé) ; rien n’a été écrit. Relancez la commande avec --plan au lieu de --approve et demandez un nouvel accord
- utilisation : neverwiped recover [--api-key CLÉ] [--server ID|NOM] [--recovery-key-file FICHIER] [--repo-key] [--yes] [--api-url URL]
- utilisation : neverwiped recovery-key check [--recovery-key-file FICHIER] | neverwiped recovery-key new [--yes]
- annulé, rien n’a été modifié
- choisissez --keep-backups ou --delete-backups, pas les deux
- une sauvegarde, une restauration ou une vérification est en cours : attendez sa fin (neverwiped status), puis relancez la désinstallation. Rien n’a été retiré.
- la vérification a trouvé des erreurs dans les sauvegardes de ce serveur (l’équipe NeverWiped est prévenue)

Serveur MCP (`neverwiped mcp`, pour les assistants IA) : ses messages sont en anglais, la langue des outils MCP.

```text
the MCP server only accepts an API token (nw_tok_…, client area > API keys > API tokens), never an account or agent key
server_id must be a server ID (UUID), as neverwiped_list_servers shows it
run history needs an API token with the runs:read scope (NEVERWIPED_API_TOKEN or --token-file); neverwiped_status shows this server's last backup without one
this MCP server runs with --read-only
this configuration belongs to another machine (copied server); run `neverwiped status` on the server
another NeverWiped operation (backup, check or restore) is running now; check neverwiped_status later
backups are suspended for this server (subscription); the account owner can fix it in the client area
usage: neverwiped mcp [--read-only] [--token-file FILE]
```
