Serviços, Bancos e Armazenamento

Todo servidor gerenciado pelo PrimeForge pode hospedar um conjunto de serviços bare-metal — PostgreSQL, MySQL, Redis, MinIO (S3) e Reverb — além do proxy reverso, que é o nginx do host (um vhost por site). Esses serviços rodam diretamente no sistema operacional do servidor (via systemd), fora do isolamento de cada site, o que os torna rápidos e estáveis. Esta página explica quais serviços existem, onde eles rodam na sua frota, e como você os instala, mantém e inspeciona a partir das páginas Serviços (que cuida também dos runtimes de PHP e Node instalados no host), Bancos de dados e Armazenamento de cada servidor.

Nos exemplos usamos a organização de demonstração Empresa XPTO, com o Servidor Principal (tipo All-in-One, que hospeda todos os serviços) e o Servidor de Sites (tipo App Server, que roda apenas o nginx do host servindo os sites — cada site como um usuário Linux dedicado, com seu vhost no nginx e seu pool php-fpm ou unidade systemd — e consome os serviços do Servidor Principal pela malha WireGuard).

Quais serviços existem

O PrimeForge sabe instalar cinco serviços bare-metal, mais o nginx do host. Cada um tem um papel bem definido:

Serviço Para que serve Roda como
PostgreSQL Banco de dados relacional principal (recomendado para Laravel) systemd (bare-metal)
MySQL Banco de dados relacional alternativo systemd (bare-metal)
Redis Cache, filas e sessões systemd (bare-metal)
MinIO (S3) Armazenamento de objetos compatível com S3 (uploads, mídia) systemd (bare-metal)
Reverb Servidor WebSocket para recursos em tempo real (Laravel) systemd (bare-metal)
nginx Proxy reverso do host (um vhost por site), roteamento por server_name e TLS automático por site (acme.sh) systemd (bare-metal)

Para responder "onde está o meu PostgreSQL?" ou "quais servidores têm Redis?", use o filtro Serviço na lista de Infraestrutura → Servidores: escolha o serviço e a lista passa a mostrar só os servidores em que ele está instalado. Isso é essencial em arquiteturas de múltiplos servidores: um site no Servidor de Sites pode usar o PostgreSQL e o Redis do Servidor Principal através da malha WireGuard, e o filtro deixa essa distribuição visível. A versão em uso de cada serviço aparece na página Serviços do servidor.

Lista de servidores filtrada pelo serviço PostgreSQL

Onde cada serviço roda na frota

A distribuição depende do tipo do servidor escolhido no provisionamento. Os tipos que o PrimeForge oferece instalam conjuntos diferentes de serviços:

  • All-in-One — nginx do host + PostgreSQL + MySQL + Redis + MinIO + Reverb. Tudo em uma máquina só; ideal para começar.
  • App Server — apenas o nginx do host (proxy + acme.sh). Dedicado a hospedar sites; consome bancos, Redis e S3 de outros servidores pela malha WireGuard.
  • Banco de dados — PostgreSQL + MySQL + Redis. Infraestrutura de dados dedicada.
  • Armazenamento S3 — apenas MinIO. Object storage dedicado.
  • Serviços — PostgreSQL + MySQL + Redis + MinIO + Reverb, sem hospedar sites. Cluster de serviços para arquiteturas multi-servidor.
  • Reverb — apenas o servidor WebSocket Reverb.
  • Redis — apenas Redis, dedicado a cache e filas.

O tipo escolhido no provisionamento define o conjunto inicial de serviços, mas você pode acrescentar ou remover serviços depois pela página Serviços de cada servidor. Quando o conjunto instalado diverge do perfil original do tipo, o PrimeForge passa a exibir o tipo como Custom (veja abaixo).

Página de Serviços do servidor

Cada servidor tem uma sub-página Serviços, no grupo Infraestrutura da sub-navegação, com um cartão para cada um dos cinco serviços bare-metal — PostgreSQL, MySQL, Redis, MinIO e Reverb. Cada cartão mostra o estado atual (instalado ou não), a versão já formatada (17.11, e não a saída crua do psql) e as ações disponíveis. As credenciais de conexão abrem em um modal (Ver credenciais), e instalar, reiniciar, atualizar e desinstalar exigem o papel Admin ou acima.

Página de serviços de um servidor com cartões de instalar, atualizar e desinstalar

Instalar um serviço

