Sites

Sites são o coração do PrimeForge. Cada site representa uma aplicação hospedada em um servidor — uma app Laravel, um projeto PHP puro, um site estático, ou uma aplicação Node.js/Next.js. Esta página cobre a lista de sites, os cinco tipos de site que o PrimeForge suporta, o assistente de criação em quatro passos e a página de Visão geral de cada site.

Lista de sites com os cartões de resumo da frota

Lista de sites

Acesse Infraestrutura → Sites para ver todos os sites da organização. No topo, quatro cartões resumem o estado geral — Em pânico, Falhando, No ar e Total — e cada um é clicável: abre a lista já filtrada por aquele estado. A tabela lista cada site com seu domínio, tipo, servidor e status, e filtra por tag, status, tipo de site, servidor e Panic Mode, para você localizar qualquer aplicação em segundos.

Cada linha traz um botão Logs e um menu com Visualizar, Fazer deploy agora (que pede confirmação antes de enfileirar o deploy), Configurações, Copiar domínio, Copiar ID e Excluir site. No exemplo da Empresa XPTO, a lista mostra dez sites: php, nextjs, horizon, pulse e storage em .babytor.com.br (no Servidor Principal) e static, express, reverb, todo e full em .secnote.com.br (no Servidor de Sites).

Tipos de site

O PrimeForge suporta cinco tipos de site, cada um com uma configuração de runtime e um conjunto de serviços disponíveis diferentes:

Tipo Runtime Serviços suportados Descrição
Laravel PHP-FPM + Nginx DB, Redis, Horizon, Agendador, Reverb, S3 Framework PHP full-stack com filas e tempo real
PHP Clássico PHP-FPM + Nginx DB, Redis, S3 Aplicação PHP pura, sem framework
HTML Estático Apenas Nginx Nenhum HTML, CSS e JavaScript servidos pelo Nginx
Node.js Processo Node + Nginx (reverse proxy) DB, Redis, S3 Express, Fastify, Koa ou qualquer framework Node.js
Next.js Processo Node + Nginx (reverse proxy) DB, Redis, S3 App React Next.js com renderização no servidor (SSR)

Disponibilidade de serviços por tipo

Nem todo tipo de site pode usar todo serviço. Esta tabela mostra o que cada um suporta:

Serviço Laravel PHP Clássico Estático Node.js Next.js
Banco (PG/MySQL/SQLite) Sim Sim Não Sim Sim
Redis Sim Sim Não Sim Sim
Horizon Sim Não Não Não Não
Agendador do Laravel (schedule:run) Sim Não Não Não Não
Reverb Sim Não Não Não Não
S3 (MinIO) Sim Sim Não Sim Sim

Node.js e Next.js usam campos extras: o comando de start (processo mantido vivo por uma unidade systemd do site, padrão npm start), o comando de build e a porta da aplicação (porta em que a app escuta no host, padrão 3000, para a qual o Nginx faz reverse proxy). Um site HTML Estático também aceita um comando de build, para gerar o dist/ no deploy.

Criar Site

O assistente de criação de site tem quatro passos, com um indicador de progresso no topo; você pode voltar a qualquer passo já concluído para editar. Acesse Infraestrutura → Sites e clique em Criar Site — ou use Novo site na página de um servidor, no Dashboard ou na paleta de comandos. Se o seu plano não comporta mais um site, um aviso no topo diz isso antes de você começar.

Se você abrir o assistente a partir de um servidor específico (o botão Novo site da página do servidor, ou Novo site neste servidor no seletor de contexto), o seletor de servidor fica oculto — o site só pode ser criado naquele servidor, o que elimina uma classe de erros de operação.

Passo 1 — Tipo de site

Assistente de criação de site — tipo e servidor

Campo Descrição
Tipo de site Laravel, PHP Clássico, HTML Estático, Node.js ou Next.js
Servidor Qual servidor pronto (App Server ou All-in-One) vai hospedar o site. Cada cartão de servidor mostra os serviços disponíveis localmente (DB / Redis / S3 / Reverb) para você escolher o servidor certo.

Passo 2 — Repositório e Domínio

