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

# Comment héberger des applications FastAPI

> Apprenez à créer et héberger des applications FastAPI sur Square Cloud.

export const PortNote = ({lang}) => {
  const t = {
    'en': {
      q: 'What port should I use for my server?',
      a1: <>You should use port <b>80</b> for your server. Port 80 is the default port for HTTP traffic, which is handled by Square Cloud to route it to 443, HTTPS, for a secure connection.</>,
      a2: 'Make sure to configure it before compressing and uploading your project.'
    },
    'pt-br': {
      q: 'Qual porta devo usar para o meu servidor?',
      a1: <>Você deve usar a porta <b>80</b> para o seu servidor. A porta 80 é a porta padrão para tráfego HTTP; a Square Cloud a encaminha para 443 (HTTPS) para estabelecer uma conexão segura.</>,
      a2: 'Certifique-se de configurá-la antes de compactar e enviar seu projeto.'
    },
    'es': {
      q: '¿Qué puerto debo usar para mi servidor?',
      a1: <>Debes usar el puerto <b>80</b> para tu servidor. El puerto 80 es el puerto predeterminado para el tráfico HTTP; Square Cloud lo redirige al 443 (HTTPS) para establecer una conexión segura.</>,
      a2: 'Asegúrate de configurarlo antes de comprimir y subir tu proyecto.'
    },
    'fr': {
      q: 'Quel port dois-je utiliser pour mon serveur ?',
      a1: <>Vous devez utiliser le port <b>80</b> pour votre serveur. Le port 80 est le port par défaut du trafic HTTP ; Square Cloud le redirige vers le port 443 (HTTPS) pour établir une connexion sécurisée.</>,
      a2: "Assurez-vous de le configurer avant de compresser et d'envoyer votre projet."
    },
    'de': {
      q: 'Welchen Port sollte ich für meinen Server verwenden?',
      a1: <>Verwenden Sie Port <b>80</b> für Ihren Server. Port 80 ist der Standardport für HTTP-Traffic; Square Cloud leitet ihn für eine sichere Verbindung an Port 443 (HTTPS) weiter.</>,
      a2: 'Stellen Sie sicher, dass Sie ihn konfigurieren, bevor Sie Ihr Projekt komprimieren und hochladen.'
    },
    'it': {
      q: 'Quale porta devo usare per il mio server?',
      a1: <>Devi usare la porta <b>80</b> per il tuo server. La porta 80 è la porta predefinita per il traffico HTTP; Square Cloud la instrada verso la 443 (HTTPS) per stabilire una connessione sicura.</>,
      a2: 'Assicurati di configurarla prima di comprimere e caricare il tuo progetto.'
    },
    'ja': {
      q: 'サーバーにはどのポートを使えばよいですか？',
      a1: <>サーバーにはポート<b>80</b>を使用してください。ポート80はHTTPトラフィックのデフォルトポートで、Square Cloudが安全な接続のために443（HTTPS）へルーティングします。</>,
      a2: 'プロジェクトを圧縮してアップロードする前に、必ず設定してください。'
    },
    'zh': {
      q: '我的服务器应该使用哪个端口？',
      a1: <>您的服务器应使用端口 <b>80</b>。端口 80 是 HTTP 流量的默认端口，Square Cloud 会将其路由到 443（HTTPS）以建立安全连接。</>,
      a2: '请务必在压缩并上传项目之前完成配置。'
    }
  };
  const c = t[lang] || t['en'];
  return <Note>
            <b>{c.q}</b><br />
            {c.a1}<br />
            {c.a2}
        </Note>;
};

