Para hospedar um site no VPS, você precisa de cinco coisas: um servidor virtual com Linux, acesso a ele por SSH, um servidor web instalado (como o Nginx), o domínio apontado para o IP do VPS no DNS e um certificado HTTPS. Feito isso, basta enviar os arquivos do site para a pasta certa e configurar o servidor web para respondê-los. O processo todo leva menos de uma hora para quem segue um roteiro, e é esse roteiro que você encontra abaixo, com os comandos, os cuidados de segurança e os erros que mais derrubam iniciantes.
Os exemplos usam Ubuntu Server ou Debian, as distribuições mais comuns entre provedores de VPS. Em outras distribuições a lógica é a mesma; o que muda é o gerenciador de pacotes.
VPS, hospedagem compartilhada ou gerenciada: vale a pena?
Antes de colocar a mão na massa, vale entender o que você ganha e o que passa a ser responsabilidade sua. No VPS você tem uma máquina virtual com recursos dedicados e acesso root. Isso dá liberdade total, mas também significa que atualizações, segurança e backups ficam por sua conta.
| Critério | Hospedagem compartilhada | VPS não gerenciado | VPS gerenciado |
|---|---|---|---|
| Controle do servidor | Baixo, via painel | Total, com acesso root | Alto, com suporte técnico |
| Recursos | Divididos com outros clientes | CPU e RAM reservadas | CPU e RAM reservadas |
| Conhecimento exigido | Mínimo | Linux e linha de comando | Intermediário |
| Manutenção e segurança | Do provedor | Sua | Compartilhada com o provedor |
| Ideal para | Sites simples e blogs pequenos | Desenvolvedores, vários sites, apps | Empresas sem equipe técnica |
Os preços variam bastante conforme o provedor, a região do datacenter e a configuração escolhida, então compare diretamente nas páginas oficiais das empresas. Para um site institucional ou um blog com tráfego moderado, um plano de entrada com 1 vCPU e 1 GB a 2 GB de RAM costuma dar conta, principalmente com Nginx e cache.
O que você precisa ter antes de começar
- Um VPS contratado com Ubuntu Server LTS ou Debian estável. Prefira um datacenter próximo do seu público para reduzir a latência.
- Um domínio registrado e acesso ao painel de DNS (no registrador ou em um serviço de DNS separado).
- Um cliente SSH: o terminal do Linux e do macOS já tem; no Windows, o PowerShell e o Windows Terminal trazem o OpenSSH.
- Os arquivos do site: HTML estático, um projeto PHP, uma aplicação Node.js ou a intenção de instalar um CMS como o WordPress.
Como hospedar site no VPS em 7 etapas
1. Acesso SSH
Entrar no servidor com o IP e as credenciais do provedor.
2. Atualização
Instalar os pacotes e correções de segurança.
3. Segurança básica
Usuário sudo, chave SSH e firewall.
4. Servidor web
Instalar Nginx e, se preciso, PHP e banco de dados.
5. DNS
Registros A/AAAA do domínio apontando para o IP.
6. HTTPS
Certificado gratuito com Certbot e Let’s Encrypt.
7. Deploy e backup
Enviar os arquivos e automatizar cópias de segurança.
Passo a passo para hospedar seu site no VPS
1. Acesse o servidor por SSH
Depois da contratação, o provedor informa o endereço IP do VPS e a forma de acesso: senha de root ou chave SSH cadastrada no painel. No terminal, conecte assim (troque pelo IP real):
ssh root@203.0.113.10Na primeira conexão, o terminal pede para confirmar a impressão digital do servidor. Digite yes e siga.
2. Atualize o sistema
Imagens recém-criadas costumam vir com pacotes desatualizados. Antes de qualquer coisa:
apt update && apt upgrade -ySe o kernel for atualizado, reinicie com reboot e conecte de novo.
3. Crie um usuário comum e use chave SSH
Trabalhar o tempo todo como root é arriscado: um comando errado pode apagar o sistema, e o usuário root é o primeiro alvo de ataques automatizados. Crie um usuário próprio com permissão de sudo:
adduser deploy
usermod -aG sudo deployNo seu computador, gere uma chave (se ainda não tiver) e copie para o servidor:
ssh-keygen -t ed25519
ssh-copy-id deploy@203.0.113.10Teste o login com o novo usuário em outra janela do terminal. Só depois de confirmar que funciona, edite /etc/ssh/sshd_config e ajuste:
PermitRootLogin no
PasswordAuthentication noReinicie o serviço com sudo systemctl restart ssh. Em algumas versões o serviço se chama sshd. Mantenha a sessão antiga aberta até ter certeza de que consegue entrar pela nova.
4. Ative o firewall
O UFW é a forma mais simples de controlar as portas no Ubuntu. Libere o SSH antes de ativar, ou você se trancará para fora:
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableAlguns provedores também têm um firewall externo no painel. Se o site não abrir mais adiante, confira se as portas 80 e 443 estão liberadas lá também. Para reforçar, instale o fail2ban, que bloqueia IPs após várias tentativas de login malsucedidas.

