Skip to content

GUI self-hosted para PM2. Centraliza o gerenciamento de processos Node.js, oferecendo deploy "one-click" (Git/Zip), edição de .env, streaming de logs via WebSocket e execução de scripts NPM em um único painel.

Notifications You must be signed in to change notification settings

Jardelmc/project-pm2-manager

Repository files navigation

🚀 Project PM2 Manager

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.


🎯 A Dor que Resolvemos

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 finalmente pm2 restart meu-app.
  • Gerenciamento de Configuração: Editar variáveis de ambiente (.env) no servidor requer o uso de editores de terminal como vim ou nano, 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 list ou pm2 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.

✨ Funcionalidades Principais

Este projeto não é apenas um monitor; é um sistema de gerenciamento e deploy completo.

Dashboard e Gerenciamento

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

Deploy "One-Click"

  • 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:
    1. git pull (ou extração do .zip)
    2. npm install
    3. npm run build (se for um frontend)
    4. pm2 delete (para o processo antigo)
    5. 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.

Logs e Ferramentas

  • 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 (como npm run db:migrate) diretamente da UI e acompanhe a saída em um terminal interativo.

Administração do Servidor

  • Gerenciador de Startup: Configure o pm2 startup para 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-logrotate diretamente da UI.
  • Sistema de Autenticação: Protegido por login e senha, utilizando JWT para autenticação.

🏗️ Arquitetura e Tech Stack

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

🚀 Guia de Instalação (Setup)

Este projeto inclui um script de setup automatizado para facilitar a instalação.

Pré-requisitos

Antes de começar, garanta que você tem os seguintes softwares instalados no seu servidor:

  1. Node.js (v18+ recomendado)
  2. MongoDB (acessível pelo servidor)
  3. Git
  4. PM2 (instalado globalmente: npm install -g pm2)

1. Clonar o Repositório

git clone https://github.com/seu-usuario/project-pm2-manager.git
cd project-pm2-manager

2. Configurar o Backend

Este é o único passo manual crucial.

  1. Navegue até a pasta do backend:
    cd project-pm2-manager-backend
  2. Copie o arquivo de exemplo .env.example para .env:
    cp .env.example .env
  3. Edite o arquivo .env com 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 PORT para a porta que você deseja que o painel rode. Altere MONGODB_URI e JWT_SECRET.

3. Executar o Script de Setup

Volte para a pasta raiz do projeto e execute o script de setup.

cd ..
npm run setup

O script setup.js irá automaticamente:

  1. Instalar as dependências do backend (npm install na pasta do backend).
  2. Instalar as dependências do frontend (npm install na pasta do frontend).
  3. Buildar o frontend e movê-lo para a pasta public do backend.
  4. Perguntar se o PM2 está instalado.
  5. Iniciar a aplicação backend com PM2 sob o nome PM2-MANAGER.
  6. Salvar a configuração do PM2 (pm2 save).

4. Criar seu Usuário Administrador

Após o setup, execute o script init:admin para criar seu primeiro usuário.

cd project-pm2-manager-backend
npm run init:admin

Siga as instruções no terminal para definir a senha do usuário admin.

5. Acessar o Painel

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.

📖 Como Usar (Primeiros Passos)

  1. Login: Acesse o painel e faça login.
  2. 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).
  3. Criar uma Aplicação:
    • Vá para Aplicações.
    • Clique em "Nova Aplicação". Dê um nome, como "Meu Site Pessoal".
  4. 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.json encontrado(s), defina o Tipo (Backend/Frontend) e a Porta que ele deve usar.
    • Clique em "Importar".
  5. 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".
  6. 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.
  7. 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.

📄 Licença

Este projeto está licenciado sob a Licença ISC.

About

GUI self-hosted para PM2. Centraliza o gerenciamento de processos Node.js, oferecendo deploy "one-click" (Git/Zip), edição de .env, streaming de logs via WebSocket e execução de scripts NPM em um único painel.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published