# Proceso de instalación de Sherpa Orchestrator

## Instalación de Sherpa Orchestrator

### Extracción de los archivos de cliente

En esta etapa, extraerá el archivo de actualización de Sherpa Orchestrator y preparará el sistema para la instalación.

#### Extracción del archivo de actualización

```bash
# Encuentre y extraiga el archivo de actualización (se selecciona automáticamente la versión más reciente)
tar -xvzf "$(ls docker_orchestrator_client_files_*.tgz | sort -V | tail -n 1)"
```

<details>

<summary>💡 Notas sobre la extracción del archivo</summary>

**tar -xvzf "$(ls docker\_orchestrator\_client\_files\_\*.tgz | sort -V | tail -n 1)"** - extrae el archivo de actualización

* `tar -xvzf` - extrae el archivo con salida detallada
* `ls docker_orchestrator_client_files_*.tgz` - encuentra todos los archivos de actualización
* `sort -V` - ordena las versiones de forma natural (1.0 < 1.1 < 1.10)
* `tail -n 1` - selecciona el archivo más reciente

**Resultado esperado:** Se extraerán los archivos y directorios necesarios para la actualización del sistema.

</details>

**Resultado esperado:** Se extraerán los archivos de actualización de Sherpa Orchestrator.

#### Preparación de los scripts para la ejecución

```bash
# Navegue al directorio sh_scripts
# Haga todos los scripts ejecutables
# Regrese al directorio raíz del proyecto
cd sh_scripts && chmod +x *.sh && cd ..
```

<details>

<summary>💡 Notas sobre la preparación de scripts</summary>

