# Deploy de site estático

> Site já compilado (HTML, CSS e JS) usa o Build Pack Static na W8 Hub, sem Dockerfile. Veja como escolher o modo e o que conferir se aparecer a página padrão do Nginx.

_Fonte: https://w8hub.com.br/docs/deploy-site-estatico_

Site estático é o que já está pronto para o navegador: HTML, CSS, JS e imagens. Na W8 Hub ele sobe pelo Build Pack **Static**, a partir de um repositório do GitHub.

> [!WARNING]
> **Escolha o Build Pack antes de escrever qualquer Dockerfile.** Site já compilado usa **Static** (ou **Static SPA**). O **Dockerfile** é um modo à parte, para quem quer controle total do ambiente — não é o caminho para publicar HTML e CSS.

## “Build” quer dizer três coisas

A mesma palavra cobre etapas diferentes, e só uma delas é sua quando o site é estático:

| Etapa | Quem faz | Onde acontece |
| --- | --- | --- |
| **Compilar** o site (gerar HTML, CSS e JS) | Você | Na sua máquina ou no CI, antes do push |
| **Montar a imagem** do container | A W8 Hub | No deploy, conforme o Build Pack escolhido |
| **Publicar** (subir o container) | A W8 Hub | No deploy |

Com Static, a compilação fica do seu lado: a W8 Hub recebe os arquivos prontos. A montagem e a publicação aparecem nos [logs](https://w8hub.com.br/docs/logs) do deploy.

## Qual modo usar

| O que você envia | Origem | Modo |
| --- | --- | --- |
| HTML, CSS e JS já compilados | Repositório GitHub | **Static** |
| SPA já compilada (React, Vue, Angular), com as rotas atendidas pelo mesmo `index.html` | Repositório GitHub | **Static SPA** |
| Site que precisa ser compilado antes (gerador de site, TypeScript, Markdown) | Repositório GitHub | Compile você mesmo, envie a saída pronta e use **Static** |
| App que roda um servidor e tem comando `start` | Repositório GitHub | **Nixpacks** |
| Repositório com `Dockerfile` próprio | Repositório GitHub | **Dockerfile** |
| Imagem já construída em um registro | Imagem Docker | Sem Build Pack — a imagem já vem pronta |

O Build Pack só aparece quando a origem é um repositório GitHub. Detalhes de cada modo em [Modos de build](https://w8hub.com.br/docs/implantacoes#modos-de-build).

## Do commit ao ar

1. Compile o site na sua máquina ou no CI e confira que a saída é só arquivo estático.
2. Faça commit da saída compilada no repositório e push na branch conectada.
3. Crie a instalação com origem **GitHub** e Build Pack **Static** (ou **Static SPA**). O passo a passo do assistente está em [Criar uma instalação](https://w8hub.com.br/docs/criar-uma-instalacao).
4. Ative um [health check](https://w8hub.com.br/docs/instalacao-configuracoes#health-checks) antes de considerar o deploy pronto.

Depois de publicar:

- Para não redeployar a cada mudança que não afeta o site, filtre com [Watch Paths](https://w8hub.com.br/docs/instalacao-configuracoes#watch-paths).
- Variável de ambiente não muda um site já compilado. Veja o aviso em [Variáveis de ambiente](https://w8hub.com.br/docs/instalacao-configuracoes#variaveis-de-ambiente).

## Página padrão do Nginx depois do deploy

O deploy terminou e o domínio responde, mas a página é **“Welcome to nginx!”**. O Nginx está no ar e não encontrou o seu `index.html` no caminho que está servindo. Confira:

1. **Origem Imagem Docker com `nginx:latest`** (ou outra imagem pronta de Nginx): essa imagem é só o Nginx padrão. Para publicar seus arquivos, use a origem GitHub com Static.
2. **Build Pack Dockerfile** com um `Dockerfile` que parte de `FROM nginx` e não copia (`COPY`) os seus arquivos para a imagem.
3. **Arquivos numa subpasta:** se a saída compilada ficou em `dist/site` ou parecido, o servidor pode estar procurando o `index.html` na raiz e servindo a página padrão. Confira o caminho que a instalação serve antes de trocar o Build Pack.

Se nada disso explicar, chame o [suporte](https://w8hub.com.br/docs/suporte) com o commit e o link dos logs do deploy.
