byteTuto/website

Implante, verifique, diagnostique ou reverta o site byteTuto hospedado na Amazon EC2 (Docker + nginx, GitHub Actions, GHCR, Let's Encrypt). Use para qualquer questão de publicação, HTTPS, servidor ou pipeline CI/CD.

O que é website?

Esta skill gerencia o ciclo de vida de implantação do site byteTuto em uma instância Amazon EC2, utilizando Docker e nginx como stack principal. Ela descreve o pipeline CI/CD baseado em GitHub Actions: ao enviar para a branch `main`, executa testes (build docker, verificação de configuração nginx, teste de saúde), publica imagens multi-arquitetura no GitHub Container Registry e faz deploy via SSH na EC2 com rollback automático em caso de falha. A skill também cobre configuração de HTTPS via Let's Encrypt (com modo staging para testes), solução de problemas comuns (chaves SSH, permissões Docker, segurança de grupos) e regras de segurança para não expor segredos. É útil para desenvolvedores que mantêm o site e precisam entender ou depurar o pipeline de ponta a ponta. Suporta plataformas amd64 e arm64, e garante que PRs executem apenas os testes sem deploy.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Implantação do byteTuto na EC2

Cadeia de implantação

  1. git push em main → .github/workflows/deploy.yml
  2. Job test: docker build, nginx -t, teste de fumaça (/healthz, página inicial, 404, cabeçalho CSP).
  3. Job publish: imagem multi-arq (amd64 + arm64) enviada para ghcr.io/bytetuto/website:<sha7> e :latest.
  4. Job deploy: SSH para EC2, escreve /opt/bytetuto/.env, copia docker-compose.yml + deploy/*.sh, executa deploy/deploy.sh.
  5. deploy.sh: pull, up -d, aguarda /healthz (40 s máx). Falha → rollback automático para a imagem de .last_image.

PRs executam apenas o job test.

Segredos / variáveis do GitHub (Settings → Secrets and variables → Actions)

  • Segredos: EC2_HOST, EC2_USER (ec2-user ou ubuntu), EC2_SSH_KEY (chave privada completa), EC2_KNOWN_HOSTS (recomendado: saída de ssh-keyscan -H <ip>).
  • Variáveis: DOMAIN (ex. bytetuto.com), LETSENCRYPT_EMAIL.
  • Ambiente GitHub production (pode exigir aprovação manual).

Comandos úteis (na EC2, em /opt/bytetuto)

  • Estado: docker compose ps · logs: docker compose logs -f web
  • Saúde: curl -fsS http://127.0.0.1/healthz
  • Reimplantar uma versão específica: IMAGE=ghcr.io/bytetuto/website:<sha7> bash deploy/deploy.sh
  • Rollback manual: execute novamente deploy.sh com a tag antiga (visível na aba Packages do GitHub).
  • HTTPS (uma vez, após DNS OK): bash deploy/init-ssl.sh (teste primeiro com STAGING=1).
  • Renovação: cron /etc/cron.d/bytetuto-certbot (2×/dia), log em certbot-renew.log.

Como o nginx escolhe HTTP ou HTTPS

nginx/40-bytetuto-ssl.sh é executado na inicialização do contêiner: certificado presente para $DOMAIN → https.conf.template, senão → http.conf.template. Após init-ssl.sh, basta um docker compose restart web.

Diagnóstico rápido

SintomaPista
Job deploy: Permission denied (publickey)EC2_SSH_KEY / EC2_USER incorretos
docker: permission deniedo usuário não está no grupo docker → reconectar após ec2-setup.sh
pull access deniedpacote GHCR privado e login falhou, ou tornar o pacote público
Timeout HTTP do exteriorSecurity Group: portas 80/443 não abertas
certbot falhaDNS ainda não propagado, ou porta 80 fechada
exec format errorarquitetura: verificar se a imagem é multi-arquitetura

Regras

  • Nunca ler nem exibir .env, chaves SSH ou certbot/.
  • Pedir confirmação antes de git push, ssh, scp ou qualquer modificação em deploy/ e no workflow.

Individual skills in this repo

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

Habilidades Relacionadas