# Requisitos

> O que o Nodaro self-hosted exige: Docker 24+ com Compose v2, banco Supabase, armazenamento compatível com S3, portas e chave de provedor ou o Nodaro Cloud.

Source: https://nodaro.ai/pt-BR/docs/self-hosting/requirements

Um Nodaro self-hosted tem cinco **requisitos**: Docker, um banco de dados com login, armazenamento de objetos compatível com S3, Redis e pelo menos um provedor de modelos. A stack do Compose da Community Edition inclui o banco de dados, o armazenamento e o Redis, então, em um único servidor, você só precisa do Docker e de um provedor de modelos. Todo o resto desta página é opcional ou voltado para produção.

## O que você precisa
| Requisito | Incluído na stack do Compose | Ou use o seu próprio |
| --- | --- | --- |
| **Docker 24+** e **Docker Compose v2** | — | Obrigatório. Chame-o como `docker compose`, e não `docker-compose`. |
| **Banco de dados e login** | Supabase Postgres, GoTrue e PostgREST. As migrações são aplicadas na inicialização. Cadastro com e-mail e senha. | Um projeto gerenciado no Supabase. O plano gratuito é suficiente. Você precisa da URL do projeto, da chave service-role e da chave anon, e aplica as migrações você mesmo. |
| **Armazenamento de objetos** | MinIO, com a mídia no seu disco | Qualquer armazenamento compatível com S3. Testados: Cloudflare R2 (recomendado, sem taxas de saída de dados), AWS S3, MinIO e Backblaze B2. |
| **Filas** | Redis 7 | O seu próprio Redis, inclusive um endpoint de cluster ou de Sentinel |
| **Um provedor de modelos** | — | Pelo menos uma chave de provedor ou uma conexão com o Nodaro Cloud |

Os navegadores dos seus usuários precisam conseguir ler a mídia sem login, porque o Nodaro entrega ao navegador URLs públicas de mídia. O MinIO incluído faz isso pelo próprio endereço do app, em `/storage/`. Com o seu próprio bucket, veja [Configurar o armazenamento de objetos](https://nodaro.ai/docs/self-hosting/install#4-configure-object-storage).

## Provedores de modelos
Os nós que chamam um modelo de IA precisam de um provedor. Sem nenhum, a instalação inicia e a demonstração abre, mas nenhum nó de modelo pode ser executado. Adicione pelo menos uma destas chaves, na página `/setup` ou no `.env`:

| Variável | O que ela oferece |
| --- | --- |
| `KIE_API_KEY` | A maior cobertura de modelos: modelos de imagem, vídeo, áudio e texto |
| `REPLICATE_API_TOKEN` | Um provedor alternativo, com catálogo próprio |
| `ANTHROPIC_API_KEY` | Modelos Claude para os nós de texto |
| `ELEVENLABS_API_KEY` | Recursos de voz: texto para fala, dublagem, modificador de voz e alinhamento forçado |
| `FAL_KEY` | Opcional. Modelos como o [Sync Lipsync v3](https://nodaro.ai/docs/models/video/sync-lipsync-v3). Sem ela, esses modelos ficam indisponíveis, e o resto do app não é afetado. |

Em vez de chaves, você pode conectar a instalação a uma conta do Nodaro Cloud: veja [Conectar ao Nodaro Cloud](https://nodaro.ai/docs/self-hosting/cloud-connect). A lista completa de chaves, inclusive as usadas por nós específicos, está em [Chaves de provedor](https://nodaro.ai/docs/self-hosting/provider-keys).

## Opcional
- **Node.js 22 ou mais recente**, para rodar a API ou os workers fora do Docker, em desenvolvimento. O teste de contrato pela linha de comando e o gerador de chaves em `tools/` também rodam com Node.js.
- **Um nome de domínio e um certificado TLS**, para produção. Veja [Proxy reverso e HTTPS](https://nodaro.ai/docs/self-hosting/reverse-proxy).

## Portas
| Porta | O que a usa | Publicada pelo arquivo do Compose |
| --- | --- | --- |
| `3000` | O app: editor, API, mídia e login, tudo em uma única origem | Sim |
| `9001` | O console do MinIO, para solução de problemas | Sim, só em `127.0.0.1` |
| `80` e `443` | O seu proxy reverso, para HTTPS | Não pelo Nodaro |
| `9000` | A API dentro do contêiner. Os clientes MCP precisam alcançá-la diretamente. | Não. Veja [MCP](https://nodaro.ai/docs/self-hosting/mcp). |

O Redis e o banco de dados ficam dentro da rede do Compose e nunca usam uma porta da sua máquina. Se a `3000` ou a `9001` estiver ocupada, mude o lado do host desse mapeamento no `docker-compose.community.yml`.

## Disco
- **A imagem.** A primeira inicialização baixa cerca de 2,4 GB.
- **Os volumes.** O `db-data` guarda o banco de dados, o `minio-data` guarda a mídia, o `redis-data` guarda as filas e o `app-data` guarda a chave de criptografia da instância. O volume de mídia cresce a cada resultado, porque o Nodaro nunca apaga sozinho a mídia armazenada. Adicione uma regra de ciclo de vida ao seu bucket se quiser que a mídia antiga expire. Veja [Escalonamento](https://nodaro.ai/docs/self-hosting/scaling#storage-lifecycle).

## Tamanho da máquina
A configuração padrão roda tudo em um único contêiner, o que atende bem até cerca de 5 usuários ativos. A renderização é o trabalho mais pesado: o worker de renderização roda um Chrome headless e é limitado pela CPU, então planeje um ou dois workers de renderização por máquina. Para mais usuários, distribua os workers em vários contêineres. Veja [Escalonamento](https://nodaro.ai/docs/self-hosting/scaling).

A imagem do app tem builds para máquinas `amd64` e `arm64`.

## Windows
No Windows, execute os scripts de backup e restauração no **Git Bash**, o shell que o Git for Windows instala, e não no PowerShell nem no WSL. Veja [Backup e restauração](https://nodaro.ai/docs/self-hosting/backups).

## Frequently asked questions

### Qual versão do Docker o Nodaro self-hosted exige?

O Docker 24 ou mais recente, com o Docker Compose v2, que você chama como docker compose, e não docker-compose.

### Preciso de uma conta no Supabase para fazer self-hosting do Nodaro?

Não. A stack do Compose da Community Edition inclui o Supabase Postgres, o GoTrue e o PostgREST e aplica as migrações para você. Um projeto gerenciado no Supabase é uma opção, não um requisito.

### Qual armazenamento de objetos funciona com o Nodaro?

O MinIO incluído ou qualquer armazenamento compatível com S3. O Cloudflare R2, o AWS S3, o MinIO e o Backblaze B2 foram testados, e o Cloudflare R2 é o recomendado, porque não cobra taxas de saída de dados.

### A imagem do Nodaro roda em servidores ARM?

Sim. A imagem do app tem uma build arm64, além da build amd64.

### Quantos usuários um único contêiner consegue atender?

A configuração com um único contêiner atende bem até cerca de 5 usuários ativos. Acima disso, separe os workers em contêineres próprios.