5. Instale o servidor web
O Nginx é leve, rápido e consome pouca memória, o que combina com VPS de entrada. O Apache também é uma boa opção, especialmente se o seu projeto depende de arquivos .htaccess. Aqui, seguimos com o Nginx:
sudo apt install nginx -y
sudo systemctl enable --now nginxAbra o IP do VPS no navegador. Se aparecer a página padrão do Nginx, o servidor está respondendo.
Dependendo do tipo de site, instale o restante da pilha:
- Site estático (HTML, CSS, JS): o Nginx basta.
- PHP e WordPress:
sudo apt install php-fpm php-mysql php-curl php-xml php-mbstring php-zip php-gd mariadb-server -ye depoissudo mysql_secure_installation. - Node.js, Python ou outra aplicação: rode a aplicação em uma porta interna (por exemplo, 3000) com um gerenciador de processos como PM2 ou um serviço systemd, e use o Nginx como proxy reverso.
6. Crie a pasta do site e o bloco de servidor
Organize cada site em sua própria pasta. Isso facilita hospedar vários domínios no mesmo VPS:
sudo mkdir -p /var/www/meusite.com.br
sudo chown -R deploy:www-data /var/www/meusite.com.brCrie o arquivo de configuração em /etc/nginx/sites-available/meusite.com.br. Para um site estático:
server {
listen 80;
listen [::]:80;
server_name meusite.com.br www.meusite.com.br;
root /var/www/meusite.com.br;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Para PHP, troque o index por index.php index.html e adicione um bloco que envia os arquivos PHP ao PHP-FPM:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}O nome do socket pode incluir a versão do PHP (como php8.x-fpm.sock); confira com ls /run/php/. Para uma aplicação Node.js, o bloco location / usa proxy_pass http://127.0.0.1:3000; no lugar de try_files.
Ative o site, teste a sintaxe e recarregue:
sudo ln -s /etc/nginx/sites-available/meusite.com.br /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx7. Aponte o domínio para o VPS
No painel de DNS do seu domínio, crie ou edite os registros:
- A para
@(o domínio raiz) apontando para o IPv4 do VPS. - A para
wwwcom o mesmo IP, ou um CNAME dewwwpara o domínio raiz. - AAAA com o IPv6, caso o servidor tenha um e você queira usá-lo.
A propagação pode levar de minutos a algumas horas, dependendo do TTL configurado. Verifique com dig meusite.com.br +short ou nslookup meusite.com.br; quando o IP do VPS aparecer, siga para o próximo passo.
8. Instale o certificado HTTPS gratuito
Navegadores marcam sites sem HTTPS como inseguros, e isso pesa na confiança do visitante. O Let’s Encrypt emite certificados gratuitos, e o Certbot automatiza tudo:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d meusite.com.br -d www.meusite.com.brO Certbot valida o domínio, instala o certificado e oferece redirecionar todo o tráfego HTTP para HTTPS. Aceite. A renovação é automática; para confirmar que funciona, rode sudo certbot renew --dry-run.
9. Envie os arquivos do site
Há várias formas de colocar o conteúdo no servidor. Escolha a que combina com o seu fluxo:
- rsync: sincroniza só o que mudou, ideal para sites estáticos. Exemplo:
rsync -avz ./public/ deploy@203.0.113.10:/var/www/meusite.com.br/. - SFTP: clientes gráficos como FileZilla ou WinSCP usam o mesmo acesso SSH, sem precisar instalar FTP no servidor.
- Git: clone o repositório na pasta do site e faça
git pulla cada atualização. Mantenha a pasta.gitfora da raiz pública ou bloqueie o acesso a ela no Nginx. - CI/CD: pipelines no GitHub Actions ou GitLab CI fazem o deploy automático a cada push, usando uma chave SSH guardada como segredo.
Se for instalar o WordPress, baixe o pacote oficial direto no servidor, crie um banco e um usuário exclusivos no MariaDB e siga o instalador pelo navegador.
10. Configure backups e monitoramento
Um VPS sem backup é um risco permanente. Combine duas camadas:
- Snapshots do provedor: a maioria oferece backup automático da máquina inteira, às vezes como serviço pago à parte. Confira no painel.
- Backup dos dados: um script agendado no cron que gera o dump do banco (
mysqldump) e compacta a pasta do site, enviando tudo para um armazenamento externo com ferramentas como restic, rclone ou BorgBackup.
Teste a restauração de vez em quando. Backup que nunca foi restaurado é só uma suposição. Para monitorar, um serviço externo de uptime avisa quando o site cai, e ferramentas como htop e df -h ajudam a acompanhar CPU, memória e disco.

