# Problème : Erreur DNS resolution pour NIP-95 upload ## Date 2025-01-27 ## Problème L'API NIP-95 upload retourne une erreur `getaddrinfo ENOTFOUND void.cat` lors des tentatives d'upload, indiquant que le serveur Node.js ne peut pas résoudre le nom de domaine. ## Symptômes - Erreur : `Failed to upload to all endpoints: {"error":"Failed to connect to upload endpoint: getaddrinfo ENOTFOUND void.cat"}` - Code d'erreur Node.js : `ENOTFOUND` ou `EAI_AGAIN` - Les uploads NIP-95 échouent avec une erreur de résolution DNS ## Root cause Le serveur Node.js qui exécute l'API Next.js ne peut pas résoudre le nom de domaine `void.cat` (ou d'autres endpoints NIP-95). Cela peut être dû à : 1. **Problème de DNS sur le serveur** : Le serveur n'a pas accès à un serveur DNS fonctionnel 2. **Pas d'accès Internet** : Le serveur n'a pas de connexion Internet ou est derrière un pare-feu qui bloque les requêtes sortantes 3. **Configuration réseau incorrecte** : Les paramètres réseau du serveur sont mal configurés 4. **Problème de résolution DNS temporaire** : Problème temporaire avec le serveur DNS ## Impact - Impossible d'uploader des fichiers via NIP-95 - Les utilisateurs ne peuvent pas publier d'articles avec des médias - Fonctionnalité d'upload complètement non fonctionnelle ## Correctifs 1. **Amélioration de la gestion d'erreur DNS** : Détection spécifique des erreurs DNS avec messages d'erreur plus clairs 2. **Ajout d'un timeout** : Timeout de 30 secondes pour éviter que les requêtes restent bloquées indéfiniment 3. **Amélioration des logs** : Logs plus détaillés pour diagnostiquer les problèmes DNS ## Modifications - **Fichier modifié** : `pages/api/nip95-upload.ts` - **Ajout de timeout** : `timeout: 30000` dans les options de requête - **Détection spécifique des erreurs DNS** : Vérification des codes d'erreur `ENOTFOUND` et `EAI_AGAIN` - **Messages d'erreur améliorés** : Messages plus clairs pour les erreurs DNS avec suggestions de diagnostic - **Logs améliorés** : Logs incluant le hostname, le code d'erreur et des suggestions ## Modalités de déploiement 1. Les modifications sont dans le code source 2. Rebuild de l'application : `npm run build` 3. Redémarrage du service Next.js 4. Aucune dépendance supplémentaire nécessaire ## Modalités d'analyse Pour diagnostiquer le problème DNS : 1. **Vérifier la résolution DNS depuis le serveur** : ```bash # Depuis le serveur nslookup void.cat # ou dig void.cat # ou host void.cat ``` 2. **Vérifier la connectivité réseau** : ```bash # Tester la connexion HTTPS curl -v https://void.cat/upload # ou wget --spider https://void.cat/upload ``` 3. **Vérifier les logs du serveur Node.js** : - Chercher les erreurs `ENOTFOUND` ou `EAI_AGAIN` - Vérifier les logs avec le hostname et les suggestions 4. **Vérifier la configuration DNS du serveur** : ```bash # Vérifier les serveurs DNS configurés cat /etc/resolv.conf # ou sur systemd systemd-resolve --status ``` 5. **Tester depuis le conteneur/service** : ```bash # Si le service tourne dans un conteneur Docker docker exec nslookup void.cat docker exec curl -v https://void.cat/upload ``` ## Solutions possibles ### Si le problème est la résolution DNS 1. Vérifier que le serveur a accès à un serveur DNS fonctionnel 2. Configurer des serveurs DNS fiables (par exemple 8.8.8.8, 1.1.1.1) 3. Vérifier que `/etc/resolv.conf` contient des serveurs DNS valides ### Si le problème est l'accès Internet 1. Vérifier que le serveur a une connexion Internet fonctionnelle 2. Vérifier les règles de pare-feu qui pourraient bloquer les requêtes sortantes HTTPS 3. Vérifier les proxies si le serveur est derrière un proxy ### Si le problème est temporaire 1. Attendre quelques minutes et réessayer 2. Vérifier si d'autres services ont des problèmes de connectivité 3. Vérifier les statuts des endpoints NIP-95 (void.cat, etc.) ## Notes - L'erreur `ENOTFOUND` signifie que le nom de domaine n'a pas pu être résolu en adresse IP - L'erreur `EAI_AGAIN` signifie que la résolution DNS a échoué temporairement (peut être réessayé) - Le timeout de 30 secondes évite que les requêtes restent bloquées indéfiniment - Les messages d'erreur améliorés aident à diagnostiquer rapidement le problème - Si le problème persiste, vérifier la configuration réseau du serveur et l'accès à Internet