**cd sh\_scripts/** - navega al directorio con los scripts de instalación

\**chmod +x .sh* - establece permisos de ejecución para todos los scripts shell

* `chmod +x` - agrega permiso de ejecución
* `*.sh` - todos los archivos con extensión .sh

**cd ..** - regresa al directorio raíz del proyecto

</details>

### Carga de imágenes Docker

```bash
# Ejecute el script de carga de imágenes Docker
sudo ./sh_scripts/load_all_docker_images.sh
```

<details>

<summary>💡 Notas sobre la carga de imágenes Docker</summary>

**sudo ./sh\_scripts/load\_all\_docker\_images.sh** - ejecuta el script de carga de imágenes Docker

**Qué hace el script:**

1. Carga todas las imágenes Docker de los archivos .tar.gz descargados
2. Importa las imágenes al registro Docker local
3. Verifica la carga exitosa de todas las imágenes del orchestrator

</details>

### Creación de la configuración del sistema

```bash
# Ejecute el script de creación de configuración
sudo ./sh_scripts/create_config.sh
```

<details>

<summary>💡 Notas sobre la creación de configuración</summary>

**sudo ./sh\_scripts/create\_config.sh** - ejecuta el script de creación de la configuración base

**Qué hace el script:**

1. Crea los directorios necesarios para la configuración
2. Configura los parámetros básicos del sistema
3. Prepara la estructura para la configuración posterior

</details>

### Copia de certificados SSL

Para garantizar una conexión HTTPS segura, es necesario copiar los certificados SSL:

```bash
# Cree el directorio de certificados (si no existe)
mkdir -p ./nginx/config/certs/

# Renombre y copie el certificado y la clave para su dominio
# Reemplace las rutas con las rutas reales de sus certificados
cp /path/to/your/certificate.crt ./nginx/config/certs/orchestrator.crt
cp /path/to/your/private.key ./nginx/config/certs/orchestrator.key
```

<details>

<summary>💡 Notas sobre la copia de certificados SSL</summary>

**mkdir -p ./nginx/config/certs/** - crea el directorio de certificados

* `-p` - crea los directorios padre si no existen

**cp /path/to/your/certificate.crt ./nginx/config/certs/orchestrator.crt** - copia y renombra el certificado **cp /path/to/your/private.key ./nginx/config/certs/orchestrator.key** - copia y renombra la clave privada

**Requisitos de los certificados:**

* El certificado debe renombrarse a `orchestrator.crt`
* La clave privada debe renombrarse a `orchestrator.key`
* Los nombres de los archivos deben coincidir exactamente con los especificados
* Formato del certificado: `.crt` o `.pem`
* Formato de la clave: `.key`

</details>

**Importante:** Asegúrese de que los certificados tienen los permisos correctos:

```bash
# Establezca los permisos correctos en los certificados (puede requerir sudo)
chmod 644 ./nginx/config/certs/orchestrator.crt
chmod 600 ./nginx/config/certs/orchestrator.key
chown 65532:65532 ./nginx/config/certs/orchestrator.key ./nginx/config/certs/orchestrator.crt
```

**ADVERTENCIA**: Los certificados deben obtenerse del administrador de red o de su autoridad certificadora corporativa. Si no dispone de dichos certificados, puede utilizar las instrucciones para obtener certificados de Let's Encrypt u otras autoridades certificadoras.

### Configuración de TLS para el protocolo LDAPS (paso opcional)

**Importante:** Si no se requiere soporte LDAPS, omita este paso.

Copie el certificado rootCA con el nombre `ca-certificates.crt` al directorio `/opt/SherpaOrchestrator/backend/config/certs/`

En el archivo `docker-compose.yml`, descomente la línea:

```yaml
- ./backend/config/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro
```

### Configuración de certificados para el servidor IMAP (paso opcional)

**Importante:** Si no planea usar Triggers con lanzamiento por correo electrónico o su servidor de correo no requiere certificados, omita este paso.

Copie los certificados IMAP a la carpeta `/opt/SherpaOrchestrator/backend/config/certs/imap_certs`

### Selección de la configuración de base de datos

Utilice el archivo compose unificado y seleccione la base de datos mediante perfil:

```bash
# Copie el archivo compose cliente combinado
cp docker-compose.client.yml docker-compose.yml
```

<details>

<summary>💡 Notas sobre la selección de configuración de BD</summary>

**cp docker-compose.client.yml docker-compose.yml** - copia la configuración combinada para el lanzamiento cliente

**Recomendaciones:**

* Para MariaDB, ejecute el perfil `mariadb`
* Para PostgreSQL, ejecute el perfil `pg`
* El directorio de trabajo debe contener el archivo final `docker-compose.yml`

</details>

### Configuración de variables de entorno

Abra el archivo `.env` y configure los parámetros principales:

```bash
# Abra el archivo .env en un editor de texto
nano .env
```

**Asegúrese de configurar las siguientes variables:**

```bash
# Dirección IP del servidor (cambie a su dirección IP real o dominio)
HOST_IP=your_server_ip

# Nombre de dominio que utilizará NGINX (generalmente coincide con su dominio principal)
NGINX_DOMAIN_NAME=your_domain_name

# Contraseña de la base de datos MySQL (si difiere del "mysql-password" predeterminado)
DB_PASSWORD=mysql-password

# Contraseña de la base de datos PostgreSQL (si difiere del "postgres-password" predeterminado)
POSTGRES_PASSWORD=postgres-password

# Configuración de VNC
VNC_HOST=your_server_ip
VNC_PORT=5900
VNC_LOG_LEVEL=INFO
VNC_START_PORT=6080
VNC_MAX_PORTS=21
VNC_WEBSOCKIFY_WEB_ROOT=/opt/noVNC
```

<details>

<summary>💡 Notas sobre la configuración de variables de entorno</summary>

**nano .env** - abre el archivo de variables de entorno

* `.env` - archivo con variables de entorno para Docker Compose

**HOST\_IP** - parámetro de importancia crítica

* Especifique la dirección IP real o el nombre de dominio de su servidor
* Esta es la dirección desde la que el sistema será accesible externamente
* Debe ser una IP estática o un dominio correctamente configurado

**NGINX\_DOMAIN\_NAME** - nombre de dominio para la interfaz web

* Especifique el dominio que los usuarios utilizarán para acceder a Sherpa Orchestrator (por ejemplo, `orchestrator.example.com`)
* Generalmente coincide con el dominio especificado en el certificado SSL

DB\_PASSWORD - contraseña de la base de datos MySQL

* Por defecto: mysql-password
* Cambie a una contraseña segura si es necesario

**POSTGRES\_PASSWORD** - contraseña de la base de datos PostgreSQL

* Por defecto: postgres-password
* Cambie a una contraseña segura si es necesario

</details>

#### Configuración de la base de datos

Abra el archivo de configuración y configure los parámetros de la base de datos y el servidor de correo:

```bash
# Abra el archivo de configuración
sudo nano backend/config/config.ini
```

**Configure los siguientes parámetros:**

```ini
# Configuración de la base de datos (para MySQL - por defecto)
database_engine=mysql
database_host=orchestrator-db
database_port=3306
database_user=root
database_password=mysql-password
database_dbname=orchestrator
database_dbname_archive=orchestrator_archive

# Configuración de la base de datos (para PostgreSQL - descomente si usa PostgreSQL)
;database_engine=pgsql
;database_host=orchestrator-pg
;database_port=5432
;database_user=postgres
;database_password=postgres-password

```

**Importante:** ¡Si cambió las contraseñas en el archivo `.env` (DB\_PASSWORD o POSTGRES\_PASSWORD), asegúrese de que las contraseñas correspondientes en config.ini coincidan!

#### Configuración de phinx.php (migraciones de BD)

El archivo `backend/config/phinx.php` es utilizado por Phinx para ejecutar migraciones al iniciar el contenedor. Las contraseñas en él deben coincidir con las de `.env` y `config.ini`:

```bash
sudo nano backend/config/phinx.php
```

En la sección `environments`, establezca las mismas contraseñas que en config.ini:

* Para **MySQL**: en el bloque `'mysql'`, el parámetro `'pass'` debe coincidir con DB\_PASSWORD de `.env` (por defecto `mysql-password`).
* Para **PostgreSQL**: en el bloque `'pgsql'`, el parámetro `'pass'` debe coincidir con `POSTGRES_PASSWORD` de `.env` (por defecto `postgres-password`).

Si las contraseñas no coinciden, las migraciones fallarán al iniciar el contenedor.

<details>

<summary>💡 Notas sobre la configuración de config.ini</summary>

**sudo nano backend/config/config.ini** - abre el archivo de configuración

* `sudo` - derechos de administrador para la edición
* `nano` - editor de texto
* `backend/config/config.ini` - ruta al archivo de configuración

**Parámetros de la base de datos:**

* **database\_password** - la contraseña debe coincidir con MYSQL\_ROOT\_PASSWORD del archivo .env
* **database\_engine** - seleccione 'mysql' o 'pgsql' según el archivo docker-compose elegido
* **database\_host** - déjelo como está (orchestrator-db u orchestrator-pg)
* **database\_port** - déjelo como está (3306 para MySQL, 5432 para PostgreSQL)

**Importante:**

* Las contraseñas de la base de datos deben coincidir exactamente con las contraseñas del archivo .env
* Las mismas contraseñas deben especificarse en **backend/config/phinx.php** (los campos `pass` en las secciones `mysql` y `pgsql`) — de lo contrario, las migraciones no se ejecutarán al iniciar el contenedor
* Si usa PostgreSQL - descomente las líneas correspondientes y comente las de MySQL
* Guarde el archivo después de realizar los cambios (Ctrl+O, Enter, Ctrl+X)

</details>

### Inicio del sistema

Tras completar todas las etapas preparatorias, se puede iniciar Sherpa Orchestrator.

```bash
# Inicie el sistema con el perfil de BD deseado
# Opción 1: MariaDB
docker compose --profile mariadb up -d

# Opción 2: PostgreSQL
docker compose --profile pg up -d

# Si se necesita Vault (opcional), agregue el perfil vault:
# Opción 1: MariaDB + Vault
docker compose --profile mariadb --profile vault up -d

# Opción 2: PostgreSQL + Vault
docker compose --profile pg --profile vault up -d
```

<details>

<summary>💡 Notas sobre el inicio del sistema</summary>

**docker compose --profile \<mariadb|pg> up -d** - inicia el sistema con la BD seleccionada

**docker compose --profile \<mariadb|pg> --profile vault up -d** - inicia el sistema con Vault

* El perfil `vault` es opcional y se habilita solo cuando es necesario
* Para la configuración posterior de Vault, use la guía `6) VAULT.md`

**Qué hace el script:**

1. Inicia los servicios del orchestrator mediante Docker Compose
2. Activa solo el contenedor de base de datos seleccionado por perfil (`mariadb` o `pg`)
3. Configura la red y los volumes
4. Realiza migraciones de base de datos si es necesario
5. Inicia los servicios en modo en segundo plano

</details>

#### Verificación del estado de inicio

```bash
# Verifique el estado de todos los contenedores en ejecución
docker compose ps

# Consulte los logs del sistema
docker compose logs orchestrator

# Monitoree los logs en tiempo real
docker compose logs -f orchestrator
```

<details>

<summary>💡 Notas sobre la verificación del estado de inicio</summary>

**docker compose ps** - muestra el estado de todos los contenedores

* Deben estar en ejecución: `orchestrator`, `orchestrator-vnc-proxy` y un contenedor de BD (`orchestrator-db` con `mariadb` u `orchestrator-pg` con `pg`)

**docker compose logs orchestrator** - muestra los logs del servicio principal

**docker compose logs -f orchestrator** - sigue los logs en tiempo real

* `-f` - follow (seguir los nuevos mensajes)

</details>

**Salida esperada tras un inicio exitoso:**

```
NAME                    STATUS              PORTS
orchestrator            Up 2 minutes        0.0.0.0:443->443/tcp
orchestrator-db         Up 2 minutes        3306/tcp
orchestrator-vnc-proxy  Up 2 minutes        0.0.0.0:5000->5000/tcp, 0.0.0.0:6080-6100->6080-6100/tcp

# Para el perfil pg, en lugar de orchestrator-db aparecerá orchestrator-pg
```

#### Verificación de la disponibilidad del sistema

**Comprobación de la interfaz web:**

```bash
# Compruebe la disponibilidad HTTPS (reemplace con su dominio/IP)
curl -I https://your-domain-or-ip

# Respuesta esperada: HTTP/2 200 o redirección
```

#### Gestión del sistema

**Detención del sistema:**

```bash
# Detenga todos los servicios
docker compose down

# Detenga con eliminación de volumes (¡cuidado!)
docker compose down -v
```

**Reinicio de servicios:**

```bash
# Reinicie un servicio específico
docker compose restart orchestrator

# Reinicie todos los servicios
docker compose restart
```

**Visualización de recursos:**

```bash
# Compruebe el uso de recursos de los contenedores
docker stats
```

#### Posibles problemas al iniciar:

* **Los contenedores no se inician**: Revise los logs con `docker compose logs`
* **Problemas de red**: Asegúrese de que los puertos 443, 5000, 6080-6100 estén libres
* **Errores de conexión a la BD**: Verifique la configuración en docker-compose.yml
* **Problemas con el dominio**: Asegúrese de que HOST\_IP esté correctamente configurado

Tras iniciar y probar exitosamente el sistema, la instalación de Sherpa Orchestrator ha concluido. El sistema estará disponible por HTTPS en el dominio o dirección IP configurados.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/es/sherpa-rpa/sherpa-orchestrator/ustanovka-sherpa-orchestrator/s-ispolzovaniem-docker/process-ustanovki-sherpa-orchestrator.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
