Hospedar site HTML na VPS: passo a passo com Nginx
Veja como hospedar um site HTML na VPS com Ubuntu: instalar o Nginx, criar a pasta e o bloco do site, enviar arquivos com scp, liberar o firewall e ativar o HTTPS.
Por Redação Eleven Host · @robson.direitodigital · 29 de outubro de 2026 · 9 min de leitura

Capa da Redação Eleven Host para o guia: Hospedar site HTML na VPS: passo a passo com Nginx Arte: Eleven Host
Para hospedar site HTML na VPS, instale o Nginx, crie uma pasta para o site, escreva um bloco de servidor apontando para ela, envie os arquivos com scp e ative o HTTPS com o Certbot. Este guia mostra cada passo em ordem.
Os comandos seguem a documentação do Ubuntu Server, do Nginx e do Certbot. Os exemplos usam seudominio.com.br como domínio, usuario como seu usuário e 203.0.113.10 como o IP da VPS. Troque pelos seus. Como o guia é feito para Ubuntu, ele vale se a sua VPS usa Ubuntu.
O que é um site estático e quando ele resolve
Um site estático é feito só de arquivos HTML, CSS, JavaScript e imagens, sem PHP e sem banco de dados. É o caso mais simples de hospedar, porque o Nginx apenas entrega os arquivos de uma pasta para quem acessa. Páginas de apresentação, portfólios e landing pages podem se encaixar nesse formato.
Se o seu site precisa de painel, formulário que grava dados ou loja, o desenho é outro. Para um WordPress, por exemplo, o caminho é outro: instalar PHP, banco de dados e o próprio WordPress.
O que você precisa antes
- Uma VPS com Ubuntu e um usuário que use
sudo. - Acesso por SSH. Se quer entrar com chave em vez de senha, veja o guia Como criar chave SSH e entrar na VPS sem senha.
- Um domínio com o registro A apontando para o IP da VPS, como mostra o guia Apontar domínio para VPS: passo a passo com registro A. Aponte
seudominio.com.bre também owww. - Os arquivos do site numa pasta do seu computador, por exemplo
meu-site, com um arquivoindex.htmldentro.
O domínio pode demorar um tempo para responder por causa do cache de DNS. Você pode seguir os passos enquanto isso, mas o HTTPS do passo final depende de o domínio já apontar para a VPS.
Passo a passo
Passo 1: instalar o Nginx
Conectado à VPS por SSH, atualize a lista de pacotes e instale o Nginx. A documentação do Ubuntu Server usa este comando:
sudo apt update && sudo apt install nginx
Segundo a documentação, a instalação já inicia o servidor web.
Passo 2: conferir se o Nginx está rodando
sudo systemctl status nginx
O serviço deve aparecer como ativo. Abra http://203.0.113.10 no navegador, trocando pelo IP da sua VPS. Deve aparecer a página "Welcome to nginx!". Segundo a documentação, esse site padrão serve arquivos de /var/www/html.
Passo 3: criar a pasta do site
sudo mkdir -p /var/www/seudominio.com.br/html
Esse caminho é uma convenção que usamos neste guia. O Nginx aceita outra pasta, desde que a diretiva root do passo 5 aponte para ela.
Passo 4: ajustar as permissões
Dê a pasta ao seu usuário, para enviar arquivos sem sudo, e deixe a leitura aberta:
sudo chown -R $USER:$USER /var/www/seudominio.com.br
sudo chmod -R 755 /var/www/seudominio.com.br
Essa é uma prática comum, e não uma etapa da documentação do Nginx. Se as permissões ficarem erradas, o site responde com erro 403, assunto do guia Erro 403 Forbidden: o que é e como resolver no seu site.
Precisa de uma VPS para publicar o seu site? O Plano Bronze sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS
Passo 5: criar o bloco do site
A documentação do Ubuntu manda gravar cada site em /etc/nginx/sites-available/, com o nome do domínio, e ativá-lo depois por um link em sites-enabled. Abra o arquivo:
sudo nano /etc/nginx/sites-available/seudominio.com.br
E cole este conteúdo:
server {
listen 80;
listen [::]:80;
server_name seudominio.com.br www.seudominio.com.br;
root /var/www/seudominio.com.br/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Segundo a documentação do Nginx, cada linha faz o seguinte:
listendefine o endereço e a porta em que o site atende. A linha com[::]é a versão para IPv6.server_namedefine os nomes do site.rootdefine a pasta dos arquivos.indexdefine o arquivo aberto quando se pede só a pasta.try_filesprocura o arquivo pedido, depois a pasta, e responde404se nada existir.
Salve e saia do nano com Ctrl+O, Enter e Ctrl+X.
Passo 6: ativar o site
sudo ln -s /etc/nginx/sites-available/seudominio.com.br /etc/nginx/sites-enabled/
Opcionalmente, tire o site padrão. O comando apaga só o link, e o arquivo original continua em sites-available:
sudo rm /etc/nginx/sites-enabled/default
Passo 7: testar a configuração
sudo nginx -t
Segundo o Nginx, esse comando confere a sintaxe do arquivo de configuração e tenta abrir os arquivos citados nele. Só siga para o próximo passo se o teste indicar que deu certo. Se der erro, leia a mensagem para corrigir.
Passo 8: recarregar o Nginx
sudo systemctl reload nginx
Segundo o Nginx, o reload carrega a configuração nova e encerra os processos antigos de forma gradual, sem derrubar quem está acessando.
Rode o teste da configuração antes do reload. Um erro de digitação no bloco do site aparece no nginx -t, antes de chegar a quem visita o site.
Passo 9: enviar os arquivos do site
No terminal do seu computador, e não da VPS, use o scp. A opção -r copia a pasta inteira:
scp -r ./meu-site/* usuario@203.0.113.10:/var/www/seudominio.com.br/html/
O destino segue o formato usuario@host:caminho. Se o seu SSH usa outra porta que não a 22, acrescente -P com P maiúsculo e o número da porta. Segundo o manual do scp, desde o OpenSSH 9.0 ele usa o protocolo SFTP nas transferências por padrão.
Outra opção é o sftp, que o manual descreve como um programa de transferência parecido com o ftp, mas com todas as operações pelo transporte criptografado do SSH:
sftp usuario@203.0.113.10
cd /var/www/seudominio.com.br/html
put -R meu-site/*
No put, o recursivo é o -R maiúsculo. Programas gráficos de SFTP também servem, se você prefere arrastar e soltar.
Abra http://seudominio.com.br no navegador. Se a configuração estiver correta, aparece a sua página. Se continuar a página "Welcome to nginx!", confira se o domínio já aponta para a VPS e se o link do site padrão foi removido no passo 6.
Passo 10: liberar o firewall
Se você usa o ufw, veja os perfis de aplicativo disponíveis:
sudo ufw app list
Se aparecer o perfil "Nginx Full", ele libera as portas 80 e 443. Antes de ligar o firewall, libere o SSH. Esse aviso é nosso, e não uma frase da documentação: se você ligar o ufw sem liberar o SSH, pode ficar trancado fora da VPS. A documentação do Ubuntu mostra a liberação da porta 22:
sudo ufw allow 22
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status
Se o seu SSH usa outra porta, libere essa porta no lugar da 22.
Passo 11: ativar o HTTPS com o Certbot
O Certbot pega um certificado para o domínio. Os comandos abaixo seguem a página do Certbot para Nginx com snap. O snapd precisa estar instalado, com suporte a "classic". Confira na sua VPS se ele está instalado. Se você já instalou o Certbot pelo apt, remova-o antes:
sudo apt-get remove certbot
Depois instale pelo snap e crie o atalho do comando:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
Rode o Certbot. A opção abaixo pega o certificado e ajusta a configuração do Nginx sozinha:
sudo certbot --nginx
Se preferir só pegar o certificado e editar o Nginx você mesmo, use sudo certbot certonly --nginx. Como dica nossa, para o Certbot validar o domínio, o DNS já precisa apontar para a VPS e a porta 80 precisa estar liberada.
Teste a renovação automática. Segundo a página do Certbot, ela roda por cron ou por um timer do systemd, que você pode ver com systemctl list-timers:
sudo certbot renew --dry-run
Para conferir, abra https://seudominio.com.br/ e procure o cadeado na barra de endereço. Para mandar quem entra por HTTP para o HTTPS, veja o guia Redirecionar HTTP para HTTPS: passo a passo no Nginx.
Atualizar o site depois
Para trocar o conteúdo, edite os arquivos no seu computador e envie de novo com o mesmo comando do passo 9. Se você só trocou arquivos da pasta e não mexeu na configuração, não precisa rodar o nginx -t nem o reload. Se alterou o bloco do site, repita os passos 7 e 8.
Se a página antiga continuar aparecendo, recarregue com Ctrl+F5, para o navegador buscar o arquivo novo em vez de usar a cópia guardada.
Problemas comuns
- Erro 403: pode ser permissão da pasta ou dos arquivos. Repita o passo 4 e leia o guia Erro 403 Forbidden, da nossa base de conhecimento.
- Erro 404: o arquivo pedido não está na pasta do
root. Confira o caminho e se existe umindex.htmldentro de/var/www/seudominio.com.br/html. - Página "Welcome to nginx!" em vez do seu site: o site padrão ainda está ativo ou o domínio ainda não aponta para a VPS. Veja o passo 6 e o cache de DNS.
- Falha no
nginx -t: leia a mensagem de erro e corrija o ponto indicado. - O Certbot não valida o domínio: confira se o DNS já aponta para a VPS e se a porta 80 está liberada no firewall.
- Site fora do ar: confira o status com
sudo systemctl status nginx.
Checklist de publicação
- O domínio e o www apontam para o IP da VPS.
- O Nginx está ativo e responde no IP.
- A pasta do site existe, com permissões ajustadas e o
index.htmldentro. - O bloco do site está em
sites-availablee ativado emsites-enabled. - O
nginx -tpassou antes do reload. - Liberei o SSH antes de ligar o ufw.
- O HTTPS abre com cadeado e o teste de renovação passou.
Falta o endereço do seu site? Registre o domínio na Eleven Host. O DNS gerenciado é grátis na rede da Cloudflare para domínios registrados conosco (painel na área do cliente). Registrar domínio
Perguntas frequentes
Preciso de PHP ou de banco de dados para hospedar um site HTML?
Não. Um site estático é só HTML, CSS, JavaScript e imagens, e o Nginx entrega os arquivos da pasta.
Qual pasta uso para os arquivos do site?
O site padrão do Nginx serve arquivos de /var/www/html. Neste guia usamos /var/www/seudominio.com.br/html e apontamos o root para ela. Outra pasta funciona se o root apontar para ela.
Como envio os arquivos para a VPS?
Com o scp ou o sftp, a partir do seu computador. Os dois usam o SSH, então a transferência é criptografada.
Como ativo o HTTPS no site?
Com o Certbot: instale pelo snap e rode sudo certbot --nginx. Como dica nossa, deixe o DNS já apontando para a VPS e a porta 80 liberada.