Como configurar deploy automático via webhook do GitHub no VPS Print

  • 0

Como configurar deploy automático via webhook do GitHub no VPS (com GeHost)

Olá, querido(a) desenvolvedor(a)! 👋

Se você está aqui, provavelmente já tem um projeto no GitHub e quer que toda vez que fizer um push para o repositório, o seu site no VPS seja atualizado automaticamente — sem precisar fazer login, baixar arquivos ou reiniciar nada. Isso é possível com um webhook, e hoje eu, seu Sensei da GeHost, te ensino como configurar isso passo a passo, com linguagem simples, paciência e um toque de carinho.

💡 Dica do Sensei: Antes de começar, certifique-se de que você tem acesso ao seu VPS via SSH (ou ao painel do cPanel, se estiver usando um plano de hospedagem com acesso root). Se não tiver certeza, entre em contato com o suporte da GeHost — eles estão lá para te ajudar com carinho.

Passo 1: Prepare seu repositório no GitHub

Abra seu repositório no GitHub e vá até a aba SettingsWebhooks.

  • Clique em Add webhook.
  • Na seção Payload URL, insira o endereço do seu servidor onde o webhook será recebido. Exemplo: https://seu-dominio.com.br/webhook
  • Selecione application/json como conteúdo.
  • Escolha Just the push event (só quando você fizer um push).
  • Clique em Add webhook.

Atenção: O endereço do webhook deve ser acessível publicamente. Se você está usando um VPS da GeHost, ele já tem um IP público — mas certifique-se de que o servidor está configurado para receber requisições HTTP/HTTPS nesse caminho.

Passo 2: Acesse seu VPS via SSH

Abra seu terminal (ou Putty, se estiver no Windows) e conecte-se ao seu VPS usando o comando:

ssh usuario@seu-dominio.com.br

Substitua usuario pelo nome de usuário que você usou na GeHost (geralmente é o mesmo que o nome do domínio ou um nome personalizado). Se não souber, consulte seu plano no painel do cliente: painel.gehost.com.br.

Passo 3: Crie um script de deploy no servidor

Depois de conectado, vá até a pasta onde seu site está hospedado. Normalmente é /home/usuario/public_html ou /var/www/html.

Crie um arquivo chamado deploy.sh com o comando:

sudo nano deploy.sh

Adicione o seguinte conteúdo ao arquivo:

#!/bin/bash
cd /home/usuario/public_html
git pull origin main
echo "Deploy realizado com sucesso!"

💡 Observação: Substitua main pelo nome da sua branch principal (pode ser master ou outra). Se não souber, verifique no GitHub.

Salve o arquivo com Ctrl + O, depois Enter, e saia com Ctrl + X.

Passo 4: Torne o script executável

No terminal, execute:

chmod +x deploy.sh

Passo 5: Crie um endpoint HTTP para receber o webhook

Vamos criar um pequeno script PHP que será chamado pelo GitHub quando um push for feito.

Crie um arquivo chamado webhook.php na pasta do seu site:

sudo nano webhook.php

Adicione o seguinte código:

<?php
// Verifica se o webhook é seguro (opcional, mas recomendado)
$secret = 'sua_chave_segura'; // Substitua por uma senha secreta
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE_256'] ?? '';

if (!empty($signature)) {
    $hash = hash_hmac('sha256', file_get_contents('php://input'), $secret);
    if (!hash_equals($hash, substr($signature, 7))) {
        http_response_code(403);
        echo "Acesso negado.";
        exit;
    }
}

// Executa o script de deploy
$output = shell_exec('/home/usuario/public_html/deploy.sh 2>&1');
echo "Resultado do deploy: " . $output;

// Log do webhook
file_put_contents('/home/usuario/public_html/deploy.log', date('Y-m-d H:i:s') . " - Deploy acionado\n", FILE_APPEND);
?>

💡 Dica do Sensei: Use uma chave secreta (como "minha-senha-segura-123") e mantenha em segredo. Isso evita que qualquer pessoa acione seu deploy.

Salve o arquivo com Ctrl + O, Enter, e saia com Ctrl + X.

Passo 6: Teste o webhook

Volte ao GitHub, vá até Settings → Webhooks, e clique em Test webhook.

Se tudo estiver certo, você verá uma mensagem de sucesso. Verifique o arquivo deploy.log no seu site para ver se o deploy foi registrado.

Passo 7: Ajuste permissões (se necessário)

Se o script não rodar, pode ser por falta de permissão. Execute:

sudo chown -R usuario:usuario /home/usuario/public_html

Isso garante que o usuário do sistema tenha acesso aos arquivos.

Pronto! Você está no controle!

✅ Agora, toda vez que você fizer um git push no GitHub, o webhook será acionado, o script PHP será chamado, e o site será atualizado automaticamente.

Se algo não funcionar, não se preocupe — o suporte da GeHost está aqui para te ajudar. Basta entrar no painel e abrir um ticket. E lembre-se: você não está sozinho nessa jornada.

Com carinho,
Sensei da GeHost
*Grupo: G e Soluções e Eventos LTDA (CNPJ: 46.647.904/0001-04)*


Was this answer helpful?

« Back