🚀 Guia Rápido de Deploy Expresso — alessiojr.com
Este projeto utiliza o modelo de Deploy Expresso Local: toda a compilação pesada do Quarto ocorre na sua máquina local com múltiplos núcleos e renderização incremental. O servidor remoto apenas recebe as diferenças (delta) via rsync, garantindo atualizações no ar em menos de 30 segundos.
⚡ Comandos Rápidos pelo Terminal (CLI)
1. Sincronizar Disciplina + Renderizar + Deploy (Ex: GPS ou IA2)
Quando você atualiza as aulas ou materiais de uma disciplina no Google Drive e quer sincronizar e colocar no ar:
./scripts/dev.sh sync-deploy gps
./scripts/dev.sh sync-deploy ia2
./scripts/dev.sh sync-deploy estagioO que ele faz automaticamente: 1. Puxa do Google Drive (
/mnt/arquivos/GDrive/Documents/Disciplinas/<modulo>). 2. Renderiza apenas a pasta da disciplina no Quarto. 3. Criptografa páginas restritas com StatiCrypt (respeitando o.staticrypt.json). 4. Envia para o servidor viarsync(preservando as outras disciplinas). 5. Cria o commit e dá push no Git.
2. Sincronizar e Compilar Localmente (Sem Deploy)
Para testar a disciplina localmente antes de publicar:
./scripts/dev.sh sync-render gps3. Deploy Expresso Completo do Site
Quando você altera páginas gerais, posts do blog, projetos ou páginas de topo:
./scripts/dev.sh deployCompila as seções ativas, protege páginas confidenciais e faz upload via rsync.
4. Apenas Enviar para o Servidor (Já compilado)
Se você já rodou o quarto render antes e só quer subir:
./scripts/dev.sh uploadOu diretamente:
./scripts/deploy.sh5. Simulação de Deploy (Dry-Run / Teste Seguro)
Para testar a conexão com o servidor e ver a lista de arquivos modificados sem alterar nada:
./scripts/dev.sh dry-run6. Ajuda e Descoberta de Módulos (CLI)
Para consultar os comandos e opções diretamente no terminal:
./scripts/dev.sh --help # Exibe ajuda formatada com exemplos
./scripts/dev.sh modules # Lista os módulos cadastrados e seus caminhos⌨️ Autocompletar no Terminal (Tab Completion)
O projeto possui um script de autocompletar inteligente para Bash/Zsh em scripts/dev-completion.bash.
Como funciona:
- Comandos: Digite
./scripts/dev.sh sy<TAB>→ completa parasync-deployousync-render. - Módulos: Digite
./scripts/dev.sh sync-deploy <TAB><TAB>→ lista todas as disciplinas válidas (aed2,cg,clp,compiladores,gps,ia2,tec-programacao). Digitegp<TAB>→ completa direto paragps.
Ativação rápida:
Sessão atual:
source scripts/dev-completion.bashPermanente (no
~/.bashrc):echo "source $(pwd)/scripts/dev-completion.bash" >> ~/.bashrc
💡 Dica de Atalho (alias dev):
Adicione no seu ~/.bashrc:
alias dev="/dados/projetos/sites/alessiojr.com/scripts/dev.sh"O autocompletar já reconhece a palavra dev! Você poderá usar simplesmente:
dev sync-deploy gp<TAB>🔒 Proteção de Páginas com Senha (StatiCrypt)
As áreas restritas (como avaliacoes/ nas disciplinas ou pessoal/) são criptografadas com o StatiCrypt:
Como funciona a separação Local vs Produção:
- Módulo Original no Google Drive (
/mnt/arquivos/GDrive/Documents/Disciplinas/<modulo>):- O preview local (
quarto preview, ex:http://localhost:4964/avaliacoes/) não pede senha. - Isso ocorre porque a variável
PROTECT_SITEnão está ativa no ambiente do módulo isolado.
- O preview local (
- Site Principal de Produção (
https://alessiojr.com/disciplines/<modulo>/avaliacoes/):- O site possui um arquivo
.envlocal na raiz comPROTECT_SITE=true(ignorado pelo Git). - O script
scripts/deploy.she o./scripts/dev.sh sync-deploygarantem quescripts/protect-site.shseja executado antes de qualquer upload viarsync. - A senha padrão é lida do
.staticrypt.jsonde cada disciplina (ou deSTATICRYPT_PASSWORDno.env). - Se rodar
quarto previewno site principal, o script detecta o modo preview e suspende a criptografia para manter o desenvolvimento rápido.
- O site possui um arquivo
⚙️ Configurações Remotas Utilizadas
- Host:
webserver.juninho.com.br - Usuário SSH:
ubuntu - Chave:
~/.ssh/WebServer2025.pem - Usuário de Destino:
alessio(usandosudo -u alessio rsync) - Destino:
/home/alessio/public_html/_site/ - Regra de Exclusão:
--exclude-from='.quartoignore'(não deleta páginas de disciplinas arquivadas no servidor).