Cómo Configurar Auto-Update con GitHub en tu Servidor Linux (Deploy Automático)

¿Querés que tu proyecto se actualice automáticamente cada vez que hacés push a GitHub? En esta guía completa te enseño cómo configurar un deploy automático en tu servidor Linux usando GitHub y Webhooks. Ideal para proyectos en producción, APIs, apps SaaS o servidores personales que deben estar siempre actualizados.
¿Qué es un Auto Update con GitHub?
Un sistema de auto update permite que tu servidor se sincronice automáticamente con tu repositorio de GitHub sin tener que hacer git pull
manualmente. Cada vez que empujás un commit (push), GitHub notifica al servidor y este se actualiza al instante.
Beneficios del Deploy Automático
Evitás hacer
git pull
manualmenteMenos errores humanos
Actualizaciones instantáneas tras cada push
Compatible con PM2, Docker, Systemd, etc.
Requisitos Previos
- Servidor Linux (Ubuntu, Debian, etc.)
- Git instalado →
sudo apt install git
- Repositorio en GitHub
- (Opcional) Web server con PHP, Node, o Python para manejar el webhook
- (Opcional) Docker, PM2 o algún proceso que deba reiniciarse
Paso 1: Cloná tu Proyecto desde GitHub
bashCopiarEditarcd /var/www/
git clone https://github.com/usuario/tu-proyecto.git
cd tu-proyecto
Paso 2: Crear un Webhook en GitHub
- En tu repo →
Settings > Webhooks > Add webhook
- Payload URL:
https://tu-dominio.com/github-update
- Content type:
application/json
- Secret (opcional pero recomendado):
clave_super_segura
- Evento:
Just the push event
Paso 3: Código del Endpoint Webhook
Opción PHP (rápida y simple)
phpCopiarEditar<?php
$secret = 'clave_super_segura';
$payload = file_get_contents('php://input');
$headers = getallheaders();
if (!isset($headers['X-Hub-Signature-256'])) {
http_response_code(403); exit;
}
$signature = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if (!hash_equals($signature, $headers['X-Hub-Signature-256'])) {
http_response_code(403); exit;
}
exec("cd /var/www/tu-proyecto && git pull origin main >> update.log 2>&1 &");
http_response_code(200);
echo "OK";
Importante: Configurá el archivo en
/var/www/github-update.php
y permití acceso desde GitHub.
Paso 4 (Opcional): Reiniciar Servicios Automáticamente
Si necesitás que el sistema se reinicie tras cada pull:
Con Docker:
bashCopiarEditardocker-compose down && docker-compose up -d
Con PM2:
bashCopiarEditarpm2 restart all
Con Systemd:
bashCopiarEditarsudo systemctl restart tu-servicio
Paso 5: Seguridad del Webhook
Usá
SECRET
y validaloPermití solo
POST
Filtrá por IP si querés más seguridad (GitHub IPs: https://api.github.com/meta)
Alternativa: Git Pull Automático con Cron (sin Webhook)
bashCopiarEditarcrontab -e
Y agregá:
bashCopiarEditar*/5 * * * * cd /var/www/tu-proyecto && git pull origin main >> update.log 2>&1
Conclusión
Tener tu servidor siempre actualizado con GitHub es clave para proyectos modernos. Esta guía te permite implementar un deploy automático seguro, estable y sin depender de plataformas externas.