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
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

| 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).

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

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:worksupervisionado, ou o cron do host rodandoschedule:runa 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

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:
- 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) - Gera o vhost do nginx e o pool php-fpm (ou a unidade systemd do processo, para Node.js/Next.js)
- Gera o arquivo
.envcom todas as credenciais de serviço - Provisiona o bucket MinIO e as chaves de acesso (se S3 habilitado)
- Registra a app Reverb (se Reverb habilitado)
- Registra o webhook de push do GitHub (se o deploy automático estiver ligado)
- 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.

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.

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
- Configuração de Sites — edite o
.env, ajuste versões de runtime, rode comandos, configure heartbeats e veja logs - Deploys e Rollback — o pipeline de deploy, o log ao vivo e o rollback
- Serviços, Bancos e Armazenamento — prepare os servidores que hospedarão o banco, Redis e S3 do seu site