Atualizar README com informações de deploy e acesso remoto
- URLs de acesso público via Nitro Cloud - Instruções de deploy, atualização e restart - Diagrama de infraestrutura (Caddy + Docker) - Variáveis de ambiente atualizadas para produção
This commit is contained in:
70
README.md
70
README.md
@@ -4,6 +4,14 @@ Painel administrativo web para orquestração de agentes [Claude Code](https://d
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Acesso
|
||||||
|
|
||||||
|
| Recurso | URL |
|
||||||
|
|---------|-----|
|
||||||
|
| **Aplicação** | https://agents.nitro-cloud.duckdns.org |
|
||||||
|
| **Repositório** | https://git.nitro-cloud.duckdns.org/fred/agents-orchestrator |
|
||||||
|
| **Portal Nitro Cloud** | https://nitro-cloud.duckdns.org |
|
||||||
|
|
||||||
## Funcionalidades
|
## Funcionalidades
|
||||||
|
|
||||||
### Gerenciamento de Agentes
|
### Gerenciamento de Agentes
|
||||||
@@ -75,38 +83,44 @@ Painel administrativo web para orquestração de agentes [Claude Code](https://d
|
|||||||
| `N` | Novo agente |
|
| `N` | Novo agente |
|
||||||
| `Esc` | Fechar modal |
|
| `Esc` | Fechar modal |
|
||||||
|
|
||||||
## Pré-requisitos
|
## Deploy
|
||||||
|
|
||||||
- **Node.js** 18+
|
A aplicação roda em container Docker na infraestrutura Nitro Cloud com HTTPS automático via Caddy + Let's Encrypt.
|
||||||
- **Claude Code CLI** instalado e autenticado (`claude` disponível no PATH)
|
|
||||||
|
|
||||||
## Instalação
|
### Atualizar o sistema em produção
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <repo-url>
|
# 1. Push das alterações para o Gitea
|
||||||
cd agents-orchestrator
|
git push nitro main
|
||||||
npm install
|
|
||||||
|
# 2. Conectar no servidor
|
||||||
|
ssh -p 2222 fred@192.168.1.151
|
||||||
|
|
||||||
|
# 3. Atualizar código e rebuild do container
|
||||||
|
cd ~/vps/apps/agents-orchestrator && git pull
|
||||||
|
cd ~/vps && docker compose up -d --build agents-orchestrator
|
||||||
```
|
```
|
||||||
|
|
||||||
## Uso
|
### Verificar status
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Produção
|
ssh -p 2222 fred@192.168.1.151 "docker logs agents-orchestrator --tail 20"
|
||||||
npm start
|
|
||||||
|
|
||||||
# Desenvolvimento (hot reload)
|
|
||||||
npm run dev
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Acesse **http://localhost:3000** no navegador. A porta pode ser alterada via variável de ambiente `PORT`.
|
### Reiniciar
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -p 2222 fred@192.168.1.151 "cd ~/vps && docker compose restart agents-orchestrator"
|
||||||
|
```
|
||||||
|
|
||||||
## Variáveis de Ambiente
|
## Variáveis de Ambiente
|
||||||
|
|
||||||
| Variável | Descrição | Padrão |
|
| Variável | Descrição | Padrão |
|
||||||
|----------|-----------|--------|
|
|----------|-----------|--------|
|
||||||
| `PORT` | Porta do servidor | `3000` |
|
| `PORT` | Porta do servidor | `3000` |
|
||||||
|
| `HOST` | Endereço de bind | `0.0.0.0` |
|
||||||
| `AUTH_TOKEN` | Token Bearer para autenticação da API | _(desabilitado)_ |
|
| `AUTH_TOKEN` | Token Bearer para autenticação da API | _(desabilitado)_ |
|
||||||
| `ALLOWED_ORIGIN` | Origin permitida para CORS | `http://localhost:3000` |
|
| `ALLOWED_ORIGIN` | Origin permitida para CORS | `https://agents.nitro-cloud.duckdns.org` |
|
||||||
| `WEBHOOK_SECRET` | Segredo HMAC para assinatura de webhooks | _(desabilitado)_ |
|
| `WEBHOOK_SECRET` | Segredo HMAC para assinatura de webhooks | _(desabilitado)_ |
|
||||||
| `CLAUDE_BIN` | Caminho para o binário do Claude CLI | _(auto-detectado)_ |
|
| `CLAUDE_BIN` | Caminho para o binário do Claude CLI | _(auto-detectado)_ |
|
||||||
| `REDIS_URL` | URL do Redis para cache L2 (opcional) | _(somente memória)_ |
|
| `REDIS_URL` | URL do Redis para cache L2 (opcional) | _(somente memória)_ |
|
||||||
@@ -115,9 +129,10 @@ Acesse **http://localhost:3000** no navegador. A porta pode ser alterada via var
|
|||||||
|
|
||||||
### Criando um agente
|
### Criando um agente
|
||||||
|
|
||||||
1. Clique em **Novo Agente** no header ou na seção Agentes
|
1. Acesse https://agents.nitro-cloud.duckdns.org
|
||||||
2. Configure nome, system prompt, modelo e diretório de trabalho
|
2. Clique em **Novo Agente** no header ou na seção Agentes
|
||||||
3. Salve — o agente aparecerá como card na listagem
|
3. Configure nome, system prompt, modelo e diretório de trabalho
|
||||||
|
4. Salve — o agente aparecerá como card na listagem
|
||||||
|
|
||||||
### Executando uma tarefa
|
### Executando uma tarefa
|
||||||
|
|
||||||
@@ -140,7 +155,22 @@ Acesse **http://localhost:3000** no navegador. A porta pode ser alterada via var
|
|||||||
2. Selecione o agente, descreva a tarefa e defina a expressão cron
|
2. Selecione o agente, descreva a tarefa e defina a expressão cron
|
||||||
3. A tarefa será executada automaticamente nos horários configurados
|
3. A tarefa será executada automaticamente nos horários configurados
|
||||||
|
|
||||||
## Arquitetura
|
## Infraestrutura
|
||||||
|
|
||||||
|
```
|
||||||
|
Cliente (navegador)
|
||||||
|
│
|
||||||
|
▼ HTTPS (porta 443)
|
||||||
|
Caddy (reverse proxy + SSL automático)
|
||||||
|
│
|
||||||
|
▼ agents.nitro-cloud.duckdns.org
|
||||||
|
Container Docker (agents-orchestrator)
|
||||||
|
│
|
||||||
|
├── Express (HTTP API + arquivos estáticos)
|
||||||
|
└── WebSocket (streaming em tempo real)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Arquitetura Interna
|
||||||
|
|
||||||
```
|
```
|
||||||
server.js Express + WebSocket + rate limiting + auth
|
server.js Express + WebSocket + rate limiting + auth
|
||||||
@@ -283,6 +313,7 @@ O servidor envia eventos tipados via WebSocket que o frontend renderiza no termi
|
|||||||
|
|
||||||
## Segurança
|
## Segurança
|
||||||
|
|
||||||
|
- **HTTPS** via Caddy com certificado Let's Encrypt automático
|
||||||
- **Autenticação** via Bearer token (variável `AUTH_TOKEN`)
|
- **Autenticação** via Bearer token (variável `AUTH_TOKEN`)
|
||||||
- **Rate limiting** — 100 requisições por minuto por IP
|
- **Rate limiting** — 100 requisições por minuto por IP
|
||||||
- **CORS** restrito à origin configurada
|
- **CORS** restrito à origin configurada
|
||||||
@@ -301,6 +332,7 @@ O servidor envia eventos tipados via WebSocket que o frontend renderiza no termi
|
|||||||
- **Fontes**: Inter (UI), JetBrains Mono (código/terminal)
|
- **Fontes**: Inter (UI), JetBrains Mono (código/terminal)
|
||||||
- **Persistência**: Arquivos JSON em disco com escrita atômica
|
- **Persistência**: Arquivos JSON em disco com escrita atômica
|
||||||
- **Cache**: In-memory com suporte opcional a Redis (ioredis)
|
- **Cache**: In-memory com suporte opcional a Redis (ioredis)
|
||||||
|
- **Infraestrutura**: Docker + Caddy + DuckDNS + Let's Encrypt
|
||||||
|
|
||||||
## Licença
|
## Licença
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user