---
title: "Como fazer deploy de um app React Router em 2026"
description: "Faça o deploy de um app React Router renderizado no servidor: o pethost deploy faz o build do Dockerfile do template e serve com HTTPS em 11 s, por € 9,99/mês."
---

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

# Como fazer deploy de um app React Router em 2026: o Dockerfile do template, um comando e HTTPS

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

Você criou um app com o `create-react-router`, ele renderiza no servidor, e você quer colocá-lo no ar em um endereço com HTTPS. O template padrão já vem com um Dockerfile, e no Pethost é só disso que um projeto precisa: rode `pethost deploy` na pasta do app. Na primeira vez, o template teve o build feito e foi iniciado em 11 segundos, e respondeu 200 no seu novo endereço.

**Em resumo**

- **Um comando:** `pethost deploy` na pasta que o `create-react-router` criou. Nada é adicionado ao app e não há configurações de build para preencher.
- **O que ele faz:** envia a pasta, faz o build do próprio Dockerfile do template na sua máquina e inicia o `react-router-serve`.
- **A porta:** o servidor escuta na 3000. O Pethost descobre isso e manda o endereço para lá, com HTTPS.
- **O endereço:** `https://my-app.yourname.pethost.app` na hora. Seu próprio domínio é um registro DNS.
- **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 React Router em 2026

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

**O app** aqui é o template padrão, com renderização no servidor e Tailwind CSS:

```
npx create-react-router@latest my-app
```

Ele deixa o `package.json`, o `package-lock.json`, a pasta `app/` e um `Dockerfile`. Os scripts dele são os que o Dockerfile roda:

```
"scripts": {
  "build": "react-router build",
  "dev": "react-router dev",
  "start": "react-router-serve ./build/server/index.js",
  "typecheck": "react-router typegen && tsc"
}
```

**O comando** é um programa só, 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 estiver logado, o `pethost deploy` abre o navegador e faz o seu login. Se você ainda não tiver um plano, ele mostra onde escolher um e espera.

## Faça o deploy do app React Router com um comando

Vá até a pasta do app e rode `pethost deploy`. Esta é a tela inteira, para o template padrão:

```
$ cd my-app
$ pethost deploy
Name it [my-app]:    it will live at https://my-app.sam.pethost.app
✓ Packed 22 files, 174 KB   (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 11 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 fica com o nome da pasta.
2. **A pasta vai para a sua máquina** Sem o `node_modules`: o build instala as dependências lá, a partir do `package-lock.json`.
3. **A máquina faz o build do Dockerfile** É o próprio arquivo do template, sem mudanças. A linha embaixo diz a única coisa que a máquina adicionou: um arquivo Compose em volta do Dockerfile, com um serviço chamado `app`.
4. **O app inicia e é acessado** A máquina 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 template no ar o que um visitante pede. A página inicial respondeu 200 com o HTML renderizado no servidor, `/favicon.ico` respondeu 200, e um endereço sem rota respondeu 404 com a própria página de erro do React Router.

O arquivo `.pethost` diz qual projeto é esta pasta. Faça o commit dele, e o próximo deploy não pergunta nada.

## O Dockerfile do template do React Router

Este é o arquivo que o `create-react-router` escreveu, e a máquina fez o build dele do jeito que está:

```
FROM node:24-alpine AS development-dependencies-env
COPY . /app
WORKDIR /app
RUN npm ci

FROM node:24-alpine AS production-dependencies-env
COPY ./package.json package-lock.json /app/
WORKDIR /app
RUN npm ci --omit=dev

FROM node:24-alpine AS build-env
COPY . /app/
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
WORKDIR /app
RUN npm run build

