Português

Blog · Guias de deploy

Como fazer deploy de um app Nuxt em 2026: um comando, um servidor Node e HTTPS

Pela equipe da Pethost · · Atualizado em · 8 min de leitura

Você tem um app Nuxt que roda com npm run dev e quer colocá-lo no ar em um endereço com HTTPS, renderizando no servidor. No Pethost, isso é um comando, pethost deploy, rodado na pasta que tem o package.json. Ele escreve o Dockerfile para você, roda o nuxt build e inicia o servidor que o build escreveu. O starter do próprio Nuxt teve o build feito e foi iniciado em 53 segundos na primeira vez.

Em resumo
  • Um comando: pethost deploy na pasta que tem o package.json. Não há preset para escolher nem script de start para adicionar.
  • O que ele faz: encontra o nuxt e o script que roda nuxt build, escreve um Dockerfile que o roda e inicia node .output/server/index.mjs.
  • A porta: o servidor do Nuxt escuta na 3000. O Pethost encontra a porta e manda o endereço para lá, com HTTPS.
  • O endereço: https://nuxt-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 Nuxt em 2026

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

O app aqui é o que a página de instalação do Nuxt deixa pronto, com o template mínimo e o npm:

npm create nuxt@latest nuxt-app

Ele escreve o nuxt.config.ts, a pasta app/ e um package.json com estes scripts. Nenhum deles é um script de start, e nenhum é necessário:

"scripts": {
  "build": "nuxt build",
  "dev": "nuxt dev",
  "generate": "nuxt generate",
  "preview": "nuxt preview",
  "postinstall": "nuxt prepare"
}

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

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

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

https://nuxt-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 viu o nuxt no package.json e um script que roda nuxt build, 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.

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

O Dockerfile que o pethost escreve para o Nuxt

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

# Written by pethost deploy for this Nuxt project: Node 24 (no .nvmrc names another),
# npm installs it (package-lock.json), package.json builds it with "nuxt build", node
# runs .output/server/index.mjs (package.json has no start script).
# 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 ["node", ".output/server/index.mjs"]

As primeiras linhas dele dizem o que o pethost leu na sua pasta. Três coisas vêm de lá:

O starter rodando ocupou 30 MB de memória. Se a máquina não consegue fazer o build ou iniciar o Dockerfile que o pethost escreveu, o pethost tira o arquivo da sua pasta e diz o que falhou.

Runtime config e variáveis de ambiente

O Nuxt lê o runtime config dele das variáveis que começam com NUXT_ quando o servidor inicia. No Pethost, uma variável é um comando. Ela vai para o arquivo .env do projeto na máquina, que o serviço lê e que todo deploy seguinte mantém:

pethost env set NUXT_PUBLIC_API_BASE=https://api.example.com
pethost env set NUXT_API_SECRET          # asks for the value without showing it

O app reinicia com o novo valor. pethost env lista os nomes, e pethost env --show mostra o arquivo com os valores.

Altere uma página e faça o deploy de novo

Edite o app/app.vue e rode o mesmo comando. O segundo deploy do starter levou 12 segundos, porque a máquina guarda as camadas do build e o cache do npm:

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

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

pethost github sam/nuxt-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, pethost rollback coloca de volta a versão anterior, e a sua máquina guarda as três versões antes da 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.

Use seu próprio domínio no app Nuxt

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. 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 o que você hospeda, com 2 vCPU, 3 GB de memória e 30 GB de disco. O servidor do starter ocupou 30 MB dessa memória, então a máquina tem espaço para a API que o app chama, o banco de dados dele e os seus outros projetos. Não há taxa por projeto e nada é medido: a renderização no servidor não é cobrada por requisição.

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 página nunca espera um cold start. Os planos estão na parte de preços da página inicial.

Quanto cada projeto ocupa. A página de capacidade: cada projeto com a memória, a CPU e o disco dele.
A página de capacidade do painel do Pethost: cada projeto com a memória, a CPU e o disco dele.

O Pethost é a melhor escolha para

  • Desenvolvedores Vue com um app full-stack: o servidor do Nuxt, as rotas de API dele 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

Um app Nuxt 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: em uma pasta que não tem nenhum dos dois, o pethost deploy escreve o Dockerfile de um projeto Nuxt e faz o deploy. O arquivo fica na sua pasta, e você pode alterá-lo.

Qual preset do Nitro o Nuxt precisa no Pethost?

Nenhum precisa ser definido. Por padrão, o nuxt build escreve um servidor Node em .output, e o Dockerfile o inicia com node .output/server/index.mjs.

Em qual porta o servidor do Nuxt escuta?

Na 3000, por padrão. O Pethost encontra a porta em que o servidor rodando escuta e manda o endereço para lá, com HTTPS, então não há porta para declarar.

Como definir variáveis de ambiente de um app Nuxt em produção?

Rode pethost env set NUXT_API_SECRET na pasta do app. Ele pede o valor sem mostrá-lo e o coloca no arquivo .env do projeto na máquina. O Nuxt lê as variáveis que começam com NUXT_ no runtime config dele quando o servidor inicia.

Dá para fazer deploy de um app Nuxt 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 Nuxt 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 npm create nuxt@latest escreve a partir do template mínimo, com o Nuxt 4.6.1 e o pethost 0.2.1, em uma máquina de teste nossa. A conta nelas é a de exemplo, sam.

  1. Nuxt: instalação
  2. Nuxt: deploy
  3. Nuxt: runtime config
  4. pethost, a linha de comando do Pethost

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