Skip to main content
Um site só de HTML, CSS, JavaScript do navegador e imagens sobe direto, sem servidor seu. Você envia o .zip com o index.html e a Cube serve os arquivos em https://nome.cubehost.dev, com HTTPS. Não tem arquivo principal, comando de início, versão nem instalação de dependências.
Sites são dos planos pagos, a partir do Block. O site estático usa o mínimo de memória de um site, 512 MB. Veja os planos.

Pelo painel

1

Compacte a pasta do site

O .zip precisa ter o index.html na raiz, ou numa pasta só dentro dele (o “Compactar” do Windows e o “Comprimir” do macOS fazem assim). Leve junto o CSS, as imagens e as outras páginas.
2

Envie em Novo projeto

Solte o .zip em Projetos › Novo projeto. Sem cube.json, sem package.json e sem requirements.txt, o painel já preenche Site estático (HTML): tipo Site, linguagem HTML e a pasta servida, que é a pasta do index.html. Escolha o subdomínio, se quiser, e clique em Enviar e instalar.
3

Abra o endereço

Em segundos o site está no ar no endereço .cubehost.dev do projeto. Para mudar o site, envie um .zip novo em Configurações › Deploy.
Tem um .zip de outro tipo de projeto? Em Novo projeto e em Configurações › Geral, a linguagem HTML fica ao lado de Node.js e Python.

Pela API ou pela CLI

Na API, o .zip só de HTML vira site estático sozinho, sem cube.json:
Para escolher de propósito, mande language=static no formulário ou um cube.json na raiz. Sem root, a pasta servida é a do index.html mais raso do .zip: a raiz, ou dist quando o index.html só existe em dist/. Na CLI, crie o projeto com o cube.json na pasta e rode cube deploy:
cube.json

O que é servido

  • A página inicial é o index.html da pasta servida. Uma pasta abre o index.html dela: /blog/ mostra blog/index.html, e /blog leva para /blog/.
  • O tipo de cada arquivo vem da extensão (.html, .css, .js, .png, .svg, .webp, .woff2, .mp4 e outros), sempre com X-Content-Type-Options: nosniff.
  • Cache: o HTML é conferido a cada visita, então uma versão nova aparece na hora. Arquivo com hash de build no nome, como o main.3f2a1b4c.js ou o index-D8a9xK2z.js, fica em cache por 1 ano. O resto é conferido a cada visita, com resposta 304 quando não mudou: trocou o logo-empresa1.png e reenviou, o visitante já vê o novo.
  • Vídeo e áudio abrem em pedaços, como o Safari do iPhone pede.

O que nunca é servido

  • Arquivo ou pasta que começa com ponto, em qualquer nível: .env, .git, .htaccess, .well-known. Mesmo que vá no .zip por engano, o visitante recebe 404.
  • O cube.json.
  • Nada fora da pasta servida: endereços com ../, codificados ou não, dão 404.
Não deixe segredo no .zip de um site. Tudo o que o navegador baixa (HTML, CSS e JavaScript) qualquer visitante lê. Chave de API ou senha precisa de um servidor: use um site Node.js ou Python com variáveis de ambiente.

Página de não encontrado

Ponha um 404.html na pasta servida: ele aparece, com o status 404, para todo endereço que não existe. Sem ele, a Cube mostra uma página simples de “Página não encontrada”.

Build de React, Vite ou Astro

A Cube não roda o build do site estático. Rode no seu computador e envie o resultado:
1

Faça o build

npm run build gera a pasta com o site pronto (dist no Vite e no Astro, build no Create React App).
2

Diga qual pasta servir

Ponha um cube.json na raiz do projeto com a pasta em root:
cube.json
O projeto do Vite tem um index.html na raiz também (o de antes do build), então diga o root. O root também muda em Configurações › Geral › Pasta servida.
3

Envie o .zip

Compacte a pasta do projeto (sem o node_modules) e envie. Só a pasta dist fica no ar.
App de página única com rotas no navegador (React Router, Vue Router) que usa endereços como /sobre: copie o index.html para 404.html dentro da pasta servida. Assim qualquer rota abre o app.

Trocar de linguagem

Em Configurações › Geral, a linha Linguagem troca entre Node.js, Python e HTML. Ao sair do HTML, informe o arquivo principal ou o comando de início. A troca vale no próximo início ou reinício do projeto.