Português

Blog · Guias de deploy

Como fazer deploy de um site VitePress em 2026: um comando, HTTPS e um Dockerfile que fica com você

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

Você tem um site VitePress que faz build no seu notebook e quer colocá-lo no ar em um endereço com HTTPS. No Pethost, isso é um comando, pethost deploy, rodado na pasta que tem o package.json. Ele escreve o Dockerfile para você, faz o build do site e mostra o endereço dele. O starter do próprio VitePress teve o build feito e foi iniciado em 43 segundos na primeira vez.

Em resumo
  • Um comando: pethost deploy na pasta que tem o package.json. Não há arquivo de configuração para escrever nem configurações de build para preencher.
  • O que ele faz: encontra o script que roda vitepress build, escreve um Dockerfile que o roda e serve o docs/.vitepress/dist.
  • O endereço: https://my-docs.yourname.pethost.app, com HTTPS na hora. Seu próprio domínio é um registro DNS.
  • O Dockerfile é seu: ele fica na pasta para você guardar e alterar, e o pethost nunca o escreve de novo.
  • O preço: € 9,99 por mês por 2 vCPU, 3 GB e 30 GB, para este site e todos os seus outros projetos. Não existe plano gratuito.

O que você precisa para fazer deploy de um site VitePress em 2026

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

O site é uma pasta como os primeiros passos do VitePress a deixam: npm add -D vitepress, depois npx vitepress init. O assistente coloca as páginas em docs/ e três scripts no package.json:

"scripts": {
  "docs:dev": "vitepress dev ./docs",
  "docs:build": "vitepress build ./docs",
  "docs:preview": "vitepress preview ./docs"
}

O comando é um programa, instalado com uma linha:

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 site VitePress com um comando

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

$ cd my-docs
$ pethost deploy
Name it [my-docs]:    it will live at https://my-docs.sam.pethost.app
✓ Packed 6 files, 90 KB   (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ VitePress site detected, wrote Dockerfile.
✓ Packed 7 files, 91 KB   (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 43 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-docs.sam.pethost.app
  It answers 200.

https://my-docs.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 vitepress no package.json e um script que roda vitepress build, e envia a pasta de novo.
  4. A máquina faz o build e o inicia 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 VitePress

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

# Written by pethost deploy for this VitePress site: package.json builds it with
# "vitepress build ./docs", which writes docs/.vitepress/dist, Node 24 (no .nvmrc names
# another), npm installs it (package-lock.json).
# It is yours now: change it as you like. pethost does not write it again.

FROM node:24 AS build
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 docs:build

# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /app/docs/.vitepress/dist /srv

COPY <<'EOF' /etc/caddy/Caddyfile
:80 {
	root * /srv
	# A browser that takes its answers compressed gets them so.
	encode
	# Names that begin with a dot are no pages;
	# .well-known is the one such folder that is there for visitors.
	@own {
		path */.*
		not path /.well-known/*
	}
	error @own 404
	# A page's address works without its ".html", and a folder's leads to its index.html.
	try_files {path} {path}.html {path}/
	file_server
	# An address that is no page: the site's own 404.html, if it has one.
	handle_errors 404 {
		rewrite * /404.html
		file_server
	}
}
EOF
EXPOSE 80

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

A segunda metade é um pequeno servidor web para as páginas depois do build. Perguntamos ao starter no ar o que um visitante pergunta. A página inicial, /markdown-examples e /markdown-examples.html responderam 200 cada uma, e um endereço que não é uma página respondeu 404 com a própria página “404” do VitePress.

Mais duas coisas mantêm um arquivo errado longe de você. 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. E se a sua configuração define base como um caminho do tipo /docs/, o pethost não escreve nada e diz por quê: no Pethost, um site fica na raiz do próprio endereço, então defina base como "/" e faça o deploy de novo.

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

Edite uma página e rode o mesmo comando. O segundo deploy do starter levou 4 segundos, porque a máquina guarda as camadas do build:

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

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

pethost github sam/my-docs          # 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 na documentação

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 docs.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 site inteiro, para uma documentação que ainda não é pública.

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. Um site VitePress depois do build são arquivos atrás de um pequeno servidor web, então a máquina tem espaço para a aplicação que a documentação descreve, o banco de dados dela e os seus outros projetos. Não há taxa por projeto e nada é medido: o segundo site não custa nada a mais.

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. O painel mostra os caminhos mais acessados dos últimos 30 dias, que, para um site de documentação, é a lista das páginas que as pessoas leem de verdade. 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.

Quais páginas as pessoas leem. Os dez caminhos mais acessados de um projeto, com sua fatia e tempos de resposta, e o log de requisições individuais.
O painel do Pethost: os dez caminhos mais acessados de um projeto, com fatia, contagem e tempos de resposta, e o log de requisições individuais.

O Pethost é a melhor escolha para

  • Desenvolvedores que mantêm a documentação ao lado do app: a API, o banco de dados dela e o site VitePress em uma máquina, em uma só fatura
  • Desenvolvedores solo com vários projetos paralelos, cada um com seu próprio site
  • Quem deixa o agente fazer o deploy: o Claude Code ou o Codex coloca o site no ar e lê os logs dele
  • Equipes pequenas que querem a documentação atrás de uma página de senha até o lançamento

Procure outra opção se

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

Perguntas

Um site VitePress 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 site VitePress e faz o deploy. O arquivo fica na sua pasta, e você pode alterá-lo.

Qual gerenciador de pacotes e versão do Node o build do VitePress usa?

Os que a sua pasta indica. O gerenciador de pacotes é o do seu lockfile: npm, pnpm, Yarn ou Bun. A versão do Node é a do .nvmrc ou do .node-version, e o Node 24 quando não há nenhum dos dois.

Dá para fazer deploy do VitePress pelo 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.

Como usar um domínio próprio com HTTPS em um site VitePress?

Rode pethost domain add docs.example.com e crie o único registro DNS que ele mostra, um CNAME para o nome da sua máquina. O certificado chega sozinho assim que o nome resolve, e se renova sozinho.

Quanto custa hospedar um site VitePress no Pethost?

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

Por que o pethost deploy recusa um site VitePress que define base?

Um site com build feito com base definido como um caminho do tipo /docs/ procura seus estilos e scripts sob esse caminho. No Pethost, um site fica na raiz do próprio endereço, então o pethost não escreve Dockerfile para ele e avisa. Defina base como "/" e faça o deploy de novo.

As telas são deploys do site que o vitepress init escreve, com o VitePress 1.6.4 e o pethost 0.2.1, em uma máquina de teste nossa. A conta nelas é a de exemplo, sam.

  1. VitePress: primeiros passos
  2. VitePress: faça o deploy do seu site
  3. 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