GitHub y cPanel

Actualizar mi proyecto IA con GitHub y cPanel

Esta guía explica cómo trabajar un proyecto creado con IA usando GitHub y publicarlo en Hospedame. Git es una forma de guardar versiones; GitHub es donde guardas el proyecto en línea; deploy significa publicar los cambios en tu sitio.

El plan recomendado para este flujo es Plan Crea iA, porque incluye más espacio, PHP, MySQL, Git Version Control y Shell/Jailed Shell activo.

Planes compatibles

Antes de elegir el modelo

Ambos planes incluyen cPanel, Git Version Control y Shell/Jailed Shell activo. Plan Despega iA sirve para probar Git con sitios sencillos. Plan Crea iA es mejor cuando harás cambios frecuentes, usarás Codex continuamente o tu sitio necesita PHP/MySQL.

Plan Despega iA

$420 MXN anuales · 5 GB
  • HTML, CSS y JavaScript.
  • Pruebas sencillas con GitHub.
  • Subida manual o cPanel Git Version Control.
  • No recomendado para desarrollo activo constante.

Plan Crea iA

$2,000 MXN anuales · 40 GB
  • GitHub frecuente con Codex o programadores.
  • PHP, MySQL y phpMyAdmin.
  • Más espacio para versiones, pruebas y archivos.
  • Compatible con actualización administrada por Git Pull.

Modelo A: GitHub + cPanel Git Version Control

Este modelo es para usuarios principiantes o intermedios que prefieren entrar a cPanel y dar clic para actualizar, sin publicar desde terminal.

Usuario / Codex / programador
GitHub
cPanel Git Version Control
Update from Remote
Deploy HEAD Commit
Sitio publicado

Para quién es

  • Usuarios principiantes/intermedios.
  • Sitios HTML/CSS/JS o PHP simples.
  • Usuarios que no quieren usar terminal para publicar.
  • Personas que prefieren actualizar desde cPanel.

Requisitos

  • cPanel con Git Version Control.
  • SSH o Jailed Shell si el repositorio es privado.
  • Dominio o subdominio configurado.
  • PHP/MySQL si el proyecto lo necesita.

Caso: sitio existente

  1. Respalda el sitio actual antes de mover archivos.
  2. Crea un repositorio en GitHub, por ejemplo USUARIO_GITHUB/NOMBRE_REPOSITORIO.
  3. Copia el sitio actual al repositorio.
  4. Conecta el repositorio en cPanel Git Version Control.
  5. Usa .cpanel.yml para desplegar a public_html o a la carpeta del subdominio.

Caso: proyecto nuevo

  1. Crea un repositorio en GitHub.
  2. Crea el proyecto con Codex o tu IA.
  3. Sube los cambios a GitHub.
  4. Conecta el repositorio en cPanel.
  5. Ejecuta la publicación desde cPanel.

Update from Remote significa que cPanel baja los cambios desde GitHub. Deploy HEAD Commit significa que cPanel publica esos cambios en el sitio.

Ejemplo de .cpanel.yml

Este archivo le dice a cPanel a qué carpeta debe copiar los archivos publicados. La ruta debe verificarse dentro de cPanel.

