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)

  1. Push para a branch main dispara o workflow em .gitea/workflows/deploy.yml.
  2. Passos típicos: varredura anti-segredos, npm ci, npm test, npm run build (o prebuild gera public/blog/rss.xml a partir de content/blog-manifest.json e actualiza o sitemap), rsync do conteúdo de dist/ para o servidor.
  3. Após deploy, um smoke check HTTP confirma que https://bitreport.pt responde 200.

Segredos necessários no repositório Gitea (nunca valores no git):

Secret Uso
DEPLOY_SSH_KEYChave SSH privada do utilizador de deploy
DEPLOY_HOSTHostname ou IP do servidor web
DEPLOY_USERUtilizador SSH (ex.: deploy)
DEPLOY_PATHDestino 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:

  • root apontando para o mesmo diretório que recebe o dist/.
  • location /api/ com proxy_pass para o serviço Node em 127.0.0.1 (porta por defeito 3847), com cabeçalhos de proxy adequados.
  • try_files na 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.

← Índice da documentação