export const PyDepFiles = ({lang}) => {
  const desc = {
    "en": {
      requirements: "Standard file used in Python projects to list all the external libraries and dependencies that your project needs. Each line in this file specifies a package to be installed using pip, the Python package manager.",
      pyproject: "A modern configuration file for Python projects that can specify build system requirements and project metadata. It is used by tools like Poetry to manage dependencies and packaging."
    },
    "pt-br": {
      requirements: "Arquivo padrão usado em projetos Python para listar todas as bibliotecas externas e dependências necessárias para o seu projeto. Cada linha neste arquivo especifica um pacote a ser instalado usando o pip, o gerenciador de pacotes do Python",
      pyproject: "Um arquivo de configuração moderno para projetos Python que permite especificar requisitos do sistema de compilação e metadados do projeto. É utilizado por ferramentas como o Poetry para gerenciar dependências e empacotamento."
    },
    "es": {
      requirements: "Archivo estándar usado en proyectos Python para listar todas las bibliotecas externas y dependencias que tu proyecto necesita. Cada línea de este archivo especifica un paquete que se instalará usando pip, el gestor de paquetes de Python.",
      pyproject: "Un archivo de configuración moderno para proyectos Python que permite especificar los requisitos del sistema de compilación y los metadatos del proyecto. Lo utilizan herramientas como Poetry para gestionar dependencias y empaquetado."
    },
    "fr": {
      requirements: "Fichier standard utilisé dans les projets Python pour lister toutes les bibliothèques externes et dépendances nécessaires à votre projet. Chaque ligne de ce fichier spécifie un paquet à installer avec pip, le gestionnaire de paquets de Python.",
      pyproject: "Un fichier de configuration moderne pour les projets Python qui permet de spécifier les exigences du système de build et les métadonnées du projet. Il est utilisé par des outils comme Poetry pour gérer les dépendances et le packaging."
    },
    "de": {
      requirements: "Standarddatei in Python-Projekten, die alle externen Bibliotheken und Abhängigkeiten Ihres Projekts auflistet. Jede Zeile dieser Datei gibt ein Paket an, das mit pip, dem Paketmanager von Python, installiert wird.",
      pyproject: "Eine moderne Konfigurationsdatei für Python-Projekte, die Build-System-Anforderungen und Projektmetadaten festlegen kann. Sie wird von Tools wie Poetry zur Verwaltung von Abhängigkeiten und Packaging verwendet."
    },
    "it": {
      requirements: "File standard usato nei progetti Python per elencare tutte le librerie esterne e le dipendenze necessarie al tuo progetto. Ogni riga di questo file specifica un pacchetto da installare con pip, il gestore di pacchetti di Python.",
      pyproject: "Un file di configurazione moderno per i progetti Python che consente di specificare i requisiti del sistema di build e i metadati del progetto. È utilizzato da strumenti come Poetry per gestire dipendenze e packaging."
    },
    "ja": {
      requirements: "Python プロジェクトで、必要な外部ライブラリと依存関係をすべて列挙するための標準ファイルです。このファイルの各行は、Python のパッケージマネージャーである pip でインストールするパッケージを指定します。",
      pyproject: "ビルドシステムの要件やプロジェクトのメタデータを指定できる、Python プロジェクト向けのモダンな設定ファイルです。Poetry などのツールが依存関係とパッケージングの管理に使用します。"
    },
    "zh": {
      requirements: "Python 项目中用于列出项目所需的所有外部库和依赖项的标准文件。文件中的每一行指定一个通过 pip（Python 的包管理器）安装的包。",
      pyproject: "Python 项目的现代配置文件，可指定构建系统要求和项目元数据。Poetry 等工具使用它来管理依赖项和打包。"
    }
  };
  const d = desc[lang] || desc.en;
  return <CardGroup cols={2}>
            <Card title="requirements.txt" icon="file-lines" href="../../articles/how-to-create-your-requirements">
            {d.requirements}
            </Card>
            <Card title="pyproject.toml" icon="file" href="../../articles/how-to-create-your-pyproject">
            {d.pyproject}
            </Card>
        </CardGroup>;
};

