---
title: "Como fazer deploy de um app TanStack Start em 2026"
description: "Deploy do TanStack Start em um servidor Node: adicione o Nitro e um script start, rode pethost deploy, e o app fica no ar com HTTPS em 29s, por € 9,99 por mês."
---

[Blog](https://pethost.dev/pt/blog/) · Guias de deploy

# Como fazer deploy de um app TanStack Start em 2026: Nitro, um script start e um comando

Pela equipe da Pethost · 10 de outubro de 2026 · Atualizado em 25 de outubro de 2026 · 9 min de leitura

Você tem um app TanStack Start e quer colocá-lo em um servidor Node, em um endereço com HTTPS. O guia de hospedagem do TanStack pede duas coisas do app para isso: o plugin do Nitro e um script `start`. Com os dois no lugar, o `pethost deploy` escreve o Dockerfile, faz o build do app e mostra o endereço dele. O app que a CLI do TanStack cria teve o build feito e foi iniciado em 29 segundos na primeira vez.

**Em resumo**

- **Duas coisas no app:** o plugin do Nitro, que o `--deployment nitro` adiciona quando o app é criado, e `"start": "node .output/server/index.mjs"` no `package.json`.
- **Um comando:** `pethost deploy` na pasta que tem o `package.json`. Ele escreve um Dockerfile que roda `npm run build` e depois `npm run start`.
- **A porta:** o servidor do Nitro escuta na 3000. O Pethost encontra essa porta e manda o endereço para lá, com HTTPS.
- **Um build que falha não muda nada:** a versão anterior continua rodando, e a tela mostra o erro do build.
- **O preço:** € 9,99 por mês por 2 vCPU, 3 GB e 30 GB, para este app e todos os seus outros projetos. Não existe plano gratuito.

## O que você precisa para fazer deploy de um app TanStack Start em 2026

Três coisas: o app, o comando `pethost` e uma conta no Pethost.

**O app** aqui é o que a CLI do TanStack cria, com o Nitro como destino de deploy:

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

A flag adiciona o plugin do Nitro ao `vite.config.ts`. Em um app que você já tem, adicione-o como diz a parte do Nitro no guia de hospedagem:

```
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()],
})
```

Depois dê ao `package.json` o script que inicia o que o build escreve. A CLI deixa ali o `build` e nenhum `start`:

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

**O comando** é um programa, instalado com uma linha. Todos os comandos dele estão na [referência da 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
```

**A conta** precisa de um plano. Se você não entrou, o `pethost deploy` abre o seu navegador e faz o seu login. Se você ainda não tem um plano, ele mostra onde escolher um e espera.

## Faça o deploy do app TanStack Start com um comando

Vá até a pasta que tem o `package.json` e rode `pethost deploy`. Esta é a tela inteira, para o app que a CLI criou:

```
$ 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. **Ele pergunta uma coisa** O nome do projeto, que é a primeira palavra do endereço. Enter usa o nome da pasta.
2. **A máquina não encontra nada para rodar** A pasta vai direto para a sua máquina, sem o `node_modules`. A linha com o X é a resposta dela: um projeto roda a partir de um Dockerfile ou de um arquivo Compose, e a pasta ainda não tem nenhum dos dois.
3. **O pethost escreve o Dockerfile** Ele leu os scripts `build` e `start` do `package.json`, e envia a pasta de novo.
4. **A máquina faz o build e o inicia** Ela vê que o servidor escuta na 3000 e manda o endereço para lá. Depois o pethost acessa o próprio endereço e mostra o que ele respondeu: 200.

Pedimos ao app no ar o que um visitante pede. A página inicial e `/about` responderam 200 com HTML renderizado no servidor, e um endereço sem rota respondeu 404. O servidor rodando ocupou 43 MB de memória.

## O Dockerfile que o pethost escreve para o TanStack Start

Este é o arquivo como foi escrito na pasta do app, inteiro:

```
# 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"]
```

As primeiras linhas dele dizem o que o pethost leu na sua pasta. O gerenciador de pacotes é o que o seu lockfile indica, e a versão do Node é a que o `.nvmrc` ou o `.node-version` indica, ou o Node 24 quando não há nenhum dos dois. O build e o start são os seus dois scripts, como você os escreveu.

### Sem o script start

Um app TanStack Start pode ter o build feito para vários tipos de hospedagem, então o pethost não tenta adivinhar como o seu inicia. Sem um script `start`, ele não escreve nenhum arquivo e diz por quê:

```
$ 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
```

Adicione o script e rode o comando de novo.

## Altere uma rota e faça o deploy de novo

Edite uma rota e rode o mesmo comando. O segundo deploy levou 7 segundos, porque a máquina guarda as camadas do build e o cache do 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
```

### Quando o build falha

Quebramos um arquivo de rota para ver isso. A tela mostra o log do build com o erro, e a última linha diz o que os visitantes recebem. Esta é essa tela, encurtada para três das suas linhas:

```
$ 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.
```

Para fazer o deploy a cada push, conecte o repositório uma vez com `pethost github sam/my-app`. O Pethost lê só os repositórios que você deu ao GitHub App dele. O `pethost rollback` coloca de volta a versão anterior à atual, e a sua máquina guarda as três versões antes dela. Um agente de IA pode fazer tudo isso por você pelo servidor MCP do Pethost: [como um agente faz o deploy de um projeto e cuida dele](https://pethost.dev/pt/blog/hosting-for-ai-coding-agents/).

## Variáveis de ambiente e seu próprio domínio

Uma variável que uma server function lê é um comando. Ele pede o valor sem mostrá-lo, coloca-o no arquivo `.env` do projeto na máquina, e os próximos deploys o mantêm:

```
pethost env set DATABASE_URL
```

Qualquer nome sob o domínio da sua conta já é um endereço na hora, com HTTPS. Um domínio seu leva um comando e um registro DNS:

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

O comando mostra o registro a criar: um CNAME do seu nome para o nome da sua máquina. O certificado chega sozinho assim que o nome resolve, e se renova sozinho.

## O que você recebe pelo preço

O Pethost custa € 9,99 por mês por tudo o que você hospeda, com 2 vCPU, 3 GB de memória e 30 GB de disco. O servidor do app ocupou 43 MB dessa memória, então a máquina tem espaço para o banco de dados dele, um worker e os seus outros projetos, como um [app React Router](https://pethost.dev/pt/blog/deploy-react-router-app/) ao lado dele. Não há [taxa por projeto](https://pethost.dev/pt/blog/unlimited-projects-flat-monthly-fee/) e [nada é medido](https://pethost.dev/pt/blog/paas-without-usage-based-billing/): as server functions não são cobradas por chamada.

- **€ 9,99** por mês por todos os seus projetos, nada medido
- **29s** para fazer o build e iniciar o app, na primeira vez
- **7s** para o deploy seguinte

O que já vem feito para você: HTTPS com certificados que se renovam sozinhos, deploys a partir do GitHub, backups noturnos guardados por 14 dias, SSH em qualquer container, e cada requisição contada, com os caminhos mais acessados e a taxa de erros dos últimos 30 dias. A máquina está sempre ligada, então uma server function [nunca espera um cold start](https://pethost.dev/pt/blog/always-on-hosting-no-cold-starts/). Os planos estão na parte de [preços](https://pethost.dev/pt/#pricing) da página inicial.

**Um projeto, aberto nas requisições.** Quantas chegaram, com que rapidez foram respondidas, e um gráfico dos últimos 15 minutos.

![O painel do Pethost: um projeto aberto nas requisições, com a contagem, os tempos de resposta e um gráfico dos últimos 15 minutos.](https://pethost.dev/shots/project.webp)

### O Pethost é a melhor escolha para

- **Desenvolvedores com um app React full-stack**: o servidor, as server functions e o banco de dados em uma máquina, em uma só fatura
- **Desenvolvedores solo** com vários projetos paralelos, cada um no seu próprio endereço
- **Quem deixa o agente fazer o deploy**: o Claude Code ou o Codex coloca o app no ar e lê os logs dele
- **Startups no começo** que querem um custo mensal fixo enquanto o produto é pequeno

### Procure outra opção se

- Sua aplicação precisa de várias regiões ou de autoscaling

## Perguntas

### Como rodar o TanStack Start em um servidor Node?

Adicione o plugin do Nitro ao `vite.config.ts` e o script `"start": "node .output/server/index.mjs"` ao `package.json`, como diz o guia de hospedagem do TanStack. Aí o `npm run build` escreve o servidor em `.output`, e o `npm run start` o roda na porta 3000.

### Um app TanStack Start precisa de Dockerfile para fazer deploy?

No Pethost, um projeto roda a partir de um Dockerfile ou de um arquivo Compose, e você não precisa escrevê-lo: quando o `package.json` tem um script `build` e um `start`, o `pethost deploy` escreve o Dockerfile e faz o deploy. O arquivo fica na sua pasta, e você pode alterá-lo.

### O que acontece quando o build do TanStack Start falha no deploy?

Nada muda para os visitantes. O deploy para, a tela mostra o log do build com o erro, e a versão que rodava antes continua rodando.

### Dá para fazer deploy de um app TanStack Start do GitHub a cada push?

Sim. Faça o deploy da pasta uma vez com `pethost deploy` e depois rode `pethost github owner/repository`. A partir daí, cada push no repositório faz o deploy sozinho, e `pethost rollback` volta para um commit anterior.

### Quanto custa hospedar um app TanStack Start no Pethost?

€ 9,99 por mês no Starter, com 2 vCPU, 3 GB e 30 GB, sem taxa por projeto e sem cobrança por requisição: seus outros apps, sites e bancos de dados também rodam lá. Não existe plano gratuito. Os preços são sem IVA.

As telas são deploys do app que o `npx @tanstack/cli@latest create --deployment nitro` escreve, com o TanStack Start 1.168.61, o Nitro 3.0.260610-beta e o pethost 0.2.1, em uma máquina de teste nossa que nunca tinha feito build de nada. A conta nelas é a de exemplo, `sam`.

1. [TanStack Start: hospedagem](https://tanstack.com/start/latest/docs/framework/react/guide/hosting)
2. [TanStack Start: quick start](https://tanstack.com/start/latest/docs/framework/react/quick-start)
3. [pethost, a linha de comando do Pethost](https://pethost.dev/docs/cli/)

## Coloque seus projetos no ar hoje

Publique apps, bots e bancos de dados pelo seu agente, pelo GitHub ou pelo navegador, quantos couberem, a um preço fixo. Nada medido, nada cobrado à parte.

[Hospede tudo por € 9,99/mês](https://console.pethost.dev/)

## Continue lendo

- 10 de outubro de 2026 [Como fazer deploy de um site VitePress em 2026: um comando, HTTPS e um Dockerfile que fica com você](https://pethost.dev/pt/blog/deploy-vitepress-site/) Faça o deploy de um site VitePress com um comando: o pethost deploy escreve o Dockerfile, faz o build do site e o serve com HTTPS, por € 9,99 por mês.
- 10 de outubro de 2026 [Como fazer deploy de um site Eleventy em 2026: um comando, HTTPS e um Dockerfile que fica com você](https://pethost.dev/pt/blog/deploy-eleventy-site/) Faça o deploy de um site Eleventy (11ty) com um comando: o pethost deploy escreve o Dockerfile, faz o build do _site e o serve com HTTPS, por € 9,99 por mês.
- 25 de setembro de 2026 [Provedores de hospedagem com servidor MCP oficial em 2026: deploy, logs e rollback comparados](https://pethost.dev/pt/blog/hosting-with-mcp-server/) 18 de 19 plataformas de hospedagem têm servidor MCP oficial em 2026, e duas têm ferramenta de rollback. As do Pethost fazem deploy, leem logs e restauram.
- 16 de setembro de 2026 [Hospedagem para agentes de código com IA em 2026: deixe o Claude Code ou o Codex fazer deploy e debug em produção](https://pethost.dev/pt/blog/hosting-for-ai-coding-agents/) Para o Claude Code ou o Codex fazerem deploy e debug em produção sozinhos, a hospedagem precisa dar cinco coisas ao agente. O Pethost dá, por € 9,99 por mês.

[Todos os artigos](https://pethost.dev/pt/blog/) · [Sobre a Pethost](https://pethost.dev/about/) · [Preços](https://pethost.dev/pt/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Templates](https://pethost.dev/pt/templates/)
- [Sobre nós](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/pt/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Termos](https://pethost.dev/terms/)
- [Privacidade](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bancos de dados

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

Comparativos

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/pt/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/pt/blog/coolify-cloud-vs-dokploy-cloud/)
- [Preços Railway vs Render vs Fly.io](https://pethost.dev/pt/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hospedagem gerenciada de Docker Compose](https://pethost.dev/pt/blog/managed-docker-compose-hosting/)

Alternativas

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