---
deployment:
  tasks:
    - export DEPLOYPATH=/ruta/real/del/sitio/
    - /bin/cp -R ./* $DEPLOYPATH
    - /bin/cp -R ./.htaccess $DEPLOYPATH 2>/dev/null || true

La ruta puede ser parecida a estas opciones genéricas:

  • /home/USUARIO_CPANEL/public_html/
  • /home2/USUARIO_CPANEL/public_html/
  • /home/USUARIO_CPANEL/subdominio.tudominio.com/
  • /home2/USUARIO_CPANEL/subdominio.tudominio.com/

Modelo B: GitHub + actualización manual por SSH desde servidor

Este modelo es más administrado. Sirve cuando se quiere que el servidor haga git fetch y git reset desde GitHub con un script, conservando archivos reales como config.php o .env solo en el servidor.

Codex / programador
GitHub
Servidor Hospedame hace git fetch / git reset
Se conserva config.php o .env real
Sitio actualizado

Para quién es

  • Usuarios con proyectos IA/Codex y cambios frecuentes.
  • Proyectos que requieren más control.
  • Usuarios que prefieren que Hospedame configure el deploy.
  • Proyectos donde no se quiere usar GitHub Actions.

Requisitos

  • cPanel con SSH/Jailed Shell.
  • Git disponible.
  • Repositorio GitHub y Deploy Key.
  • Ruta del proyecto identificada.
  • En proyectos avanzados, configuración administrada o solución VPS futura.

Preparar el servidor para Git Pull administrado

Este modelo se configura desde el servidor. La idea es que Hospedame o un técnico autorizado conecte tu cuenta con GitHub usando una llave SSH exclusiva del proyecto.

1. Verificar ruta real

La ruta puede variar por cuenta, por eso no conviene adivinarla. Ejemplos genéricos:

  • /home/USUARIO_CPANEL/public_html/
  • /home2/USUARIO_CPANEL/public_html/
  • /home/USUARIO_CPANEL/subdominio.tudominio.com/
  • /home2/USUARIO_CPANEL/subdominio.tudominio.com/
pwd
ls -la
find ~ -maxdepth 4 -type d -name "public_html" 2>/dev/null
find ~ -maxdepth 4 -type d -name "subdominio.tudominio.com" 2>/dev/null

2. Confirmar que Git existe

command -v git || echo "Git no está disponible"
git --version

Crear Deploy Key para GitHub

Cada proyecto debe tener su propia llave SSH. La llave privada se queda en el servidor y nunca debe publicarse ni compartirse.

ssh-keygen -t ed25519 -C "hosting-proyecto-githubpull" -f ~/.ssh/github_proyecto_key
cat ~/.ssh/github_proyecto_key.pub

En GitHub entra al repositorio y ve a Settings → Deploy keys → Add deploy key. Agrega la llave pública y deja Allow write access sin marcar, porque el servidor solo necesita descargar cambios.

Configurar SSH del servidor

El alias evita mezclar llaves entre proyectos y hace más clara la conexión con GitHub.

Host github-proyecto
HostName github.com
User git
IdentityFile ~/.ssh/github_proyecto_key
IdentitiesOnly yes

Después se ajustan permisos y se prueba la conexión:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/github_proyecto_key
chmod 644 ~/.ssh/github_proyecto_key.pub
ssh -T git@github-proyecto

Conectar la carpeta del proyecto con GitHub

Antes de ejecutar comandos, confirma que estás en la carpeta correcta con pwd. Después inicializa Git y conecta el repositorio.

cd /ruta/real/del/proyecto
git init
git branch -M main
git remote add origin git@github-proyecto:USUARIO_GITHUB/NOMBRE_REPOSITORIO.git
git remote -v

Si ya existía el remoto origin, usa:

git remote set-url origin git@github-proyecto:USUARIO_GITHUB/NOMBRE_REPOSITORIO.git

.gitignore recomendado

El archivo .gitignore ayuda a evitar que configuraciones reales, logs, backups y dependencias pesadas se suban a GitHub.

# Sistema
.DS_Store
__MACOSX/

# Configuración sensible
.env
config.php
app/config.php
database.php

# Logs y temporales
*.log
tmp/
temp/
cache/
storage/logs/
storage/cache/

# Backups y paquetes
*.zip
*.tar
*.tar.gz
*.bak

# Dependencias
vendor/
node_modules/

Orden recomendado por proyecto

Cada proyecto debe tener su propia carpeta, repositorio, llave SSH, script update-proyecto.sh, archivo .gitignore y archivo de log.

Los archivos sensibles viven solo en el servidor:

  • .env
  • config.php
  • app/config.php
  • wp-config.php

En GitHub solo debe haber ejemplos sin contraseñas:

  • .env.example
  • config.example.php
  • app/config.example.php

Ejemplo conceptual de script

Este ejemplo usa rutas genéricas. No pegues rutas reales, tokens, llaves ni datos privados en documentación pública.

#!/bin/bash
set -e

APP_PATH="/ruta/real/del/proyecto"
LOG_FILE="$APP_PATH/update.log"
BACKUP_DIR="$HOME/private_backups/proyecto-config"

mkdir -p "$BACKUP_DIR"
cd "$APP_PATH"

echo "===================================" >> "$LOG_FILE"
echo "Update iniciado: $(date)" >> "$LOG_FILE"

if [ -f .env ]; then
  cp .env "$BACKUP_DIR/.env.last-good"
fi

if [ -f config.php ]; then
  cp config.php "$BACKUP_DIR/config.php.last-good"
fi

if [ -f app/config.php ]; then
  mkdir -p "$BACKUP_DIR/app"
  cp app/config.php "$BACKUP_DIR/app/config.php.last-good"
fi

git fetch origin main >> "$LOG_FILE" 2>&1
git reset --hard origin/main >> "$LOG_FILE" 2>&1

if [ -f "$BACKUP_DIR/.env.last-good" ]; then
  cp "$BACKUP_DIR/.env.last-good" .env
fi

if [ -f "$BACKUP_DIR/config.php.last-good" ]; then
  cp "$BACKUP_DIR/config.php.last-good" config.php
fi

if [ -f "$BACKUP_DIR/app/config.php.last-good" ]; then
  mkdir -p app
  cp "$BACKUP_DIR/app/config.php.last-good" app/config.php
fi

echo "Update terminado: $(date)" >> "$LOG_FILE"

Cómo puede ejecutarse este modelo

  • Manualmente por SSH.
  • Con alias desde la computadora.
  • Con cron si el proyecto se actualiza frecuentemente.
  • Con botón administrado si Hospedame lo implementa.

Sobre proyectos avanzados

Si tu proyecto requiere procesos especiales, Node.js persistente, APIs avanzadas, automatizaciones pesadas o configuración personalizada, Hospedame puede orientarte para una solución administrada o VPS. Para empezar, la mayoría de páginas creadas con IA pueden iniciar con Plan Despega iA o Plan Crea iA.

Logs, alias y cron

Para proyectos que no cambian todos los días, lo más claro es actualizar manualmente. Si el proyecto se actualiza con frecuencia, se puede revisar un cron cada 15 o 30 minutos.

Actualizar manualmente

ssh USUARIO_CPANEL@HOST_DEL_SERVIDOR
~/bin/update-proyecto.sh

Ejecutar desde tu computadora

ssh USUARIO_CPANEL@HOST_DEL_SERVIDOR "~/bin/update-proyecto.sh"

Ver logs desde tu computadora

ssh USUARIO_CPANEL@HOST_DEL_SERVIDOR "tail -n 50 /ruta/real/del/proyecto/update.log"

Cron opcional

Úsalo solo si de verdad necesitas actualizaciones automáticas. Para un sitio institucional, manual suele ser suficiente.

Comandos útiles de diagnóstico

pwd
git remote -v
git branch
git status --short
git log --oneline -5
ssh -T git@github-proyecto
tail -n 50 /ruta/real/del/proyecto/update.log

Errores comunes

  • Permission denied (publickey): GitHub no reconoce la llave SSH o el servidor no está usando la llave correcta.
  • Host key verification failed: falta confirmar la identidad de GitHub con ssh -T git@github-proyecto.
  • fatal: not a git repository: estás en una carpeta sin Git inicializado.
  • Your local changes would be overwritten: hay cambios locales que se perderían al sincronizar.

Guía Mac/Linux

En Mac y Linux puedes usar la terminal integrada para generar llaves SSH, clonar repositorios, hacer commits y enviar cambios a GitHub. Esta ruta ya es compatible con el flujo de cPanel Git Version Control.

Guía Windows

La versión para Windows usa Git for Windows y Git Bash, porque sus comandos son muy parecidos a Mac y Linux. También puedes publicar desde la interfaz de cPanel.

Guía Windows: usar GitHub y Codex

Este flujo es para editar tu sitio desde Windows, subir cambios a GitHub y después publicar desde cPanel.

Tu computadora Windows
GitHub
Codex o programador edita el proyecto
cPanel descarga los cambios
Tu sitio se actualiza

Qué instalar

  • Git for Windows desde https://git-scm.com/download/win.
  • Git Bash, incluido con Git for Windows.
  • Un editor de código como Visual Studio Code o Codex Local.
  • Acceso a GitHub y a cPanel de Hospedame.

Configurar Git en Git Bash

git config --global user.name "Tu Nombre"
git config --global user.email "tu-correo@ejemplo.com"
git config --global --list

Crear llave SSH para GitHub

ssh-keygen -t ed25519 -C "tu-correo@ejemplo.com"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com

Agrega la llave pública en GitHub desde Settings → SSH and GPG keys → New SSH key. No compartas la llave privada.

Windows: editar un sitio existente

  1. Respalda el sitio actual en Hospedame.
  2. Copia el sitio a un repositorio GitHub.
  3. Clona el repositorio en Windows.
  4. Abre la carpeta en Codex Local o tu editor.
  5. Haz cambios pequeños y revísalos antes de publicar.
  6. Sube los cambios a GitHub.
  7. En cPanel ejecuta Update from Remote y Deploy HEAD Commit.
mkdir -p ~/Documents/ProyectosWeb
cd ~/Documents/ProyectosWeb
git clone git@github.com:USUARIO_GITHUB/NOMBRE_REPOSITORIO.git
cd NOMBRE_REPOSITORIO
git status
git remote -v

Windows: crear un proyecto nuevo

  1. Crea un repositorio privado en GitHub con README y .gitignore.
  2. Clónalo en Windows con Git Bash.
  3. Abre la carpeta en Codex o tu editor.
  4. Pide una página simple en HTML, CSS y JavaScript, o un sitio PHP básico si tu plan lo permite.
  5. Prueba localmente.
  6. Haz commit y push a GitHub.
  7. Conecta el repositorio en cPanel Git Version Control y publica.
git status
git add .
git commit -m "Crear primera version del sitio"
git push origin main

Si tu sitio es HTML simple, puedes abrir index.html en el navegador. Si usa PHP y tienes PHP instalado localmente, puedes probar con:

php -S localhost:8000

Windows: problemas comunes

  • Permission denied (publickey): GitHub no reconoce tu llave SSH. Revisa ssh -T git@github.com.
  • destination path already exists: ya clonaste el proyecto. Entra a la carpeta existente y ejecuta git status.
  • php: command not found: PHP no está instalado en Windows. Puedes probar HTML abriendo archivos en el navegador o pedir apoyo técnico para instalar PHP.
  • No veo cambios en el sitio: confirma que hiciste push, que ejecutaste Update from Remote, Deploy HEAD Commit y recargaste con Ctrl + F5.

Checklist final

  • SSH funciona en la cuenta de hosting.
  • Git está disponible.
  • Conoces la ruta real del proyecto.
  • El repositorio existe en GitHub.
  • El proyecto tiene .gitignore correcto.
  • Los archivos sensibles no están en GitHub.
  • Existe .env.example o config.example.php cuando aplica.
  • La Deploy Key del proyecto funciona.
  • El script update-proyecto.sh fue probado.
  • Se revisó update.log.
  • Se decidió si la actualización será manual o con cron.

Archivos que no debes subir a GitHub

  • .env con datos reales.
  • config.php con contraseñas.
  • Claves API, tokens o llaves privadas.
  • Bases de datos y respaldos .zip.
  • Datos reales de clientes o rutas privadas.