export const RecommendedPlan = ({lang, plan, tier, cpu, appType}) => {
  const siteLang = lang === 'pt-br' ? 'pt-br' : 'en';
  const url = `https://squarecloud.app/${siteLang}/pay?plan=${plan.toLowerCase()}&tier=${tier}`;
  const proUrl = `https://squarecloud.app/${siteLang}/pay?plan=pro`;
  const notes = {
    'en': <Note>
        <b>Wondering how much RAM and CPU your plan needs to host {appType}?</b><br />
        Don't worry, we're here to help.
        Our <a href={url}>{plan}</a> plan offers <b>{tier}GB</b> of RAM and <b>{cpu}vCPU</b>, which should be sufficient for most {appType}.
        However, if you are working on a larger project and seeking extra stability, we recommend considering our <b>Pro</b> plan. With additional resources, you can maintain stability even during demand spikes.
        To purchase, simply click <a href={proUrl}>here</a>.
      </Note>,
    'pt-br': <Note>
        <b>Está se perguntando quanta RAM e CPU seu plano precisa para hospedar {appType}?</b><br />
        Não se preocupe, estamos aqui para ajudar.
        Nosso plano <a href={url}>{plan}</a> oferece <b>{tier}GB</b> de RAM e <b>{cpu}vCPU</b>, o que deve ser suficiente para a maioria dos {appType}.
        No entanto, se você estiver trabalhando em um projeto maior e precisar de mais estabilidade, recomendamos considerar nosso plano <b>Pro</b>.
        Com recursos adicionais, você pode manter a estabilidade mesmo durante picos de demanda.
        Para comprar, basta clicar <a href={proUrl}>aqui</a>.
      </Note>,
    'es': <Note>
        <b>¿Te preguntas cuánta RAM y CPU necesita tu plan para alojar {appType}?</b><br />
        No te preocupes, estamos aquí para ayudarte.
        Nuestro plan <a href={url}>{plan}</a> ofrece <b>{tier}GB</b> de RAM y <b>{cpu}vCPU</b>, lo que debería ser suficiente para la mayoría de {appType}.
        Sin embargo, si estás trabajando en un proyecto más grande y buscas mayor estabilidad, te recomendamos considerar nuestro plan <b>Pro</b>.
        Con recursos adicionales, puedes mantener la estabilidad incluso durante picos de demanda.
        Para comprarlo, simplemente haz clic <a href={proUrl}>aquí</a>.
      </Note>,
    'fr': <Note>
        <b>Vous vous demandez combien de RAM et de CPU votre plan doit offrir pour héberger {appType} ?</b><br />
        Pas d'inquiétude, nous sommes là pour vous aider.
        Notre plan <a href={url}>{plan}</a> offre <b>{tier} Go</b> de RAM et <b>{cpu} vCPU</b>, ce qui devrait suffire pour la plupart des {appType}.
        Cependant, si vous travaillez sur un projet plus important et recherchez une stabilité accrue, nous vous recommandons notre plan <b>Pro</b>.
        Avec des ressources supplémentaires, vous conservez la stabilité même lors des pics de demande.
        Pour l'acheter, cliquez simplement <a href={proUrl}>ici</a>.
      </Note>,
    'de': <Note>
        <b>Sie fragen sich, wie viel RAM und CPU Ihr Plan zum Hosten von {appType} benötigt?</b><br />
        Keine Sorge, wir helfen Ihnen gerne.
        Unser <a href={url}>{plan}</a>-Plan bietet <b>{tier} GB</b> RAM und <b>{cpu} vCPU</b>, was für die meisten {appType} ausreichen sollte.
        Wenn Sie jedoch an einem größeren Projekt arbeiten und zusätzliche Stabilität benötigen, empfehlen wir unseren <b>Pro</b>-Plan.
        Mit zusätzlichen Ressourcen bleibt Ihre Anwendung auch bei Lastspitzen stabil.
        Zum Kauf klicken Sie einfach <a href={proUrl}>hier</a>.
      </Note>,
    'it': <Note>
        <b>Ti stai chiedendo quanta RAM e CPU serve al tuo piano per ospitare {appType}?</b><br />
        Non preoccuparti, siamo qui per aiutarti.
        Il nostro piano <a href={url}>{plan}</a> offre <b>{tier}GB</b> di RAM e <b>{cpu}vCPU</b>, che dovrebbero essere sufficienti per la maggior parte di {appType}.
        Tuttavia, se stai lavorando a un progetto più grande e cerchi maggiore stabilità, ti consigliamo il nostro piano <b>Pro</b>.
        Con risorse aggiuntive puoi mantenere la stabilità anche durante i picchi di richieste.
        Per acquistarlo, fai clic <a href={proUrl}>qui</a>.
      </Note>,
    'ja': <Note>
        <b>{appType}のホスティングに必要なRAMとCPUの容量が気になりますか？</b><br />
        ご安心ください。私たちがサポートします。
        <a href={url}>{plan}</a>プランは<b>{tier}GB</b>のRAMと<b>{cpu}vCPU</b>を提供しており、ほとんどの{appType}には十分です。
        より大規模なプロジェクトでさらなる安定性を求める場合は、<b>Pro</b>プランをおすすめします。追加リソースにより、需要のピーク時でも安定性を維持できます。
        ご購入は<a href={proUrl}>こちら</a>をクリックしてください。
      </Note>,
    'zh': <Note>
        <b>想知道托管{appType}需要多少 RAM 和 CPU 吗？</b><br />
        别担心，我们来帮您。
        我们的 <a href={url}>{plan}</a> 套餐提供 <b>{tier}GB</b> RAM 和 <b>{cpu}vCPU</b>，对大多数{appType}来说已经足够。
        如果您的项目规模更大、需要更高的稳定性，我们推荐 <b>Pro</b> 套餐。借助额外资源，即使在需求高峰期也能保持稳定。
        点击<a href={proUrl}>这里</a>即可购买。
      </Note>
  };
  return notes[lang] || notes['en'];
};

