# Instalación manual

> Despliega PentAGI a mano con Docker Compose: crea el directorio de trabajo, rellena el archivo .env, añade un provider de LLM y arranca la pila.

Usa la ruta manual cuando quieras tener control total sobre la configuración o no puedas ejecutar el instalador interactivo.

## [1. Crea un directorio de trabajo](https://pentagi.com/es/docs/getting-started/manual-installation/#1-create-a-working-directory)

```bash
mkdir -p ~/pentagi && cd ~/pentagi
```

## [2. Descarga el archivo de entorno](https://pentagi.com/es/docs/getting-started/manual-installation/#2-download-the-environment-file)

```bash
test -f .env || curl -fo .env.new https://raw.githubusercontent.com/vxcontrol/pentagi/main/.env.example
test -f .env.new && openssl rand -hex 32 | xargs -I VALUE sed -E -i.bak 's/^COOKIE_SIGNING_SALT=salt( .*)?$/COOKIE_SIGNING_SALT=VALUE/' .env.new
test -f .env.new && openssl rand -hex 16 | xargs -I VALUE sed -E -i.bak 's/^PENTAGI_POSTGRES_PASSWORD=postgres( .*)?$/PENTAGI_POSTGRES_PASSWORD=VALUE/' .env.new
test -f .env || mv .env.new .env
```

El archivo compose monta tres archivos de configuración de [provider](https://pentagi.com/es/docs/glossary/#provider); por lo tanto, créalos (los archivos vacíos son válidos):

```bash
touch example.custom.provider.yml example.ollama.provider.yml example.bedrock.provider.yml
```

Si planeas usar un endpoint personalizado compatible con OpenAI u Ollama, descarga las configuraciones de ejemplo en lugar de usar archivos vacíos. Luego, establece `LLM_SERVER_CONFIG_PATH` o `OLLAMA_SERVER_CONFIG_PATH` en `.env` con la ruta `/opt/pentagi/conf/custom.provider.yml` o `/opt/pentagi/conf/ollama.provider.yml`. El ejemplo personalizado nombra modelos de OpenAI, entre ellos `o3-mini`, que OpenAI retira el 23 de octubre de 2026: configura el `model` de cada [agent type](https://pentagi.com/es/docs/glossary/#agent-type) a uno que tu endpoint sirva:

```bash
curl -o example.custom.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/main/examples/configs/custom-openai.provider.yml
curl -o example.ollama.provider.yml https://raw.githubusercontent.com/vxcontrol/pentagi/main/examples/configs/ollama-llama318b.provider.yml
```

## [3. Añade al menos un LLM provider](https://pentagi.com/es/docs/getting-started/manual-installation/#3-add-at-least-one-llm-provider)

Edita `.env` y configura la clave de al menos un provider:

```bash
OPEN_AI_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GEMINI_API_KEY=your_gemini_key
```

Otros providers —AWS Bedrock, Ollama, DeepSeek, GLM, Kimi, Qwen, MiniMax, Mistral, xAI y endpoints personalizados— se describen en [LLM providers](https://pentagi.com/es/docs/configuration/llm-providers/). Los [search engines](https://pentagi.com/es/docs/glossary/#search-engine) son opcionales; DuckDuckGo y Sploitus no requieren clave:

```bash
DUCKDUCKGO_ENABLED=true
SPLOITUS_ENABLED=true
TAVILY_API_KEY=your_tavily_key
```

## [4. Inicia el stack](https://pentagi.com/es/docs/getting-started/manual-installation/#4-start-the-stack)

```bash
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose.yml
test -f .env && docker compose up -d
```

La interfaz web está disponible en `https://localhost:8443`. Inicia sesión con `admin@pentagi.com` / `admin` y cambia la contraseña.

La interfaz web y los demás servicios están vinculados a localhost, pero el [sandbox](https://pentagi.com/es/docs/glossary/#sandbox) de cada [flow](https://pentagi.com/es/docs/glossary/#flow) publica dos puertos de callback, desde `28000` hasta `29999` por defecto, en todas las interfaces del host Docker, y ufw no los filtra. En un host al que otros puedan acceder, restringe primero ese rango — consulta [Exposición de red](https://pentagi.com/es/docs/configuration/security/#network-exposure). Para actualizar la instalación más adelante, sigue [Actualización](https://pentagi.com/es/docs/deployment/upgrade/).

## [Stacks opcionales](https://pentagi.com/es/docs/getting-started/manual-installation/#optional-stacks)

Cada servicio opcional se distribuye como su propio archivo compose que se superpone al base:

| Stack                                              | Archivo compose                                                                                    | Qué añade                                             |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| Observabilidad de LLM                              | [`docker-compose-langfuse.yml`](https://pentagi.com/es/docs/configuration/observability/#langfuse)                       | Langfuse con ClickHouse, Redis y MinIO                |
| [Knowledge graph](https://pentagi.com/es/docs/glossary/#knowledge-graph) | [`docker-compose-graphiti.yml`](https://pentagi.com/es/docs/concepts/memory/#knowledge-graph-optional)                   | Graphiti y Neo4j                                      |
| Observabilidad del sistema                         | [`docker-compose-observability.yml`](https://pentagi.com/es/docs/configuration/observability/#grafana-and-opentelemetry) | Grafana, OpenTelemetry, VictoriaMetrics, Jaeger, Loki |

> [!WARNING]
> Para producción y cualquier entorno donde se ejecute código no confiable, aísla los contenedores de [tool](https://pentagi.com/es/docs/glossary/#tool) en un [worker node](https://pentagi.com/es/docs/deployment/worker-node/) dedicado.