Documentação / Deploy
Deploy do site
O site estático é gerado com Vite e publicado na raiz do vhost (ex.: /var/www/bitreport.pt/).
O pipeline corre na Gitea Actions (forge self-hosted, não GitHub). A API de leads é um processo Node separado, por baixo de nginx.
Ambientes
| Ambiente | Site estático | API /api/* |
|---|---|---|
| Desenvolvimento local | npm run dev (Vite) |
npm run api + proxy Vite para 127.0.0.1:3847 |
Produção (bitreport.pt) |
Ficheiros em dist/ via CI/CD (rsync) para o docroot nginx |
systemd + Node em 127.0.0.1; nginx proxy_pass (ver deploy/nginx/bitreport.pt.conf) |
Repositório canónico (CI/CD + código): git.bitreport.pt/BitReport.pt/bitreport-website · workflow: .gitea/workflows/deploy.yml
Fluxo automático (Gitea Actions)
- Push para a branch
maindispara o workflow em.gitea/workflows/deploy.yml. - Passos típicos: varredura anti-segredos,
npm ci,npm test,npm run build(oprebuildgerapublic/blog/rss.xmla partir decontent/blog-manifest.jsone actualiza o sitemap),rsyncdo conteúdo dedist/para o servidor. - Após deploy, um smoke check HTTP confirma que
https://bitreport.ptresponde 200.
Segredos necessários no repositório Gitea (nunca valores no git):
| Secret | Uso |
|---|---|
| DEPLOY_SSH_KEY | Chave SSH privada do utilizador de deploy |
| DEPLOY_HOST | Hostname ou IP do servidor web |
| DEPLOY_USER | Utilizador SSH (ex.: deploy) |
| DEPLOY_PATH | Destino rsync, ex.: /var/www/bitreport.pt/ |
Pull requests também executam build e testes; o deploy com rsync só corre em push para main.
Nginx e ficheiros estáticos
O exemplo em deploy/nginx/bitreport.pt.conf define:
rootapontando para o mesmo diretório que recebe odist/.location /api/comproxy_passpara o serviço Node em 127.0.0.1 (porta por defeito 3847), com cabeçalhos de proxy adequados.try_filesna raiz para servir HTML e recursos gerados pelo Vite.
Após alterar a configuração: sudo nginx -t && sudo systemctl reload nginx. Certificados TLS: fluxo habitual com certbot/Let's Encrypt.
API de leads em produção
O workflow de Actions não substitui a gestão do processo Node: mantenha o código em server/ num diretório no servidor (ex.: fora da raiz pública), execute npm ci --omit=dev, configure LEADS_DB_PATH e use a unidade systemd de exemplo em deploy/systemd/bitreport-website-api.service.example. Actualize o serviço quando server/ ou dependências mudarem.
Deploy manual (resumo)
npm run build
rsync -az --delete dist/ deploy@<host>:/var/www/bitreport.pt/
Substitua utilizador, host e caminho pelos valores da sua infraestrutura.
Desenvolvimento local
Terminal 1: npm run api. Terminal 2: npm run dev. Detalhes da API: documentação da API.