¿Estás cansado de subir manualmente tu proyecto Laravel a un servidor de producción cada vez que haces nuevas actualizaciones? En esta guía, aprenderás a automatizar tu proceso de despliegue de Laravel usando GitHub Actions — la herramienta de CI/CD amigable con DevOps integrada en GitHub.
Optimicemos tu flujo de trabajo y despliega tu app Laravel en tu VPS de Hostinger (o cualquier servidor accesible por SSH) con un simple git push.
✅ ¿Por qué usar GitHub Actions para despliegue de Laravel?
Usar GitHub Actions te permite:
- Automatizar tu despliegue a producción después de cada push.
- Evitar el uso de herramientas FTP inseguras.
- Ahorrar tiempo y reducir errores humanos.
- Construir un pipeline CI/CD adecuado como desarrollador Laravel.
🧠 Requisitos previos
Antes de comenzar, asegúrate de tener:
- Un proyecto Laravel alojado en GitHub.
- Un VPS de Hostinger o plan de hosting web con acceso SSH.
- Acceso a la terminal/línea de comandos.
- Composer instalado en tu servidor.
🛠️ Paso 1: Generar clave SSH y subirla a Hostinger
- Genera una clave SSH en tu máquina local:
ssh-keygen -t rsa -b 4096 -C "github-actions@example.com"
Generará dos archivos:
~/.ssh/colorpark_hostinger(clave privada)~/.ssh/colorpark_hostinger.pub(clave pública)
- Añade la clave pública a Hostinger:
Ve a Hostinger → Avanzado → Acceso SSH → Claves SSH
Haz clic en Añadir clave SSH, pega el contenido de la clave pública desde:
cat ~/.ssh/colorpark_hostinger.pub
- Guarda el contenido de la clave privada para añadirlo como GitHub Secret más adelante:
cat ~/.ssh/colorpark_hostinger
🔐 Paso 2: Añadir GitHub Secrets
En tu repositorio de GitHub:
Ve a: Settings → Secrets and variables → Actions → New repository secret
Añade los siguientes secrets:
HOSTINGER_SSH_HOST='145.223.89.199' # IP de tu servidor
HOSTINGER_SSH_PORT='65002' # Tu puerto SSH
HOSTINGER_SSH_USER='u597250090' # Tu usuario SSH
HOSTINGER_SSH_KEY='(pega el contenido de tu clave PRIVADA)'
DEPLOY_PATH='/home/u597250090/domains/example.com/public_html'
📁 Paso 3: Crear el Workflow de GitHub Actions
Dentro de tu proyecto Laravel, crea el siguiente archivo:
mkdir -p .github/workflows
touch .github/workflows/deploy.yml
Pega la siguiente configuración completa de deploy.yml:
name: 🚀 Desplegar en Hostinger
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Obtener código
uses: actions/checkout@v3
- name: Configurar clave SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.HOSTINGER_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -p ${{ secrets.HOSTINGER_SSH_PORT }} ${{ secrets.HOSTINGER_SSH_HOST }} >> ~/.ssh/known_hosts
- name: Desplegar via rsync
run: |
rsync -avz --delete \
--exclude=".env" \
--exclude=".gitignore" \
-e "ssh -p ${{ secrets.HOSTINGER_SSH_PORT }}" \
./ ${{ secrets.HOSTINGER_SSH_USER }}@${{ secrets.HOSTINGER_SSH_HOST }}:${{ secrets.DEPLOY_PATH }}
- name: Comandos post-despliegue de Laravel
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOSTINGER_SSH_HOST }}
username: ${{ secrets.HOSTINGER_SSH_USER }}
key: ${{ secrets.HOSTINGER_SSH_KEY }}
port: ${{ secrets.HOSTINGER_SSH_PORT }}
script: |
cd ${{ secrets.DEPLOY_PATH }}
composer install --no-dev --prefer-dist --no-interaction
php artisan optimize:clear
🚀 Paso 4: Haz push de tu código para iniciar el despliegue
Una vez que todo esté configurado, simplemente haz push de tu proyecto Laravel a la rama main:
git add .
git commit -m "🔧 Configurar GitHub Actions para despliegue automático"
git push origin main
GitHub iniciará automáticamente el despliegue. Puedes ver los logs en la pestaña "Actions" de tu repositorio de GitHub.
✅ Consejos adicionales
- Asegúrate de que tu servidor tenga los permisos de archivo correctos.
- Siempre haz respaldo de tu
.envy base de datos antes de ejecutarphp artisan migrate --force. - Si usas hosting compartido, confirma si soporta inicio de sesión con clave SSH y composer.
📌 Reflexiones finales
Al integrar GitHub Actions en tu proceso de despliegue de Laravel, no solo ahorras tiempo — estás construyendo un flujo de trabajo profesional que escala.
No más subidas manuales, no más FTP. Solo push y despliegue. 🔥
¿Quieres construir más automatizaciones como esta?
👉 Síguenos para más trucos de Laravel DevOps y tutoriales de desarrollo full-stack.