Precisa de Redis num App Server sem reprovisionar o servidor inteiro? É aqui que você resolve:

  1. Abra o menu Instalar serviço no topo da página e escolha o serviço desejado (por exemplo, Instalar Redis).
  2. Confirme a ação — a página acompanha o progresso da instalação e atualiza o cartão automaticamente a cada poucos segundos.
  3. O agente sobe o mesmo script usado no provisionamento, executa-o, captura as credenciais em /etc/primeforge/service-credentials e detecta a versão instalada.
  4. O cartão transita de Não instalado → Instalando (pulso âmbar) → Rodando (ponto verde).
  5. Uma vez rodando, o cartão exibe a versão, a data da instalação e a ação Ver credenciais, que abre um modal com todas as informações de conexão (por exemplo REDIS_PASSWORD, POSTGRES_USER).

O assistente de criação de site percebe a mudança em tempo real: depois de instalar o Redis num App Server, aquele servidor passa a aparecer como "capaz de Redis" no passo de serviços do assistente, e o .env do site resolve automaticamente para 127.0.0.1 (uso local, no mesmo servidor).

Instalar um serviço num servidor cujo perfil de tipo não o prevê torna o servidor Custom. Por exemplo, adicionar Redis a um App Server (que originalmente só tem o nginx do host) faz o tipo virar Custom. Desinstalar de volta até casar com o perfil original restaura o tipo automaticamente — o PrimeForge lembra a intenção inicial do servidor.

Reiniciar, atualizar e manter

Os cartões oferecem, além de instalar/desinstalar, ações de manutenção conduzidas por runbooks (roteiros passo a passo):

  • Reiniciar — executa systemctl restart na unidade do serviço (o Reverb roda como a unidade systemd primeforge-reverb e é reiniciado da mesma forma). Antes de confirmar, o modal diz quantos sites daquele servidor usam o serviço e ficam sem ele por alguns segundos. O mesmo reinício aparece, por serviço, no menu Mais da Visão geral do servidor.
  • Atualizar (minor) — para PostgreSQL, MySQL e Redis, roda apt-get install --only-upgrade no pacote e reinicia a unidade. O cartão mostra "Atual X / Disponível Y" lendo a versão candidata do apt.
  • Atualizar MinIO — o MinIO não atualiza via apt, então tem uma ação dedicada. O servidor baixa os binários oficiais, verifica os checksums SHA-256, troca-os atomicamente (o binário anterior é preservado como .prev) e reinicia o serviço. Se a verificação de saúde pós-atualização falhar, o binário anterior é restaurado automaticamente. O servidor entra em modo de manutenção durante a operação.
  • Upgrade major… / Reverter… (bancos) — nunca rodam automaticamente. Quando um banco está atrás da versão maior padrão (por exemplo PostgreSQL 16 → 17), ou você precisa reverter após uma atualização ruim, o painel apresenta um runbook guiado exigindo que você confirme ter um backup — o PrimeForge não executa por você uma migração de dados em disco que seja irreversível.

Toda instalação, reinício, atualização ou desinstalação gera um registro na auditoria (visível em Operações → Incidentes e logs → Log de Auditoria).

Desinstalar um serviço (proteções de dados)

A desinstalação é deliberadamente difícil de fazer por engano, para proteger seus dados:

  1. Bloqueio por dependência — se algum site ativo depende do serviço, o modal mostra "Bloqueado — N site(s) dependem deste serviço" com os domínios bloqueadores listados, e a desinstalação não prossegue. Isso conta tanto dependentes explícitos (sites que apontam para este servidor para DB/Redis/S3/Reverb) quanto implícitos (sites no próprio servidor usando os serviços locais sem apontar explicitamente). Sites SQLite são isentos.
  2. Confirmação por nome digitado — você precisa digitar o nome do serviço exatamente (por exemplo postgresql) para armar a ação.
  3. Reconhecimento de backup — serviços que guardam dados (PostgreSQL, MySQL, Redis, MinIO) ainda exigem marcar "Fiz backup ou não preciso dos dados".
  4. Manter dados por padrão — o interruptor "Manter dados em disco (remover apenas o serviço)" vem ligado: o serviço, seus pacotes/unidades/binários, regras de UFW e credenciais são removidos, mas os diretórios de dados permanecem no servidor. Desligá-lo é uma limpeza total — o modal mostra exatamente quais diretórios serão apagados permanentemente.

Modal de desinstalação do PostgreSQL bloqueado por sites dependentes