Erros comuns de quem hospeda o primeiro site no VPS
- Ativar o firewall sem liberar o SSH: o acesso cai na hora. A saída é usar o console web do provedor para corrigir.
- Desativar o login por senha antes de testar a chave: mesmo problema. Sempre teste em uma segunda sessão.
- Rodar o Certbot antes de o DNS propagar: a validação falha. Confirme o IP com
digprimeiro. - Permissões erradas: arquivos com dono incorreto geram erro 403 ou impedem uploads no WordPress. Evite o atalho do
chmod 777, que abre brecha de segurança. - Esquecer as atualizações: ative o pacote
unattended-upgradespara receber correções de segurança automaticamente. - Expor o banco de dados: o MariaDB ou PostgreSQL deve escutar apenas em
127.0.0.1, nunca aberto para a internet. - Ignorar o swap em VPS com pouca RAM: com 1 GB, picos de uso podem matar o processo do banco. Um arquivo de swap modesto evita quedas inesperadas.
Dicas para deixar o site mais rápido e estável
- Ative a compressão gzip ou Brotli no Nginx e defina cabeçalhos de cache para imagens, CSS e JavaScript.
- No WordPress, use um plugin de cache de páginas e ative o OPcache do PHP.
- Coloque uma CDN na frente do servidor para entregar arquivos estáticos mais perto do visitante e absorver parte do tráfego.
- Para hospedar vários sites, repita o passo 6 com um bloco de servidor por domínio. Painéis gratuitos como CloudPanel, HestiaCP ou aaPanel facilitam essa gestão, mas acrescentam uma camada que também precisa ser atualizada.
- Se preferir isolar aplicações, Docker com um proxy reverso (Nginx, Traefik ou Caddy) permite rodar vários projetos sem conflito de versões.
Perguntas frequentes
Preciso saber programar para hospedar um site no VPS?
Não é preciso programar, mas é preciso se sentir à vontade no terminal Linux: editar arquivos, instalar pacotes e ler mensagens de erro. Quem nunca usou a linha de comando pode começar por um painel de controle ou por um VPS gerenciado.
Quantos sites cabem em um único VPS?
Depende dos recursos do plano e do tráfego de cada site. Vários sites estáticos ou blogs pequenos rodam bem em um VPS de entrada. Lojas virtuais e aplicações com muitos acessos simultâneos pedem mais RAM e CPU. Acompanhe o consumo e aumente o plano quando for necessário.
Nginx ou Apache: qual escolher?
O Nginx consome menos memória e lida melhor com muitas conexões ao mesmo tempo, por isso é o mais usado em VPS. O Apache é mais flexível com .htaccess e tem compatibilidade ampla com sistemas antigos em PHP. Para projetos novos, o Nginx costuma ser a escolha mais prática.
O certificado SSL do Let’s Encrypt é confiável?
Sim. Ele é aceito por todos os navegadores modernos e oferece a mesma criptografia de certificados pagos do tipo DV. A diferença é a validade curta, que o Certbot resolve com a renovação automática.
Posso usar e-mail com meu domínio no mesmo VPS?
Dá para fazer, mas manter um servidor de e-mail próprio é trabalhoso: exige configurar SPF, DKIM e DMARC e cuidar da reputação do IP para as mensagens não caírem no spam. Muita gente prefere hospedar o site no VPS e usar um serviço de e-mail separado, apontando apenas os registros MX.
O que fazer se o site aparecer com erro 502 Bad Gateway?
O 502 indica que o Nginx não conseguiu falar com o serviço por trás dele, normalmente o PHP-FPM ou a aplicação Node.js. Verifique se o serviço está rodando com systemctl status, confira o caminho do socket ou a porta no bloco de servidor e leia o log em /var/log/nginx/error.log.
Seguindo essas etapas, você terá um site no ar em uma estrutura que você controla de ponta a ponta, com HTTPS, firewall e backup. A partir daí, a manutenção é uma rotina simples: atualizar o sistema, conferir os backups e acompanhar o consumo de recursos.




