CommunityProgramación y desarrollogithub.com

byteTuto/sitio web

Desplegar, verificar, diagnosticar o revertir el sitio byteTuto alojado en Amazon EC2 (Docker + nginx, GitHub Actions, GHCR, Let's Encrypt). Úsalo para cualquier consulta sobre publicación, HTTPS, servidor o pipeline CI/CD.

¿Qué es sitio web?

Esta skill automatiza el despliegue del sitio web byteTuto en una instancia EC2 de AWS utilizando Docker, nginx y GitHub Actions. Su utilidad principal es gestionar el pipeline CI/CD completo: desde que se hace un push a la rama `main`, se ejecutan pruebas de construcción y sanidad (como verificar `/healthz`, la página principal, código 404 y cabeceras CSP), se publica una imagen multi-arquitectura (amd64 + arm64) en GitHub Container Registry (GHCR), y se despliega via SSH en EC2 con un script que realiza pull, levanta contenedores y monitorea el estado de salud. Además, ofrece diagnósticos rápidos para problemas comunes (errores de permisos, acceso a imágenes privadas, configuración de HTTPS) y un mecanismo de reversión automática si el despliegue falla. Está diseñada para desarrolladores y administradores que necesitan mantener y solucionar problemas del sitio byteTuto de forma eficiente.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/byteTuto/website/tree/HEAD/.claude/skills/deploy-ec2

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Despliegue de byteTuto en EC2

Cadena de despliegue

  1. git push a main → .github/workflows/deploy.yml
  2. Job test: docker build, nginx -t, prueba de humo (/healthz, página principal, 404, cabecera CSP).
  3. Job publish: imagen multi-arquitectura (amd64 + arm64) subida a ghcr.io/bytetuto/website:<sha7> y :latest.
  4. Job deploy: SSH a EC2, escribe /opt/bytetuto/.env, copia docker-compose.yml + deploy/*.sh, ejecuta deploy/deploy.sh.
  5. deploy.sh: pull, up -d, espera /healthz (máx. 40 s). Falla → retroceso automático a la imagen de .last_image.

Las PR solo ejecutan el job test.

Secretos / variables de GitHub (Settings → Secrets and variables → Actions)

  • Secretos: EC2_HOST, EC2_USER (ec2-user o ubuntu), EC2_SSH_KEY (llave privada completa), EC2_KNOWN_HOSTS (recomendado: salida de ssh-keyscan -H <ip>).
  • Variables: DOMAIN (ej. bytetuto.com), LETSENCRYPT_EMAIL.
  • Entorno de GitHub production (puede requerir aprobación manual).

Comandos útiles (en la EC2, en /opt/bytetuto)

  • Estado: docker compose ps · logs: docker compose logs -f web
  • Salud: curl -fsS http://127.0.0.1/healthz
  • Redesplegar una versión específica: IMAGE=ghcr.io/bytetuto/website:<sha7> bash deploy/deploy.sh
  • Retroceso manual: volver a ejecutar deploy.sh con el tag anterior (visible en la pestaña Packages de GitHub).
  • HTTPS (una vez, después de que DNS esté listo): bash deploy/init-ssl.sh (probar primero con STAGING=1).
  • Renovación: cron /etc/cron.d/bytetuto-certbot (2 veces/día), log en certbot-renew.log.

Cómo nginx elige HTTP o HTTPS

nginx/40-bytetuto-ssl.sh se ejecuta al iniciar el contenedor: si el certificado para $DOMAIN existe → https.conf.template, si no → http.conf.template. Después de init-ssl.sh, un simple docker compose restart web es suficiente.

Diagnóstico rápido

SíntomaPista
Job deploy: Permission denied (publickey)EC2_SSH_KEY / EC2_USER incorrectos
docker: permission deniedel usuario no está en el grupo docker → reconectar tras ec2-setup.sh
pull access deniedpaquete GHCR privado y login fallido, o hacer el paquete público
Timeout HTTP desde fueraSecurity Group: puertos 80/443 no abiertos
certbot fallaDNS aún no propagado, o puerto 80 cerrado
exec format errorarquitectura: verificar que la imagen sea multi-arquitectura

Reglas

  • Nunca leer ni mostrar .env, las llaves SSH o certbot/.
  • Pedir confirmación antes de git push, ssh, scp o cualquier modificación de deploy/ y del workflow.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills relacionados