Serviços desinstalados são lembrados, então o monitoramento de saúde para de esperá-los — o PrimeForge não vai tentar "auto-recuperar" (ressuscitar) um serviço que você removeu de propósito. A operação inteira embrulha o servidor em modo de manutenção automaticamente.

Runtimes (PHP e Node)

Ainda na página Serviços, a seção Runtimes lista as versões de PHP e de Node instaladas naquele host, com quantos sites usam cada uma. Ela não é só informativa:

  • Instalar versão roda, em segundo plano por SSH, o mesmo instalador do provisionamento (ondrej PPA para PHP, NodeSource para Node) fixado naquela versão, sem tocar nas que já existem. Você recebe um aviso no sino quando termina. O seletor só oferece versões que o painel oferece e que ainda não estão no host.
  • Remover desinstala uma versão do host, com a versão digitada para confirmar. A remoção é recusada — dizendo o motivo — quando a versão é o padrão do painel, quando algum site daquele servidor está fixado nela (os domínios são listados) ou quando se trata do próprio servidor do painel. Se existirem releases antigas construídas com aquela versão, o modal avisa que a volta de um clique para elas passa a ser recusada até você reinstalar o runtime; o site que está no ar não é afetado.

Seção Runtimes da página Serviços, com as versões de PHP e Node instaladas

Bancos de dados

A sub-página Bancos de dados de um servidor reúne todos os bancos hospedados nele — PostgreSQL, MySQL, SQLite e Redis — com um visualizador integrado, para que você inspecione dados sem abrir um terminal ou instalar um cliente externo.

Página de bancos de dados com abas Por serviço e Por site

Abas "Por serviço" e "Por site"

O visualizador organiza os bancos de duas formas:

  • Por serviço — os serviços de banco do servidor (PostgreSQL, MySQL) com o estado de cada um e os bancos que existem em cada engine, com tamanho, número de tabelas e de linhas. Útil para uma visão de infraestrutura.
  • Por site — os sites que usam um banco gerenciado, os que usam SQLite e os que usam Redis, com o banco de cada um, o servidor da aplicação (inclusive sites de outro servidor que usam este banco remotamente, pela malha) e ações para Ver o banco, Copiar URL de conexão e Copiar URL com túnel SSH. Útil para responder "qual banco pertence ao site todo.secnote.com.br?".

Sites com SQLite aparecem também aqui: o banco é um arquivo dentro do diretório compartilhado do site, e o PrimeForge o reconhece como um banco válido.

Visualizador de banco

Ao clicar em Ver em um banco PostgreSQL ou MySQL, o visualizador abre em um painel lateral e mostra:

  • Tamanho do banco e as conexões — o máximo permitido e quantas estão ativas no banco e no servidor
  • Tabelas com a contagem de linhas de cada uma
  • Informações de conexão — host, porta, nome do banco e usuário, para você reaproveitar em ferramentas externas

O visualizador foca em estrutura e contagens, não em editar dados. Tudo é lido pelo servidor por um canal seguro — você não precisa expor o banco à internet nem abrir portas; para conectar uma ferramenta sua, use Copiar URL com túnel SSH.

Visualizador de banco aberto em um banco PostgreSQL, com tabelas e contagens

Armazenamento

A sub-página Armazenamento aparece nos servidores que rodam MinIO (tipos All-in-One, Serviços e Armazenamento S3) e gerencia os buckets de objetos S3.

Página de armazenamento com buckets MinIO, mapeamento por site e limpeza de órfãos

Cada site com S3 habilitado recebe um bucket isolado (por exemplo {slug}-media), com chaves de acesso dedicadas e uma política de acesso restrita àquele bucket. A página de Armazenamento mostra:

  • Buckets por site — o mapeamento de cada bucket ao site que o utiliza, para você saber a quem cada bucket pertence.
  • Tamanhos — o espaço em disco consumido por cada bucket, para acompanhar crescimento e planejar capacidade.
  • Limpeza de órfãos — buckets que não correspondem mais a nenhum site ativo (por exemplo de um site excluído) são sinalizados como órfãos e podem ser removidos com segurança para recuperar espaço.

O console do MinIO e a API S3 de cada servidor são publicados pelo nginx do host em subdomínios dedicados (minio.{domínio} e s3.{domínio}), mas o gerenciamento do dia a dia — criar bucket ao habilitar S3 num site, listar tamanhos, limpar órfãos — acontece direto por esta página do painel.

Próximos passos