PM2 Manager é uma interface web de gerenciamento, monitoramento e deploy all-in-one construída sobre o PM2. Ele foi criado para centralizar o controle de múltiplas aplicações Node.js (e frontends) em um único servidor, eliminando a necessidade de acesso SSH constante e comandos de terminal manuais.
Pense nele como um painel de controle unificado que oferece uma GUI poderosa sobre o motor do PM2, permitindo que você e sua equipe gerenciem todo o ciclo de vida de suas aplicações com facilidade.
O PM2 é, sem dúvida, o gerenciador de processos mais robusto para aplicações Node.js. Ele garante que seus aplicativos permaneçam online, facilita o clustering e gerencia logs.
Mas ele tem um problema: é uma ferramenta puramente de linha de comando (CLI).
Isso cria vários gargalos para equipes de desenvolvimento:
- Barreira de Entrada: Desenvolvedores (especialmente juniores) ou equipes de QA precisam de conhecimento em CLI e, muitas vezes, de acesso SSH direto ao servidor de produção ou staging apenas para reiniciar um processo ou verificar um log.
- Deploy Manual: Um deploy típico em PM2 é um processo manual e propenso a erros:
ssh,cd /var/www/meu-app,git pull,npm install,npm run build, e finalmentepm2 restart meu-app. - Gerenciamento de Configuração: Editar variáveis de ambiente (
.env) no servidor requer o uso de editores de terminal comovimounano, o que é ineficiente e arriscado. - Visibilidade: Obter uma visão geral rápida do status (CPU, Memória) de 10-15 aplicações rodando em um servidor exige vários comandos
pm2 listoupm2 monit.
O PM2 Manager resolve exatamente essa dor. Ele abstrai a complexidade do CLI e fornece uma interface gráfica segura, intuitiva e centralizada para qualquer pessoa da sua equipe gerenciar as aplicações.
Este projeto não é apenas um monitor; é um sistema de gerenciamento e deploy completo.
- Dashboard Centralizado: Visualize o status de todos os seus processos PM2 (sub-sistemas) em uma única tela.
- Métricas em Tempo Real: Acompanhe live-data de CPU, uso de memória, uptime e contagem de restarts através de polling e WebSockets.
- Controle de Processos (CRUD): Inicie, Pare, Reinicie e Delete processos individuais diretamente da UI.
- Controles em Massa: Pare ou Reinicie todos os processos de uma aplicação de uma só vez.
- Organização Lógica: Agrupe múltiplos sub-sistemas (ex:
api,worker,frontend) sob uma única "Aplicação" (ex: "MeuProjeto").
- Importação de Projetos: Adicione novas aplicações importando-as de um repositório Git ou de um arquivo .ZIP.
- Análise de Monorepo: A ferramenta analisa o repositório importado e detecta automaticamente todos os
package.json, permitindo que você importe múltiplos sub-sistemas (ex: um frontend e um backend) de uma só vez. - Pipeline de Deploy Completo: Ao clicar em "Deploy", o sistema executa um pipeline completo no background:
git pull(ou extração do .zip)npm installnpm run build(se for um frontend)pm2 delete(para o processo antigo)pm2 start(para o novo processo)
- Integração Git: Visualize se seu workspace local possui alterações (
git status), puxe atualizações (git pull) ou descarte alterações locais (git reset --hard) com um clique.
- Visualizador de Logs: Visualize logs de erro e saída de múltiplos sub-sistemas lado a lado.
- Streaming de Logs em Tempo Real: Assista aos logs sendo escritos ao vivo através de uma conexão WebSocket.
- Gerenciamento de Logs: Faça o download de arquivos de log (
.zip) ou limpe os logs atuais e rotacionados. - Editor de Variáveis de Ambiente: Uma interface gráfica completa para gerenciar as variáveis de ambiente (
.env) de todas as suas aplicações. - Executor de Scripts: Execute
npm scripts(comonpm run db:migrate) diretamente da UI e acompanhe a saída em um terminal interativo.
- Gerenciador de Startup: Configure o
pm2 startuppara Linux e gerencie o serviço do Windows (pm2-installer) para garantir que seus processos reiniciem com o servidor. - Gerenciador de Log Rotate: Configure e gerencie o módulo
pm2-logrotatediretamente da UI. - Sistema de Autenticação: Protegido por login e senha, utilizando JWT para autenticação.
O projeto é um monorepo dividido em duas partes principais:
-
project-pm2-manager-backend(O Servidor)- Node.js com Express para a API REST.
- MongoDB (com Mongoose) para armazenar configurações de aplicações, sub-sistemas, usuários e logs de deploy.
- PM2 API: Utiliza a API programática e os comandos de shell do PM2 para gerenciar processos.
- WebSockets (ws): Para streaming de logs em tempo real e saídas de scripts interativos.
- JWT (jsonwebtoken): Para autenticação de API.
- Self-Contained: O backend serve o build estático do frontend, tornando-o uma aplicação única e fácil de implantar.
-
project-pm2-manager-frontend(O Cliente Web)- React com Vite para alta performance de desenvolvimento.
- Material-UI (MUI): Para uma interface de usuário limpa e moderna.
- React Router: Para navegação.
- Axios: Para comunicação com a API REST.
- Context API: Para gerenciamento de estado (Autenticação e Tema).
Este projeto inclui um script de setup automatizado para facilitar a instalação.
Antes de começar, garanta que você tem os seguintes softwares instalados no seu servidor:
- Node.js (v18+ recomendado)
- MongoDB (acessível pelo servidor)
- Git
- PM2 (instalado globalmente:
npm install -g pm2)
git clone https://github.com/seu-usuario/project-pm2-manager.git
cd project-pm2-managerEste é o único passo manual crucial.
- Navegue até a pasta do backend:
cd project-pm2-manager-backend - Copie o arquivo de exemplo
.env.examplepara.env:cp .env.example .env
- Edite o arquivo
.envcom suas configurações:NODE_ENV=production PORT=9797 HOST=0.0.0.0 MONGODB_URI=mongodb://localhost:27017/pm2_manager JWT_SECRET=gere-uma-secret-bem-longa-e-segura-aqui JWT_EXPIRES_IN=365d LOG_LEVEL=info
- IMPORTANTE: Altere
PORTpara a porta que você deseja que o painel rode. AltereMONGODB_URIeJWT_SECRET.
- IMPORTANTE: Altere
Volte para a pasta raiz do projeto e execute o script de setup.
cd ..
npm run setupO script setup.js irá automaticamente:
- Instalar as dependências do backend (
npm installna pasta do backend). - Instalar as dependências do frontend (
npm installna pasta do frontend). - Buildar o frontend e movê-lo para a pasta
publicdo backend. - Perguntar se o PM2 está instalado.
- Iniciar a aplicação backend com PM2 sob o nome
PM2-MANAGER. - Salvar a configuração do PM2 (
pm2 save).
Após o setup, execute o script init:admin para criar seu primeiro usuário.
cd project-pm2-manager-backend
npm run init:adminSiga as instruções no terminal para definir a senha do usuário admin.
Se você usou a PORT=9797, seu painel agora está rodando!
Acesse: http://[ip-do-seu-servidor]:9797
Faça login com o usuário admin e a senha que você acabou de criar.
- Login: Acesse o painel e faça login.
- Definir Workspace (Obrigatório):
- Vá para Configurações.
- No card "Diretório de Trabalho", defina um caminho absoluto no servidor onde seus projetos serão clonados. (Ex:
/opt/pm2-workspace).
- Criar uma Aplicação:
- Vá para Aplicações.
- Clique em "Nova Aplicação". Dê um nome, como "Meu Site Pessoal".
- Importar um Sub-sistema:
- Clique na aplicação "Meu Site Pessoal" que você acabou de criar.
- Clique em "Importar de Git".
- Cole a URL do seu repositório (ex:
https://github.com/seu-usuario/meu-site-api.git). - A ferramenta irá analisar o repositório.
- Selecione o(s)
package.jsonencontrado(s), defina o Tipo (Backend/Frontend) e a Porta que ele deve usar. - Clique em "Importar".
- Configurar Variáveis de Ambiente:
- Clique no sub-sistema que apareceu (ex: "meu-site-api").
- Vá para a aba Environment.
- Preencha todas as variáveis de ambiente necessárias para sua aplicação (como
DATABASE_URL,REDIS_URL, etc.) e clique em "Salvar Alterações".
- Realizar o Deploy:
- Vá para a aba Deploy.
- Deixe a opção "Atualizar com 'git pull'" marcada.
- Clique em "Iniciar Novo Deploy".
- Acompanhe o log do deploy (clone, install, build, start) em tempo real.
- Monitorar:
- Após o sucesso, vá para a aba Overview para ver o status "RUNNING" e o consumo de CPU/Memória.
- Vá para a aba Logs para ver os logs da sua aplicação.
Pronto! Sua aplicação está implantada e sendo monitorada pelo PM2 Manager.
Este projeto está licenciado sob a Licença ISC.