Dépannage
Chaque échec affiche une ligne qui commence par error: (les scripts) ou casty: (le client).
casty ajoute souvent une ligne hint: avec l’étape suivante. Les messages ci-dessous sont copiés du
code ; les valeurs entre chevrons varient.
Étape 0 : provisionnement
Section intitulée « Étape 0 : provisionnement »Pas de fournisseur
Section intitulée « Pas de fournisseur »error: no provider: set HCLOUD_TOKEN for Hetzner or AWS credentials for AWS, or pass --host user@ip for a host you have (see --help)Exportez HCLOUD_TOKEN, configurez la CLI AWS, ou passez --host pour une machine que vous avez.
Quand des identifiants Hetzner et AWS sont tous deux définis, le script demande à la place
--provider hetzner ou --provider aws.
Pas de clé SSH
Section intitulée « Pas de clé SSH »error: no SSH public key at /home/you/.ssh/id_ed25519.pub. Create one with ssh-keygen -t ed25519, or pass --ssh-pubkey.Votre IP est introuvable
Section intitulée « Votre IP est introuvable »error: could not learn your public IP from api.ipify.org; pass --allow-ip <cidr>Le script demande votre adresse à api.ipify.org pour y restreindre SSH et les API du nœud. Passez
l’adresse vous-même, par exemple --allow-ip 198.51.100.4/32.
Aucun type de serveur disponible
Section intitulée « Aucun type de serveur disponible »warning: could not create a cpx41 server in fsn1; trying the next typeerror: none of cpx41 ccx23 cpx51 could be created in fsn1Le fournisseur n’avait aucun des types par défaut à cet emplacement, ou votre compte n’a peut-être
pas le droit de les créer. Essayez une autre --region, ou nommez un type avec --type. Chez AWS,
le message dit instance et nomme la zone.
Une autre clé sous le même nom
Section intitulée « Une autre clé sous le même nom »error: the project has a different SSH key named fc-node; pass another --name or --ssh-pubkeyHetzner détient déjà une clé appelée fc-node qui n’est pas la vôtre. Choisissez un autre --name,
ou utilisez la clé qui s’y trouve.
L’exécution s’est arrêtée à mi-chemin
Section intitulée « L’exécution s’est arrêtée à mi-chemin »node.env records what was created so far: run the same command again to finish, or add --destroyRelancez la même commande 0-provision.sh ; elle réutilise ce qui existe. L’étape 1 refuse un tel
node.env :
error: node.env has no NODE_IP: provisioning stopped half way; run ./scripts/0-provision.sh againÉtape 1 : le nœud
Section intitulée « Étape 1 : le nœud »Pas de connexion SSH
Section intitulée « Pas de connexion SSH »error: no ssh connection to root@<ip>: <what ssh said>. Check NODE_IP and NODE_SSH_KEY in node.env.Un nouveau serveur met un moment à démarrer. Si cela persiste, vérifiez que NODE_SSH_KEY dans
node.env est la moitié privée de la clé que vous avez donnée à l’étape 0, et que votre IP est
toujours celle qu’autorise le pare-feu : relancer l’étape 0 depuis votre réseau actuel met à jour les
règles Hetzner.
L’hôte ne suffit pas
Section intitulée « L’hôte ne suffit pas »error: root@<ip> does not meet the requirements aboveCode de sortie 5. Le tableau au-dessus du message porte no sur les lignes qui ont échoué : ram,
disk, docker, compose ou clock. docker missing signifie que Docker n’est pas installé.
docker no server signifie que la commande docker est là mais ne peut pas atteindre le démon
Docker : il est arrêté (sudo systemctl start docker), ou l’utilisateur SSH n’est ni root ni membre
du groupe docker.
Le nœud ne répond pas encore
Section intitulée « Le nœud ne répond pas encore »warning: the node did not return JSON from http://127.0.0.1:3381/v1/info (still starting?); waiting for itAffiché une fois, tant que le nœud ne répond pas encore, par exemple juste après son démarrage.
L’attente continue. Si elle ne se termine jamais, ./scripts/1-node.sh logs montre ce que fait le
nœud.
Pas synchronisé à temps
Section intitulée « Pas synchronisé à temps »error: not synced after 43200sLe nœud continue de se synchroniser ; seule l’attente a abandonné. Surveillez-le avec
./scripts/1-node.sh status --wait, ou attendez plus longtemps avec --timeout <seconds>.
Le tunnel ne s’établit pas
Section intitulée « Le tunnel ne s’établit pas »error: the tunnel did not come up; is something else using local port 3381 or 3383?Un autre processus occupe l’un de ces ports sur votre machine, souvent un tunnel d’une exécution
précédente ou un nœud factice local. Arrêtez-le, ou exécutez ./scripts/1-node.sh tunnel --stop,
puis réessayez.
Une version ne peut pas être fixée
Section intitulée « Une version ne peut pas être fixée »error: Snapchain <version>'s docker-compose.yml does not name farcasterxyz/snapchain:latest, so it cannot be pinnedLe fichier compose de la version nomme son image d’une autre façon, si bien que casty ne le réécrira
pas. Lancez sans --release.
Étape 2 : le client
Section intitulée « Étape 2 : le client »Pas de version pour cette machine
Section intitulée « Pas de version pour cette machine »error: no casty binary is built for <os>-<arch>; run this script with --from-source, which needs Node 22.12 or newererror: could not download casty-<os>-<arch> and SHA256SUMS from <url>: no release for <os>-<arch> there yet, or no connection. Run this script with --from-source to build casty here.Les versions contiennent linux-x64, linux-arm64 et darwin-arm64. Sur une autre machine, ou sans
connexion à GitHub, ./scripts/2-client.sh --from-source compile le client ici.
Le téléchargement ne correspond pas à sa somme de contrôle
Section intitulée « Le téléchargement ne correspond pas à sa somme de contrôle »error: the sha256 of the downloaded casty-<os>-<arch> is <hash>, not the <hash> SHA256SUMS lists; nothing was installedLe fichier n’est pas celui que la version a publié : un téléchargement interrompu, un proxy qui l’a
modifié, ou un miroir désigné dans CASTY_RELEASE_URL qui contient autre chose. Relancez le script ;
si cela se répète, compilez depuis les sources.
Node.js trop ancien
Section intitulée « Node.js trop ancien »error: Node <version> is too old; casty needs 22.12 or newer.Seul --from-source a besoin de Node. Le message continue en expliquant comment en installer un plus
récent avec fnm ou nvm. Sur Node 25 ou plus récent, corepack n’est plus inclus :
npm install -g corepack.
casty ne peut pas atteindre le nœud
Section intitulée « casty ne peut pas atteindre le nœud »casty: cannot reach the node at http://127.0.0.1:3381hint: start the tunnel with ./scripts/1-node.sh tunnel, or pass --node <url>Code de sortie 4. Le tunnel est coupé, ou le nœud est ailleurs.
Pas de fid pour la phrase de récupération
Section intitulée « Pas de fid pour la phrase de récupération »casty: no fid is registered to <address>hint: check --address-index; if your node is still syncing, pass --op-rpc <OP Mainnet RPC url>L’adresse à l’index 0 de la phrase de récupération ne détient aucun fid, du moins pour autant que le
nœud le sache. Si votre portefeuille utilise un autre compte de la même phrase, passez
--address-index. Un nœud encore en cours de synchronisation n’a peut-être pas encore vu
l’enregistrement.
Pas de stockage
Section intitulée « Pas de stockage »casty: fid <fid> has no storage units, so the network will not accept its messagesLouez d’abord une storage unit pour le fid. Voir Location de stockage.
La phrase de récupération est rejetée
Section intitulée « La phrase de récupération est rejetée »casty: a seed phrase has 12, 15, 18, 21 or 24 words, not <n>casty: word <n> is not in the BIP-39 English word listcasty: the seed phrase checksum does not matchLes messages nomment les positions des mots, jamais les mots. Vérifiez l’orthographe et l’ordre.
Le nœud refuse un message
Section intitulée « Le nœud refuse un message »casty affiche le message propre au nœud, puis une indication choisie selon ce que contient le message :
| Le message contient | Ce que cela signifie |
|---|---|
invalid signature |
la phrase de récupération ne détient pas l’adresse de custody du fid ; vérifiez --address-index |
invalid signed key request |
le fid de l’application doit être sous la custody de --app-address-index de la même phrase de récupération |
nonce is not greater than stored nonce |
un autre changement de clé est arrivé en premier ; casty init réessaie une fois tout seul |
active key cap exceeded |
le fid détient 1000 clés d’application actives ; révoquez-en avec casty key revoke |
invalid scope |
la clé d’application n’a pas le droit de signer ce type de message ; ajoutez-en une avec casty init --scopes |
Ces chaînes viennent du guide d’écriture des messages de Snapchain. Code de sortie 3.
Mauvaise phrase de passe
Section intitulée « Mauvaise phrase de passe »casty: cannot decrypt the key store: wrong passphrase or a damaged fileUne phrase de passe oubliée ne peut pas être récupérée. Supprimez keys.enc.json et exécutez
casty init pour ajouter une nouvelle clé. Les anciennes clés restent enregistrées jusqu’à ce
qu’elles expirent faute d’utilisation ; pour les supprimer plus tôt, trouvez-les avec
casty key list et exécutez casty key revoke <key> avec votre phrase de récupération.
Pas de clé d’application utilisable
Section intitulée « Pas de clé d’application utilisable »casty: no app key for fid <fid> yethint: add one with your wallet in casty web, under you, or run casty init with the seed phrasecasty init --fid n’ajoute aucune clé : approuvez-en d’abord une avec votre portefeuille.
casty: none of the app keys in <dir> is registered to fid <fid>Votre nœud ne liste pas la clé. Une clé approuvée il y a un instant compte dès que votre nœud s’est
synchronisé au-delà : casty doctor montre son retard. Sinon, la clé a expiré après son TTL faute
d’utilisation ou a été révoquée ; ajoutez-en une autre dans casty web, dans votre compte, ou avec
casty init.
Accepté mais pas fusionné
Section intitulée « Accepté mais pas fusionné »casty: <hash> was accepted but not merged within 40sLe nœud a pris le message mais casty ne l’a pas vu fusionné
(pourquoi). Cherchez-le, par exemple avec casty feed,
avant de l’envoyer de nouveau : relancer la commande envoie un nouveau message. Après casty init,
la clé est conservée, et relancer casty init renvoie le même message sans demander la phrase de
récupération.
Des numéros qui ne correspondent pas
Section intitulée « Des numéros qui ne correspondent pas »casty: no list numbered yet to take cast 2 fromcasty: the last list numbered has no cast 9casty like 2 désigne le deuxième cast de la dernière liste affichée, par casty feed,
casty mentions, casty thread ou casty web. Affichez-en une d’abord, ou désignez le cast par
<fid>:<0x hash>.
Le nœud répond 429 ou 503 à un fil
Section intitulée « Le nœud répond 429 ou 503 à un fil »casty feed et casty web demandent au nœud jusqu’à 64 pages à la fois, si bien qu’un fil de
300 comptes prend cinq allers-retours au lieu de dix-neuf. Un nœud qui répond à certaines d’entre
elles par 429 ou 503 reçoit trop de demandes à la fois : définissez CASTY_CONCURRENCY=32 (n’importe
quel nombre entier de 1 à 256) dans l’environnement de la commande, ou de casty web, et
diminuez-le jusqu’à ce que les erreurs cessent.
L’horloge est décalée
Section intitulée « L’horloge est décalée »warning: this clock and the node's differ by over a minute; nodes reject messages from the futurecasty doctor compare votre horloge à celle du nœud. Les messages horodatés de plus de 15 minutes
dans le futur sont refusés ; activez la synchronisation de l’heure sur votre machine.
Codes de sortie
Section intitulée « Codes de sortie »| Code | Scripts | casty |
|---|---|---|
| 0 | terminé | terminé |
| 1 | pas synchronisé, tunnel coupé | pas synchronisé (node status), tout autre cas |
| 2 | arguments invalides | arguments invalides |
| 3 | un prérequis manque | le nœud a refusé le message |
| 4 | le fournisseur ou l’hôte a échoué | le nœud est injoignable |
| 5 | l’hôte ne suffit pas | problème de configuration, de magasin de clés ou de phrase de récupération |