---
title: "Comment déployer une application TanStack Start en 2026 "
description: "Déployez TanStack Start sur un serveur Node : ajoutez Nitro et un script start, lancez pethost deploy, et c’est en ligne en HTTPS en 29 s, pour 9,99 €/mois."
---

[Blog](https://pethost.dev/fr/blog/) · Guides de déploiement

# Comment déployer une application TanStack Start en 2026 : Nitro, un script start et une commande

Par l’équipe Pethost · 10 octobre 2026 · Mis à jour le 25 octobre 2026 · 9 min de lecture

Vous avez une application TanStack Start, et vous voulez la mettre sur un serveur Node, à une adresse en HTTPS. Pour cela, le guide d’hébergement de TanStack demande deux choses à l’application : le plugin Nitro et un script `start`. Une fois les deux en place, `pethost deploy` écrit le Dockerfile, construit l’application et affiche son adresse. L’application que crée la CLI de TanStack a été construite et démarrée en 29 secondes la première fois.

**En bref**

- **Deux choses dans l’application :** le plugin Nitro, qu’ajoute `--deployment nitro` à la création de l’application, et `"start": "node .output/server/index.mjs"` dans `package.json`.
- **Une commande :** `pethost deploy` dans le dossier qui contient `package.json`. Elle écrit un Dockerfile qui lance `npm run build`, puis `npm run start`.
- **Le port :** le serveur Nitro écoute sur le 3000. Pethost le trouve et y envoie l’adresse, en HTTPS.
- **Un build qui échoue ne change rien :** la version d’avant continue de tourner, et l’écran affiche l’erreur du build.
- **Le prix :** 9,99 € par mois pour 2 vCPU, 3 GB et 30 GB, pour cette application et tous vos autres projets. Il n’y a pas d’offre gratuite.

## Ce qu’il faut pour déployer une application TanStack Start en 2026

Trois choses : l’application, la commande `pethost` et un compte Pethost.

**L’application** est ici celle que crée la CLI de TanStack, avec Nitro comme cible de déploiement :

```
npx @tanstack/cli@latest create my-app --deployment nitro
```

Le flag ajoute le plugin Nitro à `vite.config.ts`. Dans une application existante, ajoutez-le comme l’indique la partie Nitro du guide d’hébergement :

```
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
import { defineConfig } from 'vite'
import { nitro } from 'nitro/vite'
import viteReact from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [tanstackStart(), nitro(), viteReact()],
})
```

Puis donnez à `package.json` le script qui démarre ce qu’écrit le build. La CLI y laisse `build`, et aucun `start` :

```
"scripts": {
  "dev": "vite dev --port 3000",
  "build": "vite build",
  "start": "node .output/server/index.mjs"
}
```

**La commande** est un seul programme, installé en une ligne. Toutes ses commandes sont dans la [référence de la CLI](https://pethost.dev/docs/cli/).

```
curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell
```

**Le compte** a besoin d’une offre. Si vous n’êtes pas connecté, `pethost deploy` ouvre votre navigateur et vous connecte. Si vous n’avez pas encore d’offre, la commande vous montre où en choisir une, et attend.

## Déployer l’application TanStack Start en une commande

Allez dans le dossier qui contient `package.json` et lancez `pethost deploy`. Voici l’écran entier, pour l’application qu’a créée la CLI :

```
$ cd my-app
$ pethost deploy
Name it [my-app]:    it will live at https://my-app.sam.pethost.app
✓ Packed 18 files, 183 KB   (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Node.js project detected, wrote Dockerfile.
✓ Packed 19 files, 184 KB   (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 29 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
✓ app listens on 3000 → https://my-app.sam.pethost.app
  It answers 200.

https://my-app.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
```

1. **Elle demande une seule chose** Le nom du projet, qui est le premier mot de son adresse. Entrée prend le nom du dossier.
2. **La machine ne trouve rien à lancer** Le dossier part directement sur votre machine, sans `node_modules`. La ligne avec la croix est sa réponse : un projet tourne à partir d’un Dockerfile ou d’un fichier Compose, et le dossier n’a encore ni l’un ni l’autre.
3. **pethost écrit le Dockerfile** Il a lu les scripts `build` et `start` de `package.json`, et envoie de nouveau le dossier.
4. **La machine le construit et le démarre** Elle voit que le serveur écoute sur le 3000 et y envoie l’adresse. Puis pethost interroge l’adresse elle-même, et affiche ce qu’elle a répondu : 200.

Nous avons demandé à l’application déployée ce que demande un visiteur. La page d’accueil et `/about` ont chacune répondu 200 avec du HTML rendu côté serveur, et une adresse sans route a répondu 404. Le serveur en marche occupait 43 MB de mémoire.

## Le Dockerfile qu’écrit pethost pour TanStack Start

Voici le fichier tel qu’il a été écrit dans le dossier de l’application, en entier :

```
# Written by pethost deploy for this Node.js project: Node 24 (no .nvmrc names another),
# npm installs it (package-lock.json), package.json builds it with "vite build",
# package.json starts it with "node .output/server/index.mjs".
# It is yours now: change it as you like. pethost does not write it again.

FROM node:24
WORKDIR /app

COPY . .

# Every dependency: what builds the project, and may start it, is among the ones for
# development.
RUN --mount=type=cache,target=/root/.npm \
    npm install

RUN npm run build

ENV NODE_ENV=production
CMD ["npm", "run", "start"]
```

Ses premières lignes disent ce que pethost a lu dans votre dossier. Le gestionnaire de paquets est celui que nomme votre lockfile, et la version de Node celle que nomme `.nvmrc` ou `.node-version`, ou Node 24 s’il n’y a ni l’un ni l’autre. Le build et le démarrage sont vos deux scripts, tels que vous les avez écrits.

### Sans le script start

Une application TanStack Start peut être construite pour plusieurs types d’hébergeurs, alors pethost ne devine pas comment la vôtre démarre. Sans script `start`, il n’écrit aucun fichier et explique pourquoi :

```
$ pethost deploy
Name it [my-app]:    it will live at https://my-app.sam.pethost.app
✓ Packed 13 files, 177 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
  package.json builds the project and names nothing that starts it (no start script), and what it builds is no site of a kind pethost has a row for.
  Your coding agent writes one in a minute: "Write a Dockerfile for this app".
  Then run pethost deploy again.     How Pethost runs a folder: https://pethost.dev/docs/api/#CreateProject
```

Ajoutez le script et relancez la commande.

## Modifier une route et redéployer

Modifiez une route et lancez la même commande. Le deuxième déploiement a pris 7 secondes, car la machine garde les couches du build et le cache de npm :

```
$ pethost deploy
my-app (.pethost)
✓ Packed 20 files · uploaded · built and started in 7 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
  · kept the project's x-pethost
  It answers 200.
https://my-app.sam.pethost.app
```

### Quand le build échoue

Nous avons cassé un fichier de route pour le voir. L’écran affiche le journal du build avec l’erreur, et la dernière ligne dit ce que reçoivent les visiteurs. Voici cet écran, réduit à trois de ses lignes :

```
$ pethost deploy
my-app (.pethost)
✗ Deploy failed: failed to build: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
    #9 0.793 Error: Error transforming route file /app/src/routes/about.tsx: SyntaxError: Unexpected token, expected "," (4:19)
  Nothing changed: the version before still runs.
```

Pour déployer à chaque push, connectez le dépôt une fois avec `pethost github sam/my-app`. Pethost ne lit que les dépôts que vous avez donnés à son application GitHub. `pethost rollback` remet la version d’avant, et votre machine garde les trois versions qui précèdent l’actuelle. Un agent IA peut faire tout cela pour vous grâce au serveur MCP de Pethost : [comment un agent déploie un projet et s’en occupe](https://pethost.dev/fr/blog/hosting-for-ai-coding-agents/).

## Variables d’environnement et domaine personnalisé

Une variable que lit une fonction serveur, c’est une commande. Elle demande la valeur sans l’afficher, la met dans le fichier `.env` du projet sur la machine, et les déploiements suivants la conservent :

```
pethost env set DATABASE_URL
```

Tout nom sous le domaine de votre compte est une adresse d’emblée, en HTTPS. Un domaine qui vous appartient demande une commande et un enregistrement DNS :

```
pethost domain add app.example.com
```

La commande affiche l’enregistrement à créer : un CNAME de votre nom vers le nom de votre machine. Le certificat arrive tout seul dès que le nom se résout, et se renouvelle tout seul.

## Ce que vous obtenez pour ce prix

Pethost, c’est 9,99 € par mois pour tout ce que vous hébergez, sur 2 vCPU, 3 GB de mémoire et 30 GB de disque. Le serveur de l’application en occupait 43 MB, alors la machine a de la place pour sa base de données, un worker et vos autres projets, comme une [application React Router](https://pethost.dev/fr/blog/deploy-react-router-app/) à côté. Il n’y a [pas de frais par projet](https://pethost.dev/fr/blog/unlimited-projects-flat-monthly-fee/) et [rien n’est facturé à l’usage](https://pethost.dev/fr/blog/paas-without-usage-based-billing/) : les fonctions serveur ne sont pas facturées à l’appel.

- **9,99 €** par mois pour tous vos projets, rien de facturé à l’usage
- **29 s** pour construire et démarrer l’application, la première fois
- **7 s** pour le déploiement suivant

Ce qui est déjà fait pour vous : le HTTPS avec des certificats qui se renouvellent tout seuls, les déploiements depuis GitHub, des sauvegardes chaque nuit conservées 14 jours, SSH dans n’importe quel conteneur, et chaque requête comptée, avec les chemins les plus sollicités et le taux d’erreur des 30 derniers jours. La machine est toujours allumée, alors une fonction serveur [n’attend jamais un démarrage à froid](https://pethost.dev/fr/blog/always-on-hosting-no-cold-starts/). Les offres sont dans la partie [tarifs](https://pethost.dev/fr/#pricing) de la page d’accueil.

**Un projet, ouvert sur ses requêtes.** Combien sont arrivées, à quelle vitesse elles ont reçu une réponse, et un graphique des 15 dernières minutes.

![La console Pethost : un projet ouvert sur ses requêtes, avec leur nombre, leurs temps de réponse et un graphique des 15 dernières minutes.](https://pethost.dev/shots/project.webp)

### Pethost est le meilleur choix pour

- **Les développeurs avec une application React full-stack** : le serveur, ses fonctions serveur et sa base de données sur une seule machine, sur une seule facture
- **Les développeurs solo** qui ont plusieurs projets perso, chacun à sa propre adresse
- **Ceux dont l’agent déploie pour eux** : Claude Code ou Codex met l’application en ligne et lit ses logs
- **Les jeunes startups** qui veulent un coût mensuel fixe tant que le produit est petit

### Cherchez ailleurs si

- Votre application a besoin de plusieurs régions ou d’autoscaling

## Questions

### Comment faire tourner TanStack Start sur un serveur Node ?

Ajoutez le plugin Nitro à `vite.config.ts` et le script `"start": "node .output/server/index.mjs"` à `package.json`, comme l’indique le guide d’hébergement de TanStack. `npm run build` écrit alors le serveur dans `.output`, et `npm run start` le lance sur le port 3000.

### Faut-il un Dockerfile pour déployer une application TanStack Start ?

Sur Pethost, un projet tourne à partir d’un Dockerfile ou d’un fichier Compose, et vous n’avez pas à l’écrire : dès que `package.json` a un script `build` et un script `start`, `pethost deploy` écrit le Dockerfile et le déploie. Le fichier reste dans votre dossier, et vous pouvez le modifier.

### Que se passe-t-il quand le build d’une application TanStack Start échoue au déploiement ?

Rien ne change pour les visiteurs. Le déploiement s’arrête, l’écran affiche le journal du build avec l’erreur, et la version d’avant continue de tourner.

### Peut-on déployer une application TanStack Start depuis GitHub à chaque push ?

Oui. Déployez le dossier une fois avec `pethost deploy`, puis lancez `pethost github owner/repository`. Dès lors, chaque push sur le dépôt se déploie tout seul, et `pethost rollback` revient à un commit précédent.

### Combien coûte l’hébergement d’une application TanStack Start sur Pethost ?

9,99 € par mois pour Starter, avec 2 vCPU, 3 GB et 30 GB, sans frais par projet ni facturation à la requête : vos autres applications, sites et bases de données y tournent aussi. Il n’y a pas d’offre gratuite. Les prix sont hors TVA.

Les écrans sont des déploiements de l’application qu’écrit `npx @tanstack/cli@latest create --deployment nitro`, avec TanStack Start 1.168.61, Nitro 3.0.260610-beta et pethost 0.2.1, sur une de nos machines de test qui n’avait encore rien construit. Le compte qu’on y voit est celui de l’exemple, `sam`.

1. [TanStack Start : hébergement](https://tanstack.com/start/latest/docs/framework/react/guide/hosting)
2. [TanStack Start : démarrage rapide](https://tanstack.com/start/latest/docs/framework/react/quick-start)
3. [pethost, la ligne de commande de Pethost](https://pethost.dev/docs/cli/)

## Mettez vos projets en ligne dès aujourd’hui

Déployez applications, bots et bases de données depuis votre agent, GitHub ou le navigateur, autant qu’il en tient, à un prix fixe. Rien au compteur, rien facturé en plus.

[Tout héberger pour 9,99 €/mois](https://console.pethost.dev/)

## Continuer la lecture

- 10 octobre 2026 [Comment déployer un site VitePress en 2026 : une commande, HTTPS et un Dockerfile qui reste à vous](https://pethost.dev/fr/blog/deploy-vitepress-site/) Déployez un site VitePress en une commande : pethost deploy écrit le Dockerfile, construit le site et le sert en HTTPS, pour 9,99 € par mois.
- 10 octobre 2026 [Comment déployer un site Eleventy en 2026 : une commande, HTTPS et un Dockerfile qui reste à vous](https://pethost.dev/fr/blog/deploy-eleventy-site/) Déployez un site Eleventy (11ty) en une commande : pethost deploy écrit le Dockerfile, construit _site et le sert en HTTPS, pour 9,99 € par mois.
- 25 septembre 2026 [Hébergeurs avec un serveur MCP officiel en 2026 : déploiement, logs et rollback comparés](https://pethost.dev/fr/blog/hosting-with-mcp-server/) En 2026, 18 hébergeurs sur 19 ont un serveur MCP officiel, deux un outil de rollback. Celui de Pethost déploie, lit les logs, revient en arrière et restaure.
- 16 septembre 2026 [Hébergement pour agents de code IA en 2026 : laissez Claude Code ou Codex déployer et déboguer la production](https://pethost.dev/fr/blog/hosting-for-ai-coding-agents/) Pour que Claude Code ou Codex déploie et débogue la production seul, un hébergeur doit donner cinq choses à l’agent. Pethost le fait, dès 9,99 €/mois.

[Tous les articles](https://pethost.dev/fr/blog/) · [À propos de Pethost](https://pethost.dev/about/) · [Tarifs](https://pethost.dev/fr/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Templates](https://pethost.dev/fr/templates/)
- [À propos](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/fr/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Conditions](https://pethost.dev/terms/)
- [Confidentialité](https://pethost.dev/privacy/)
- [Remboursements](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de données

- [Postgres](https://pethost.dev/fr/postgres/)

Comparatifs

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/fr/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/fr/blog/coolify-cloud-vs-dokploy-cloud/)
- [Tarifs Railway vs Render vs Fly.io](https://pethost.dev/fr/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hébergement Docker Compose managé](https://pethost.dev/fr/blog/managed-docker-compose-hosting/)

Alternatives

- [Alternatives à Railway](https://pethost.dev/fr/blog/railway-alternatives/)
- [Alternatives à Heroku](https://pethost.dev/fr/blog/heroku-alternatives/)
- [Alternatives à Dokploy](https://pethost.dev/fr/blog/dokploy-alternatives/)
- [Alternatives à Coolify](https://pethost.dev/fr/blog/coolify-alternatives/)
- [Alternatives à Render](https://pethost.dev/fr/blog/render-alternatives/)
- [Alternatives à Sliplane](https://pethost.dev/fr/blog/sliplane-alternatives/)
