
Localhost ne fonctionne pas sur Mac : 7 solutions
Localhost refuse de charger sur votre Mac ? Voici 7 solutions testées : vérification serveur, fichier hosts, pare-feu, ports bloqués. Diagnostic pas à pas.
Gérez vos fichiers hosts sans terminal
ToggleHosts vous permet de gérer vos environnements visuellement sur Windows, macOS et Linux, avec flush DNS automatique et sauvegardes.
Paiement unique
Vous lancez votre serveur de développement, ouvrez localhost:3000 dans votre navigateur, et... rien. "Ce site est inaccessible", "ERR_CONNECTION_REFUSED", ou une page blanche infinie. Frustrant, n'est-ce pas ?
Pourquoi localhost ne fonctionne pas sur Mac ?
Si localhost ne fonctionne pas sur Mac, le serveur n'est généralement pas démarré, écoute sur un autre port, ou la ligne 127.0.0.1 localhost manque dans /etc/hosts. Vérifiez que le serveur tourne avec curl -I http://localhost:3000, contrôlez le port utilisé, rétablissez l'entrée localhost, puis videz le cache DNS.
Ce guide vous aidera à diagnostiquer et résoudre les problèmes de localhost sur Mac, étape par étape.
Diagnostic rapide
Avant de plonger dans les solutions, identifions le type de problème :
| Symptôme | Cause probable | Solution |
|---|---|---|
| ERR_CONNECTION_REFUSED | Serveur non démarré ou port incorrect | Solution #1 |
| Page qui charge indéfiniment | Pare-feu ou timeout | Solution #3 |
| localhost OK mais domaine.local non | Fichier hosts | Solution #4 |
| Fonctionnait hier, plus aujourd'hui | Cache DNS ou processus zombie | Solution #2, #5 |
Solution #1 : Vérifier que le serveur est démarré
Ça paraît évident, mais c'est la cause la plus fréquente.
Vérifier le terminal
Votre serveur affiche-t-il bien "Listening on port 3000" ou équivalent ?
# Exemple avec npm
npm run dev
# Sortie attendue
> ready - started server on 0.0.0.0:3000Vérifier qu'un processus écoute
lsof -i :3000Si rien ne s'affiche, aucun processus n'écoute sur ce port.
Vérifier le bon port
Assurez-vous d'accéder au bon port dans votre navigateur. Si votre serveur dit "port 8080", n'allez pas sur localhost:3000.
Solution #2 : Libérer un port occupé
Si vous voyez "Port 3000 already in use", un autre processus bloque le port.
Identifier le processus
lsof -i :3000Résultat :
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 12345 user 23u IPv4 0x1234 0t0 TCP *:3000 (LISTEN)Tuer le processus
kill -9 12345Ou pour tuer tous les processus sur un port :
lsof -ti :3000 | xargs kill -9Solution #3 : Vérifier le pare-feu
Le pare-feu macOS ou des applications de sécurité peuvent bloquer les connexions locales.
Pare-feu macOS
- Ouvrez Réglages Système > Réseau > Pare-feu
- Cliquez sur Options...
- Assurez-vous que votre application (Node, Python, etc.) est autorisée
Applications tierces
Des apps comme Little Snitch, Lulu, ou certains antivirus peuvent bloquer localhost. Vérifiez leurs règles.
Test rapide
Désactivez temporairement le pare-feu pour tester :
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate offN'oubliez pas de le réactiver après :
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate onSolution #4 : Vérifier le fichier hosts
Si localhost ne résout pas vers 127.0.0.1, le problème vient du fichier hosts.
Vérifier le contenu
cat /etc/hostsVous devez voir :
127.0.0.1 localhost
::1 localhostRéparer si nécessaire
Si ces lignes manquent :
sudo nano /etc/hostsAjoutez :
127.0.0.1 localhost
::1 localhostSauvegardez (Ctrl+O, Entrée, Ctrl+X) puis videz le cache DNS.
Sources et ressources externes
- Guide d’utilisation du Terminal (Assistance Apple)
- localhost et l’adresse de bouclage (Wikipédia)
- Le fichier hosts expliqué (Wikipédia)
Solution #5 : Vider le cache DNS
Un cache DNS corrompu peut empêcher localhost de fonctionner.
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponderSolution #6 : Vérifier l'adresse d'écoute
Certains serveurs écoutent sur 127.0.0.1 uniquement, d'autres sur 0.0.0.0.
Différence importante
- 127.0.0.1 : Accessible uniquement depuis votre machine
- 0.0.0.0 : Accessible depuis n'importe quelle interface (utile pour Docker, VM)
Forcer l'adresse dans votre serveur
// Node.js / Express
app.listen(3000, '0.0.0.0', () => {
console.log('Server running');
});# Python / Flask
app.run(host='0.0.0.0', port=3000)Solution #7 : Problèmes spécifiques aux outils
Node.js / npm
# Nettoyer le cache npm
npm cache clean --force
# Supprimer node_modules et réinstaller
rm -rf node_modules package-lock.json
npm installDocker
# Vérifier que Docker Desktop est lancé
docker ps
# Redémarrer Docker si nécessaire
killall Docker && open /Applications/Docker.appMAMP / XAMPP
- Vérifiez que Apache/Nginx est bien démarré (voyant vert)
- Vérifiez le port dans les préférences (80 vs 8888)
Tester avec 127.0.0.1 vs localhost
Si localhost échoue mais http://127.0.0.1:3000 fonctionne, le problème est dans la résolution DNS, pas dans votre serveur.
# Test localhost
curl -I http://localhost:3000
# Test IP directe
curl -I http://127.0.0.1:3000Utiliser des domaines locaux personnalisés
Plutôt que localhost, vous pouvez utiliser des domaines comme monprojet.test pour plus de clarté.
Prévenir les problèmes futurs
- Utilisez des ports différents par projet (3000, 3001, 8000, etc.)
- Arrêtez proprement vos serveurs (Ctrl+C) au lieu de fermer le terminal
- Utilisez un gestionnaire comme ToggleHosts pour éviter les conflits de fichier hosts
Vérifications par framework
Next.js
npm run dev
lsof -i :3000
curl -I http://localhost:3000Si vous utilisez un domaine personnalisé, ajoutez-le dans /etc/hosts :
127.0.0.1 app.test
::1 app.testDocker
Vérifiez le mapping entre port container et port hôte :
docker compose ps
docker ps
curl -I http://localhost:8080MAMP
MAMP utilise souvent localhost:8888 au lieu du port 80. Vérifiez les préférences avant de modifier le fichier hosts.
Localhost ou domaine .test ?
Utilisez localhost pour un test rapide. Utilisez .test quand vous avez des sous-domaines, des cookies, OAuth, HTTPS local ou plusieurs projets clients.
Évitez .local sur Mac : Bonjour/mDNS peut ralentir ou intercepter la résolution.
Checklist finale avant de chercher plus loin
Avant de réinstaller votre stack, vérifiez dans cet ordre : le serveur écoute, le port est libre, 127.0.0.1 répond, localhost résout correctement, puis le navigateur n'a pas gardé un ancien cache. Cette séquence sépare le problème serveur du problème DNS.
Conclusion
Les problèmes de localhost sur Mac ont généralement des causes simples : serveur non démarré, port occupé, ou cache DNS obsolète. En suivant ce guide méthodiquement, vous devriez résoudre 99% des cas.
Si le problème persiste, vérifiez les logs de votre application et assurez-vous que votre environnement de développement est correctement configuré.
Questions fréquentes
Les causes les plus fréquentes sont : serveur non démarré, port déjà utilisé, pare-feu bloquant, fichier hosts corrompu, ou cache DNS obsolète.
Utilisez la commande 'lsof -i :PORT' (ex: lsof -i :3000) pour voir si un processus écoute sur le port souhaité.
Techniquement oui, mais localhost passe par la résolution DNS (fichier hosts) tandis que 127.0.0.1 est une IP directe. Si localhost échoue mais 127.0.0.1 fonctionne, le problème vient du fichier hosts.
Identifiez le processus avec 'lsof -i :PORT', puis tuez-le avec 'kill -9 PID'. Exemple : kill -9 12345.
Oui, si le pare-feu est en mode strict ou si une application de sécurité tierce bloque les connexions locales. Vérifiez dans Réglages Système > Réseau > Pare-feu.
Articles similaires
EACCES: permission denied sur /etc/hosts : comment corrigerDépannage
EACCES: permission denied sur /etc/hosts : comment corriger
4 min de lecture
Localhost n’autorise pas la connexion : comment corrigerDépannage
Localhost n’autorise pas la connexion : comment corriger
4 min de lecture
Sous-domaines sur localhost en développement local (Guide 2026)Développement local
Sous-domaines sur localhost en développement local (Guide 2026)
4 min de lecture