Campo Descrição
Usar domínio gratuito Nasce o site em um subdomínio {rótulo}.on-primeforge.dev.br que já aponta para o servidor, com prévia ao vivo do endereço. Aparece quando aquele curinga realmente atende o servidor escolhido. Você troca por um domínio próprio depois, em Domínios e SSL.
Domínio O domínio em que o site será servido (por exemplo app.exemplo.com). O assistente valida o DNS ao vivo, mostrando se o registro A já aponta para o IP do servidor. Fica oculto quando o domínio gratuito está ligado.
URL do repositório A URL Git completa (por exemplo https://github.com/acme/app). O assistente confere na hora se o repositório responde e, se for privado, pede um provedor Git.
Provedor Git Necessário para repositórios privados. Selecione um provedor GitHub conectado.
Branch Padrão main — as branches são carregadas direto do repositório, e o assistente preenche a branch padrão quando consegue lê-la.

Enquanto você preenche o repositório, o assistente lê o .env.example e avisa o que detectou ("Detectado: … a partir de .env.example"), para já sugerir os serviços do passo seguinte. Para Node.js, Next.js e HTML Estático, a seção Configuração da aplicação pede o comando de start, o comando de build e a porta. Uma seção Avançado, recolhida, guarda o Diretório base (quando a aplicação não está na raiz do repositório, como em monorepos) e, para PHP Clássico e HTML Estático, o Diretório raiz (a pasta onde ficam o index.php ou os arquivos estáticos, como dist).

Assistente de criação de site — passo Repositório e Domínio, com a verificação de DNS e o domínio gratuito

A validação de DNS ao vivo é importante: o TLS automático (Let's Encrypt) só é emitido depois que o domínio resolve para o IP do servidor. Se o registro A ainda não aponta para lá, o assistente informa exatamente qual registro criar — e você ainda pode criar o site. Com o domínio gratuito, esse passo já está resolvido.

Passo 3 — Serviços

Assistente de criação de site — serviços

Para cada serviço você escolhe um servidor hospedeiro (ou desabilita). O PrimeForge lê o .env.example do seu repositório e mostra uma dica de "Detectado automaticamente" em cada seção, para você saber de relance o que a aplicação espera:

  • Banco de dados — PostgreSQL ou MySQL em um servidor específico, ou SQLite (Local) (arquivo, sem servidor). SQLite é ótimo para sites simples; PostgreSQL/MySQL em um servidor dedicado é o caminho para aplicações que crescem ou compartilham o banco.
  • Cache e fila (Redis) — qualquer servidor com Redis, ou "Não usar Redis". Em sites Laravel, a mesma seção traz o interruptor Habilitar Horizon.
  • Tempo real (Reverb) — qualquer servidor com Reverb, "Não usar Reverb", ou um Reverb/Pusher externo que você mesmo mantém (somente Laravel).
  • Armazenamento de objetos (S3) — qualquer servidor com MinIO, ou Armazenamento local.
  • Scheduler — ligue para sites Laravel que precisam do agendador do Laravel, escolhendo o modo (um processo schedule:work supervisionado, ou o cron do host rodando schedule:run a cada minuto).

Abaixo dos serviços ficam três seções:

  • Runtime — as versões de PHP e Node. Quais versões aparecem é decidido pelo registro de versões da plataforma: sites novos só recebem versões não descontinuadas, com o padrão da plataforma pré-selecionado.
  • Limites de recursos (recolhida) — limite de memória e de CPU do site, aplicados pela slice do systemd. O primeiro site de um servidor recebe, por padrão, toda a RAM e todas as vCPUs do servidor; os seguintes, metade. Ajuste se necessário — se um build pesado (por exemplo npm ci + npm run build) falhar por falta de memória, aumente o limite.
  • Domínios e SSL (recolhida) — o algoritmo da chave do certificado (ECDSA, recomendado, ou RSA) e se a cadeia "ISRG Root X1" fica ativa. O método de validação (HTTP-01, DNS-01) se escolhe depois, na página Domínios e SSL do site.

Passo 4 — Revisão

Assistente de criação de site — revisão

Confira os cartões com todas as escolhas e decida duas coisas, na seção Após a criação: Fazer o primeiro deploy agora e Deploy automático a cada push na branch configurada (vem ligado; o webhook no GitHub é registrado sozinho). Clique em Criar site. O PrimeForge então:

  1. Cria a árvore de isolamento do site no servidor (usuário Linux dedicado, diretórios em /home/{usuário do site} e slice do systemd)
  2. Gera o vhost do nginx e o pool php-fpm (ou a unidade systemd do processo, para Node.js/Next.js)
  3. Gera o arquivo .env com todas as credenciais de serviço
  4. Provisiona o bucket MinIO e as chaves de acesso (se S3 habilitado)
  5. Registra a app Reverb (se Reverb habilitado)
  6. Registra o webhook de push do GitHub (se o deploy automático estiver ligado)
  7. Dispara o deploy inicial

Enquanto isso acontece, a página do site mostra um cartão Criando o site… com os quatro passos (usuário e slice → vhost e pool php-fpm → certificado TLS → primeiro deploy) marcando conforme cada um termina — isso leva cerca de 1 a 2 minutos.

Cartão "Criando o site…" logo após a criação

Visão geral do site

Cada site tem uma página de detalhe com a sub-navegação agrupada por assunto:

Grupo Páginas
(sem grupo) Visão geral · Deployments · Ambiente · Domínios e SSL
Runtime Runtime · Serviços
Processos Workers e Jobs · Agendador · Comandos
Observar Logs · Heartbeats · Atividade
Configurações Geral · Página de manutenção

Cada página some sozinha nos tipos de site e nos papéis que não podem tê-la — um site HTML Estático, por exemplo, não tem Ambiente, Serviços, Workers e Jobs nem Agendador, e o Agendador pede o papel Developer ou acima. No alto de todas as páginas do site, o seletor de contexto {servidor} ▾ / {site} ▾ leva você à mesma página de outro site. A página Visão geral é o painel de controle do dia a dia.

Visão geral do site

Ela reúne, em cartões:

  • Informações do site — o nome da aplicação (APP_NAME), o último commit publicado, o repositório, a branch e as versões de PHP/Node.
  • Status dos serviços — banco, Redis, S3, Reverb e o que mais o site usa, cada um com o seu estado; quando um serviço do qual o site depende está fora do ar, uma faixa de degradação avisa no topo.
  • Status da fila — o resumo dos workers (sites Laravel com fila).
  • Certificado TLS — o estado do certificado. Quando ele está faltando, pendente ou expirado, o cartão expande com uma verificação de correspondência de DNS ao vivo e o último erro ACME, para você entender por que o certificado não está sendo emitido.
  • Domínio e DNS — indica se o registro A/AAAA do seu domínio resolve para o IP do servidor (um "DNS OK" verde ou uma dica âmbar dizendo qual registro A criar), com botão de copiar o IP e uma ação Verificar novamente.
  • Últimos deploys — os deploys mais recentes, com um atalho Ver todos. Quando a sonda HTTP do site está falhando, a página também diz desde quando.
  • Servidor — o servidor que hospeda o site, com o atalho para o Terminal já no contexto daquele site.
  • Isolamento do site (recolhido) — o usuário Linux do site, o master do php-fpm e a slice de cgroup, para quem precisa do detalhe técnico.

Ações do cabeçalho

Presentes em todas as páginas do site:

  • Visitar — abre o site em uma nova aba.
  • Deploy — age na hora (veja Deploys e Rollback).
  • Reverter — volta para a release anterior, depois de uma confirmação que mostra a release atual e a de destino.
  • Panic — tira o site do ar na hora (veja Modo de Pânico); com o site em pânico, dá lugar a Desativar Panic.
  • Mais — Reiniciar site (reinicia as unidades do site, aplicando mudanças de .env), Parar site (parar de forma graciosa — a intenção do painel passa a ser mantê-lo parado), Iniciar site, Criar Backup e, quando um deploy ficou preso em execução, Forçar desbloqueio do Deploy.

O PrimeForge também reinicia sozinho as unidades que travam (até 3 tentativas, marcando o site como Falhou depois disso, e como No ar de novo se ele se recuperar sozinho).

Próximos passos