FROM node:24-alpine
COPY ./package.json package-lock.json /app/
COPY --from=production-dependencies-env /app/node_modules /app/node_modules
COPY --from=build-env /app/build /app/build
WORKDIR /app
CMD ["npm", "run", "start"]
```

Três coisas para saber sobre ele no Pethost:

- **Ele precisa do lockfile.** Os dois passos de `npm ci` leem o `package-lock.json`, então mantenha-o na pasta e no seu repositório.
- **Nenhuma porta é declarada.** O arquivo não tem a linha `EXPOSE` e não precisa dela: a máquina encontra a porta em que o servidor rodando escuta.
- **O app é pequeno quando roda.** O último estágio tem as dependências de produção e o build. O template rodando ocupou 79 MB de memória.

Um app sem Dockerfile não fica travado. Em uma pasta que não tem nem Dockerfile nem arquivo Compose, o `pethost deploy` escreve o Dockerfile para os tipos de projeto que conhece, como faz para um [app Nuxt](https://pethost.dev/pt/blog/deploy-nuxt-app/), e para qualquer outra pasta diz por que não escreveu nenhum.

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

Edite uma rota e rode o mesmo comando. O segundo deploy do template levou 6 segundos, porque a máquina guarda as camadas do build:

```
$ pethost deploy
my-app (.pethost)
✓ Packed 23 files · uploaded · built and started in 6 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
```

Para fazer deploy a cada push, conecte o repositório uma vez:

```
pethost github sam/my-app          # from now on, every push deploys itself
```

O Pethost lê só os repositórios que você deu ao GitHub App dele. Se um deploy der errado, o `pethost rollback` coloca de volta a versão anterior, e a sua máquina guarda as três versões anteriores à atual. 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 um loader ou uma action lê no servidor é 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 SESSION_SECRET
```

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 vem sozinho assim que o nome resolve, e se renova sozinho. O `pethost password` coloca uma página de senha na frente do app inteiro, para um que ainda não é público.

## O que você recebe pelo preço

O Pethost custa € 9,99 por mês por tudo que você hospeda, com 2 vCPU, 3 GB de memória e 30 GB de disco. O servidor do template ocupou 79 MB dessa memória, então a máquina tem espaço para o banco de dados do app, um worker e os seus outros projetos. 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/): a renderização no servidor não é cobrada por requisição, e um mês movimentado custa o mesmo que um mês tranquilo.

- **€ 9,99** por mês por todos os seus projetos, nada medido
- **11 s** para fazer o build e iniciar o template, na primeira vez
- **79 MB** de memória para o app rodando

O que já vem pronto: HTTPS com certificados que se renovam sozinhos, deploys a partir do GitHub, backups toda noite 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 a primeira requisição da manhã [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.

**Cada projeto, identificado.** Sete projetos em uma máquina Starter: os apps com seus endereços e as requisições do último dia, os bancos de dados com os apps que os usam.

![A primeira página do painel do Pethost: a CPU, a memória e o disco da máquina, e os projetos dela como cards.](https://pethost.dev/shots/projects.webp)

### O Pethost é a melhor escolha para

- **Desenvolvedores com um app React full-stack**: o app renderizado no servidor e o banco de dados dele em uma máquina, em uma só conta
- **Desenvolvedores solo** com vários projetos paralelos, cada um em um endereço próprio
- **Quem tem um agente que faz o deploy**: o Claude Code ou o Codex coloca o app no ar e lê os logs dele
- **Startups em estágio inicial** 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

### Onde hospedar um app React Router com renderização no servidor?

Em qualquer provedor de hospedagem que rode um servidor Node ou um container Docker. No Pethost, você roda `pethost deploy` na pasta do app: a máquina faz o build do Dockerfile do template, inicia o `react-router-serve` e serve o app com HTTPS.

### Preciso mudar o Dockerfile que o create-react-router escreve?

Não. A máquina fez o build do Dockerfile do template padrão do jeito que está. Ele não tem a linha `EXPOSE` e não precisa dela: o Pethost encontra a porta em que o servidor escuta, a 3000.

### Dá para fazer deploy de um app React Router 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 próprio deploy, e o `pethost rollback` volta para um commit anterior.

### Como configurar variáveis de ambiente em um app React Router?

Rode `pethost env set NAME` na pasta do app. Ele pede o valor sem mostrá-lo e o coloca no arquivo `.env` do projeto na máquina, que o servidor lê e todos os deploys seguintes mantêm.

### Quanto custa hospedar um app React Router 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 template padrão que o `create-react-router` escreve, com o React Router 8.4.0 e o pethost 0.2.1, em uma máquina de teste nossa. A conta nelas é a de exemplo, `sam`.

1. [React Router: instalação](https://reactrouter.com/start/framework/installation)
2. [React Router: deploy](https://reactrouter.com/start/framework/deploying)
3. [React Router: os templates oficiais](https://github.com/remix-run/react-router-templates)
4. [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 app TanStack Start em 2026: Nitro, um script start e um comando](https://pethost.dev/pt/blog/deploy-tanstack-start-app/) 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.
- 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.

[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/)