export const appType_0 = "a FastAPI application"

## Introduction

Pour développer et héberger {appType_0} sur Square Cloud, il est essentiel de suivre une séquence structurée de configurations et de prérequis. Ce guide technique couvrira l'ensemble du processus, de la configuration initiale au déploiement en production.

### Prérequis

* **Compte Square Cloud** : Inscrivez-vous via la [page d'inscription](https://squarecloud.app/fr/signup) en utilisant votre adresse e-mail.
* **Plan payant actif** : Garantit des ressources dédiées et des performances optimisées pour votre application. Consultez nos [plans disponibles](https://squarecloud.app/fr/pricing) et choisissez celui qui convient le mieux à vos besoins.

<RecommendedPlan appType="applications FastAPI" plan="Standard" tier="4" cpu="4" lang="fr" />

## Création du projet

Pour créer une application FastAPI, vous devez avoir Python et pip installés sur votre système avant de suivre les étapes.

### Installation de la bibliothèque

Une fois Python et pip installés, créez votre projet FastAPI. Commencez par installer les dépendances requises :

```bash Terminal theme={null}
pip install fastapi uvicorn
```

### Développement du projet

Créez un fichier Python (par exemple, `main.py`) et ajoutez le code suivant pour implémenter une application FastAPI basique :

```python main.py theme={null}
# Import the FastAPI class and the uvicorn ASGI server
from fastapi import FastAPI
import uvicorn

# Create an instance of the FastAPI class
app = FastAPI()

# Define a route for the root URL (/) that returns 'Hello, World!'
@app.get("/")
def hello_world():
  return {"message": "Hello, World!"}

# Check if this script is being run directly (not imported as a module)
if __name__ == "__main__":
  # Run the FastAPI application on host 0.0.0.0 (all available network interfaces) and port 80
  uvicorn.run(app, host="0.0.0.0", port=80)
```

Dans le code ci-dessus, nous implémentons une route simple qui renvoie « Hello, World! » lorsqu'elle est appelée. L'application est configurée pour s'exécuter sur le port 80, qui est le port HTTP par défaut.

Ensuite, nous devons créer notre fichier de dépendances. En Python, nous avons requirements.txt ou un pyproject.toml

<PyDepFiles lang="fr" />

## Choisir un serveur de production

Uvicorn est déjà un serveur ASGI adapté à la production, aucun serveur WSGI supplémentaire n'est requis. Sur Square Cloud, au lieu d'exécuter `python main.py`, définissez le champ `START` de votre fichier de configuration pour lancer Uvicorn directement :

```systemd squarecloud.config theme={null}
START=python -m uvicorn main:app --host 0.0.0.0 --port 80
```

<Note>Pour les applications à trafic plus élevé, vous pouvez ajouter des workers Uvicorn supplémentaires, par ex. `START=python -m uvicorn main:app --host 0.0.0.0 --port 80 --workers 4`.</Note>

## Déploiement

Après avoir préparé les fichiers de votre projet, vous pouvez maintenant les téléverser sur Square Cloud et héberger votre projet.
Pour ce faire, créez un fichier ZIP contenant tous les fichiers de votre projet.

<PortNote lang="fr" />

### Via le tableau de bord

<Steps>
  <Step title="Accéder à la page d'upload">
    Accédez à la [page d'upload](https://squarecloud.app/fr/dashboard/new) et téléversez le fichier zip de votre projet.
  </Step>

  <Step title="Configurer votre environnement">
    Après avoir téléversé votre zip, vous devrez configurer le nom, le fichier principal ou l'environnement d'exécution ainsi que d'autres paramètres de votre projet.\
    Si vous téléversez un projet web, veillez à sélectionner « Publication Web » et à définir un sous-domaine pour votre projet.
  </Step>

  <Step title="Déployer votre projet">
    Enfin, cliquez sur le bouton « Deploy » pour héberger votre projet sur Square Cloud.\
    Une fois le déploiement effectué, vous pouvez suivre l'état et les logs de votre projet depuis le tableau de bord.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading.gif" alt="Téléversement d'une application vers Square Cloud" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>

  <Step title="Confirmez que votre application est en ligne">
    Votre premier déploiement prend généralement moins d'une minute. Dans le [tableau de bord](https://squarecloud.app/fr/dashboard), attendez que le statut de votre application affiche « en cours d'exécution » et vérifiez les logs pour détecter d'éventuelles erreurs de démarrage.\
    Si vous avez déployé un site web ou une API, ouvrez `https://<votre-sous-domaine>.squareweb.app` dans votre navigateur, vous devriez voir votre application répondre. Si vous avez déployé un bot, envoyez-lui une commande pour confirmer qu'il est en ligne.
    <Tip>Votre application ne démarre pas ? Consultez le [guide de dépannage](/fr/platform/troubleshooting/app-wont-start) pour les causes les plus courantes et leurs solutions.</Tip>
  </Step>
</Steps>

### Via la CLI

Pour utiliser cette méthode, vous devez créer un fichier de configuration nommé `squarecloud.app` à la racine de votre projet. Ce fichier contiendra la configuration nécessaire à votre projet.

<Card title="Guide du fichier de configuration" icon="link" href="/fr/getting-started/config-file">
  Apprenez comment créer le fichier de configuration `squarecloud.app` qui définit l'environnement de votre application.
</Card>

<Steps>
  <Step title="Installer la CLI">
    Tout d'abord, vous devez avoir la CLI installée dans votre environnement. Si ce n'est pas encore le cas, exécutez la commande suivante dans votre terminal :

    ```
    npm install -g @squarecloud/cli
    ```

    Si vous l'avez déjà, nous vous recommandons de la mettre à jour. Pour cela, exécutez la commande suivante dans votre terminal :

    <Tabs>
      <Tab title="Windows">
        ```bash theme={null}
        squarecloud update
        ```
      </Tab>

      <Tab title="Linux, macOS et WSL">
        ```bash theme={null}
        curl -fsSL https://cli.squarecloud.app/install | bash
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="S'authentifier">
    Maintenant, pour vous authentifier et utiliser les autres commandes de la CLI, vous trouverez votre clé d'autorisation [ici](https://squarecloud.app/fr/account/security) en cliquant sur « Request API Key ». Après avoir obtenu votre clé d'autorisation, exécutez la commande suivante :

    ```bash theme={null}
    squarecloud auth login
    ```
  </Step>

  <Step title="Téléverser votre projet">
    Enfin, pour déployer votre application sur Square Cloud à l'aide de la CLI, vous devez exécuter la commande suivante :

    ```bash theme={null}
    squarecloud upload 
    ```

    Ou si vous avez créé le zip manuellement, vous pouvez utiliser :

    ```bash theme={null}
    squarecloud upload --file <path/to/zip> 
    ```
  </Step>

  <Step title="Confirmez que votre application est en ligne">
    Votre premier déploiement prend généralement moins d'une minute. Vérifiez le statut et les logs de votre application directement depuis le terminal :

    ```bash theme={null}
    squarecloud app status
    squarecloud app logs
    ```

    Si vous avez déployé un site web ou une API, ouvrez `https://<votre-sous-domaine>.squareweb.app` dans votre navigateur, vous devriez voir votre application répondre. Si vous avez déployé un bot, envoyez-lui une commande pour confirmer qu'il est en ligne.
    <Tip>Votre application ne démarre pas ? Consultez le [guide de dépannage](/fr/platform/troubleshooting/app-wont-start) pour les causes les plus courantes et leurs solutions.</Tip>
  </Step>
</Steps>

## Dépannage

<CardGroup cols={1}>
  ### Domaine personnalisé

  <Card horizontal>
    Pour utiliser un domaine personnalisé (par exemple `mysite.com`) au lieu de l'URL par défaut `mysite.squareweb.app`, vous avez besoin du **plan Standard ou supérieur**. Le sous-domaine est défini par le champ **SUBDOMAIN** dans le fichier de configuration.
  </Card>

  ### Prérequis minimum en RAM

  <Card horizontal>
    **Minimum : 512 Mo de RAM** pour les sites web/API simples. Pour les sites utilisant des frameworks (Next.JS, React, Vue, Angular, etc.), nous recommandons toujours **au moins 1 Go de RAM**. Pour les applications plus volumineuses, allouez davantage de RAM afin d'éviter que l'application ne manque de mémoire et ne plante.
  </Card>

  ### Impossible de trouver ce site.

  <Card horizontal>
    Vérifiez que le **sous-domaine/domaine** correspond à ce qui est configuré dans le champ **SUBDOMAIN** ou dans les **paramètres du domaine personnalisé**. Si vous venez tout juste de mettre en ligne le site, patientez jusqu'à **60 secondes** pour que Square active le **premier accès**.
  </Card>

  ### Le site a mis trop de temps à répondre...

  <Card horizontal>
    Vérifiez que vous avez correctement configuré le **port 80** et l'hôte **0.0.0.0** dans l'application. Nous recommandons d'utiliser les variables d'environnement forcées par Square : **PORT** et **HOST** du fichier `.env`.
  </Card>
</CardGroup>

## Ressources supplémentaires

Pour des informations plus détaillées sur FastAPI et ses outils avancés, consultez la [documentation officielle de FastAPI](https://fastapi.tiangolo.com/).
Vous y trouverez des guides techniques approfondis, des tutoriels spécialisés et une documentation d'API complète pour tirer le meilleur parti des fonctionnalités de FastAPI.

## Contactez-nous

Si vous rencontrez toujours des **difficultés techniques**, notre **équipe de support spécialisée** est disponible pour vous aider. [**Contactez-nous**](https://squarecloud.app/fr/support) et nous serons ravis de vous aider à résoudre tout problème. La qualité du support compte pour beaucoup dans la note que les développeurs donnent à Square Cloud, [**4,9/5 sur 402 avis**](https://www.trustpilot.com/review/squarecloud.app) sur Google et Trustpilot.
