> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ports

> Découvrez comment configurer et gérer les ports réseau dans votre application Replit.

Étant donné que Replit exécute vos projets dans un environnement cloud, les ports fonctionnent différemment sur Replit que sur votre ordinateur local. (Si vous avez besoin d'une explication plus basique sur ce que sont les ports TCP, [commencez ici](https://www.reddit.com/r/explainlikeimfive/comments/1t9s5a/eli5_what_are_ports_ex_tcp_port/).)

Sur un ordinateur, vous n'avez qu'une seule couche de gestion des ports : vos programmes définissent un port qu'ils écoutent, et lorsque le trafic atteint ce port sur votre ordinateur depuis Internet, il est routé vers le processus approprié.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/ports/computer.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=6e8edcd0ec3e450bdef6c32289d36dcc" alt="ordinateur" width="1323" height="786" data-path="images/ports/computer.png" />
</Frame>

La partie `0.0.0.0` est l'adresse, ou hôte. Si un processus écoute sur `0.0.0.0`, cela signifie qu'il doit écouter sur chaque interface réseau — ce qui signifie que si un autre ordinateur (sur Internet) envoie une requête à l'adresse IP de votre ordinateur, il la verra. Ainsi, écouter sur 0.0.0.0 signifie que ces processus sont accessibles à l'Internet public (si votre ordinateur est connecté).

La plupart des frameworks de programmation n'écouteront *pas* sur `0.0.0.0` lors du développement, car vous ne souhaitez pas nécessairement exposer votre travail au public pendant que vous y travaillez, pour des raisons de confidentialité et de sécurité. Au lieu de cela, ils écouteront sur une adresse différente — `127.0.0.1`, également connue sous le nom de `localhost`. Cela signifie que seul cet ordinateur peut envoyer des requêtes à ce port.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/ports/computer-localhost.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=96a818c90fd879a814a647e18b506f7c" alt="Les ports localhost ne sont visibles que sur l'ordinateur qui les héberge." width="1467" height="786" data-path="images/ports/computer-localhost.png" />
</Frame>

Sur Replit, pour qu'un processus que vous exécutez soit accessible dans la webview ou via une requête externe, il doit avoir un **port externe** défini. En effet, le « port interne » que les processus utilisent habituellement n'est visible que depuis l'intérieur de l'environnement cloud sandboxé que Replit fournit. Ce port interne doit être connecté à un port accessible de l'extérieur pour envoyer le bon trafic vers vos programmes. Même si votre processus écoute sur un port généralement accessible au public comme 0.0.0.0, il doit quand même être lié à un port externe.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/ports/replit.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=9162e125c12faa1b6f896cc394957a85" alt="Les ports externes transfèrent le trafic vers les ports internes, sur lesquels les programmes écoutent." width="1641" height="870" data-path="images/ports/replit.png" />
</Frame>

Replit procède en liant les ports externes à des ports internes spécifiques — par exemple, dans le diagramme ci-dessus, le port externe `:80` est lié au port interne `:3000`. Cela signifie que tout le trafic que l'application Replit reçoit sur le port 80 ira au port interne 3000.

Cette configuration est capturée dans la section \[\[ports]] du fichier de configuration .replit.

Par défaut, Replit lie le premier port que vous ouvrez au port externe par défaut 80, ce qui permet à ce processus d'être disponible au niveau du domaine sans adresse de port (par exemple customdomain.com/ au lieu de customdomain.com:3000/). Les ports internes supplémentaires qui sont ouverts sont liés à d'autres ports externes disponibles (voir la liste complète ci-dessous).

## Aperçu

Dans l'outil Aperçu, vous pouvez changer le port externe que la webview affiche en cliquant sur le domaine et en sélectionnant un port différent. Vous pouvez également ouvrir l'outil réseau depuis l'icône « engrenage » pour plus de détails.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/ports/webview_dropdown.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=35f188e6a98287c45e1c5a4b811e9794" alt="Cliquer sur le domaine dans la webview vous permet de choisir quel port afficher." width="862" height="534" data-path="images/ports/webview_dropdown.png" />
</Frame>

## Port par défaut

Le port :80 est le « port par défaut » pour le trafic http, donc le trafic http envoyé au domaine racine sera automatiquement routé vers le port 80. Le chemin du port n'est pas affiché dans l'URL pour le port 80 pour cette raison. Les ports autres que :`80` apparaîtront dans le chemin du domaine (par exemple customdomain.com:4200/). (Replit fournit TLS par défaut, donc cela sera techniquement via le port 443, qui est le port par défaut pour https. À toutes fins pratiques, vous pouvez les traiter comme interchangeables.)

## Outil réseau

Pour plus de détails sur la configuration des ports et le réseau, vous pouvez ouvrir l'outil réseau. Il affiche l'état des ports ouverts dans votre application Replit, le port externe auquel ils sont liés, et vous permet d'ajouter ou de supprimer une configuration.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/ports/networking_tool.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=61b24a896e5dc920ed70f3603228d33f" alt="L'outil réseau affiche votre configuration de ports." width="1412" height="558" data-path="images/ports/networking_tool.png" />
</Frame>

## Publication

Les déploiements Autoscale et Reserved VM ne prennent en charge qu'un seul port externe exposé, et le port interne correspondant ne doit pas utiliser `localhost`. Si vous exposez davantage de ports, ou exposez un seul port sur localhost, votre application publiée échouera. Un moyen simple de s'assurer que vos déploiements Autoscale fonctionnent comme prévu est de supprimer toutes les entrées `externalPort` pour les ports dans votre configuration *sauf* le port du service avec lequel vous voulez interagir depuis Internet.

## Débogage

Une raison courante pour laquelle quelque chose pourrait ne pas fonctionner comme prévu est que, même si votre configuration de port semble correcte, votre programme écoute en réalité sur un port différent. Par exemple, si votre configuration est :

```
[[ports]]
internalPort = 3000
externalPort = 80
```

Le trafic Internet vers le port 80 ira au port interne 3000. Cependant, si votre programme n'écoute pas réellement sur le port 3000, mais sur autre chose (comme 8080), il semblera qu'aucun trafic ne passe. Cela peut se produire si vous changez le port dans votre code sans changer le port correspondant dans votre configuration, ou si vous copiez-collez une configuration d'un projet à l'autre.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/ports/replit-wrong_port.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=42510d0331118fcf4a5cba7c812d09ee" alt="Les programmes peuvent changer les ports sur lesquels ils écoutent." width="1641" height="870" data-path="images/ports/replit-wrong_port.png" />
</Frame>

Chaque framework a des ports par défaut différents sur lesquels il écoute — par exemple, Flask utilise le port 5000, React le port 3000, et Laravel le port 8000. Assurez-vous que le bon port est configuré !

## Préférences

Replit lie automatiquement les ports ouverts dans votre application Replit aux ports externes disponibles lorsqu'ils sont ouverts, et enregistre cette liaison dans le fichier de configuration .replit.

Cependant, cela ne se produit pas par défaut pour les ports internes qui s'ouvrent sur localhost, car les services qui s'exécutent habituellement sur localhost supposent généralement qu'ils ne seront accessibles que sur le même ordinateur que le processus en cours d'exécution (les ports localhost ne sont visibles que par le même ordinateur exécutant le processus). Cela signifie que ces services ne sont souvent pas aussi sécurisés que les services conçus en supposant qu'ils seront disponibles pour l'Internet public.

Vous pouvez toujours remplacer cela en définissant l'option de configuration `exposeLocalhost` à `true` pour le port que vous souhaitez exposer.

Si vous souhaitez *toujours* exposer les ports localhost par défaut, vous pouvez définir votre paramètre « transfert automatique de port » dans l'outil Paramètres utilisateur sur « Tous les ports ».

Si vous ne souhaitez *jamais* créer de configuration pour les ports ouverts, et contrôler manuellement la configuration des ports pour toutes vos applications Replit, vous pouvez définir ce paramètre sur « jamais ».

## Ports pris en charge

L'application Replit définira le port 80 comme port externe par défaut lorsque le premier port s'ouvre. Une application Replit peut exposer 3000, 3001, 3002, 3003, 4200, 5000, 5173, 6000, 6800, 8000, 8008, 8080, 8081 comme ports externes supplémentaires.

Les ports 22 et 8283 ne sont pas transférables, car ils sont utilisés en interne.

## Configuration `.replit` `[[ports]]`

Type : `{localPort, externalPort, exposeLocalhost}`

La configuration `[[ports]]` vous permet de configurer quel port HTTP exposer pour la sortie web de votre application. Par défaut, tout port HTTP exposé avec l'hôte 0.0.0.0 sera exposé comme sortie web de votre application Replit.

Des ports supplémentaires peuvent être servis sans remplacer le port par défaut en ajoutant une nouvelle entrée \[\[ports]] à votre fichier .replit. Vous devez spécifier à la fois une entrée localPort et externalPort. Vous pouvez ajouter plusieurs ports supplémentaires en ajoutant plusieurs entrées \[\[ports]] à votre fichier .replit comme défini ci-dessous.

### localPort

Détermine quel port Replit liera à un port externe.

### externalPort

Détermine quel port doit être exposé comme port accessible publiquement pour ce port local.

```toml theme={null}
[[ports]]
localPort = 3000
externalPort = 80
```

Si vous ne souhaitez *jamais* exposer un port particulier, vous pouvez laisser la configuration `localPort` sans ajouter d'`externalPort` :

```toml theme={null}
[[ports]]
localPort = 3000
```

### exposeLocalhost

Détermine si un port interne utilisant `localhost` peut être lié à un port externe. Peut être `true`, `false`, ou null.

```toml theme={null}
[[ports]]
localPort = 3000
externalPort = 80
exposeLocalhost = true
```
