ToggleHosts
Localhost ne fonctionne pas sur Mac : 7 solutions

Localhost ne fonctionne pas sur Mac : 7 solutions

Mis à jour le 6 min de lecture

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.

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ômeCause probableSolution
ERR_CONNECTION_REFUSEDServeur non démarré ou port incorrectSolution #1
Page qui charge indéfinimentPare-feu ou timeoutSolution #3
localhost OK mais domaine.local nonFichier hostsSolution #4
Fonctionnait hier, plus aujourd'huiCache DNS ou processus zombieSolution #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 ?

BASH
# Exemple avec npm
npm run dev

# Sortie attendue
> ready - started server on 0.0.0.0:3000

Vérifier qu'un processus écoute

BASH
lsof -i :3000

Si 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

BASH
lsof -i :3000

Résultat :

COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node    12345  user   23u  IPv4  0x1234      0t0  TCP *:3000 (LISTEN)

Tuer le processus

BASH
kill -9 12345

Ou pour tuer tous les processus sur un port :

BASH
lsof -ti :3000 | xargs kill -9

Solution #3 : Vérifier le pare-feu

Le pare-feu macOS ou des applications de sécurité peuvent bloquer les connexions locales.

Pare-feu macOS

  1. Ouvrez Réglages Système > Réseau > Pare-feu
  2. Cliquez sur Options...
  3. 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 :

BASH
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

N'oubliez pas de le réactiver après :

BASH
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

Solution #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

BASH
cat /etc/hosts

Vous devez voir :

127.0.0.1       localhost
::1             localhost

Réparer si nécessaire

Si ces lignes manquent :

BASH
sudo nano /etc/hosts

Ajoutez :

127.0.0.1       localhost
::1             localhost

Sauvegardez (Ctrl+O, Entrée, Ctrl+X) puis videz le cache DNS.

Sources et ressources externes

À lire aussiFlush DNS Mac : Commandes par Version macOS

Solution #5 : Vider le cache DNS

Un cache DNS corrompu peut empêcher localhost de fonctionner.

BASH
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder

Solution #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

JAVASCRIPT
// Node.js / Express
app.listen(3000, '0.0.0.0', () => {
    console.log('Server running');
});
PYTHON
# Python / Flask
app.run(host='0.0.0.0', port=3000)

Solution #7 : Problèmes spécifiques aux outils

Node.js / npm

BASH
# Nettoyer le cache npm
npm cache clean --force

# Supprimer node_modules et réinstaller
rm -rf node_modules package-lock.json
npm install

Docker

BASH
# Vérifier que Docker Desktop est lancé
docker ps

# Redémarrer Docker si nécessaire
killall Docker && open /Applications/Docker.app

MAMP / XAMPP

  1. Vérifiez que Apache/Nginx est bien démarré (voyant vert)
  2. 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.

BASH
# Test localhost
curl -I http://localhost:3000

# Test IP directe
curl -I http://127.0.0.1:3000

Utiliser des domaines locaux personnalisés

Plutôt que localhost, vous pouvez utiliser des domaines comme monprojet.test pour plus de clarté.

À lire aussiComment modifier le fichier hosts sur Mac

Prévenir les problèmes futurs

  1. Utilisez des ports différents par projet (3000, 3001, 8000, etc.)
  2. Arrêtez proprement vos serveurs (Ctrl+C) au lieu de fermer le terminal
  3. Utilisez un gestionnaire comme ToggleHosts pour éviter les conflits de fichier hosts

Vérifications par framework

Next.js

BASH
npm run dev
lsof -i :3000
curl -I http://localhost:3000

Si vous utilisez un domaine personnalisé, ajoutez-le dans /etc/hosts :

TEXT
127.0.0.1 app.test
::1       app.test

Docker

Vérifiez le mapping entre port container et port hôte :

BASH
docker compose ps
docker ps
curl -I http://localhost:8080

MAMP

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é.

Partager cet article

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