# Instalar el agente en Linux

## Para qué sirve

El agente es un programa chico que corre en tu servidor y le manda a Lymen sus métricas (uso de CPU, memoria, disco y red), los logs del sistema y los datos de las aplicaciones. Lo ves en **Infraestructura**. Se instala con una sola línea.

## Requisitos

- Linux con **systemd**, arquitectura amd64 (x86_64) o arm64 (aarch64).
- Pensado para Ubuntu 22.04 y 24.04, Debian 12 y RHEL 9.
- Permisos de administrador (`sudo`).
- Los comandos `curl`, `tar`, `sha256sum`, `mktemp`, `sed`, `uname` y `useradd`.
- Salida a internet hacia Lymen **o** un [gateway](https://lymen.app/docs/instalacion/gateways/) de tu red que sí la tenga.
- El paquete de monitoreo en detalle de aplicaciones es solo para sistemas con **glibc**: en Alpine (musl) no se instala.

> El instalador de Linux se probó en un contenedor con un `systemctl` simulado. No se probó todavía en un servidor real: hacé la primera instalación en un equipo no crítico.

## Cuándo usarlo

Cada vez que quieras sumar un servidor Linux a Lymen. Para Windows, mirá [Instalar el agente en Windows](https://lymen.app/docs/instalacion/agente-windows/).

## Paso a paso

1. En el portal, andá a **Agregar datos › Agregar servidor** (ver [Agregar datos](https://lymen.app/docs/instalacion/agregar-datos/)).
2. Elegí, si corresponde, gateways y grupo, y tocá **Generar comando**.
3. Copiá el comando de la pestaña **Linux**.
4. (Recomendado) Antes de instalar, agregale `--verificar` para comprobar el servidor y las opciones sin registrar nada. No hace falta ser root.
5. Pegalo en una consola del servidor. Tarda un minuto.
6. Mirá **Infraestructura**: en 1-2 minutos el servidor aparece como *Conectado*.

### Verificar sin instalar

```sh
curl -fsSL https://<tu-cuenta>-ingesta.lymen.app/agente/instalar.sh \
  | LYMEN_INGESTA=<tu-cuenta>-ingesta.lymen.app sh -s -- --verificar --gateway 10.0.0.5:4390
```

Muestra el servidor, la arquitectura, el tipo de librería de C, el grupo y los gateways, y termina diciendo "no se registró ni se instaló nada". No gasta el código de un solo uso.

## Opciones del instalador

Cada opción se puede pasar como argumento o como variable de entorno. El portal arma el comando completo: normalmente no las escribís a mano.

| Opción | Variable de entorno | Para qué sirve | Por defecto | Valores válidos | Impacto |
|---|---|---|---|---|---|
| `--codigo X` | `LYMEN_ENROLAR` | Código de un solo uso que da de alta el servidor. | — (obligatorio, salvo con `--verificar`) | Letras, números, `_` y `-`. | Vence a las 24 horas y se gasta al usarlo. No lo compartas ni lo dejes en un historial de comandos compartido. |
| `--ingesta X` | `LYMEN_INGESTA` | Dirección de Lymen a la que se conecta el servidor. | — (obligatorio) | Host o host:puerto, por ejemplo `<tu-cuenta>-ingesta.lymen.app`. | Si está mal, el servidor no se registra. |
| `--gateway X` | `LYMEN_GATEWAY` | Gateway por donde sale el servidor. Se repite para armar una lista en orden (por entorno, separados por coma). | Ninguno: sale directo. | Hasta 5, sin repetidos. Solo letras, números, `.`, `:`, `[`, `]` y `-`. | Con gateways, el servidor puede no tener salida a internet: instala y manda todo por el primero que responda y, si cae, pasa al siguiente. Si todos fallan, la instalación termina con error. |
| `--gateway-huella G=H` | `LYMEN_GATEWAY_HUELLA` | Huella del certificado propio de un gateway (`gateway=sha256//<base64>`). Se repite. La reparte el portal en el comando. | Sin huella: se verifica con las autoridades de confianza del sistema. | `sha256//` + 44 caracteres base64, o 64 caracteres hexadecimales. | **Seguridad.** Con huella, el servidor solo acepta *ese* certificado: protege contra que alguien se haga pasar por el gateway. Copiá siempre el comando completo del portal. |
| `--gateway-tls` | — | Habla con los gateways por https. | Activo. | — | Es el comportamiento normal. |
| `--gateway-sin-tls` | `LYMEN_GATEWAY_SIN_TLS=si` | Habla con los gateways por http, **sin cifrar**. | Apagado. | `si`, `true` o `1` por entorno. | **Seguridad.** El token y los datos viajan en claro por tu red. Un aviso lo marca en el instalador y en el portal. Solo si el gateway no puede tener certificado. |
| `--grupo X` | `LYMEN_GRUPO` | Grupo de servidores. | Sin grupo. | Un solo valor, hasta 60 caracteres, sin comas, comillas, barra invertida, `$` ni acento grave. | Si el grupo no existe, se crea. Define la política de actualización y la etiqueta `grupo` de filtros y reglas. |
| `--verificar` | — | Revisa el servidor y las opciones y termina. | Apagado. | — | No registra ni instala nada; no gasta el código. |
| — | `LYMEN_INSTRUMENTAR=si` | Además del agente, instala el paquete de monitoreo en detalle de aplicaciones. | `no` | `si` | Solo deja el programa instalado: **no toca ninguna aplicación** hasta que lo actives desde el portal. Ver [Instrumentación](https://lymen.app/docs/instalacion/instrumentacion-aplicaciones/). Si falla, el agente queda instalado igual. |

Si pasás una opción que no existe, el instalador se detiene con "opción desconocida".

## Qué hace el instalador

1. **Revisa todo antes de gastar el código**: que seas root, los comandos necesarios, systemd, la arquitectura y las opciones.
2. **Registra el servidor**: canjea el código por una credencial propia de este servidor. Prueba primero llegar directo a Lymen; si no puede, usa el primer gateway de la lista que responda.
3. **Baja el paquete** de la versión publicada y comprueba su suma de verificación (SHA-256) antes de usarlo. Si no coincide, se corta.
4. **Escribe la configuración** en `/etc/lymen-agent`. El archivo con el token (`entorno`) queda legible solo por root.
5. **Crea el usuario** `lymen-agent` (sin shell ni carpeta personal) y el servicio `lymen-agent`.
6. **Arranca el servicio** y activa el actualizador automático y el inventario del servidor (procesos, servicios y conexiones).
7. Si el servidor es un gateway (tiene capa de gateway), crea la lista de chequeos internos permitidos y el archivo de equipos de red permitidos, vacíos. Ver [Gateways](https://lymen.app/docs/instalacion/gateways/) y [Equipos de red](https://lymen.app/docs/instalacion/equipos-de-red/).

### Dónde queda cada cosa

| Qué | Dónde |
|---|---|
| Programa y versiones | `/opt/lymen-agent` (la versión vigente está en `actual`) |
| Configuración | `/etc/lymen-agent` |
| Cola de datos, claves del gateway y estado | `/var/lib/lymen-agent` |
| Servicio | `lymen-agent` (unidad systemd) |

### Qué permisos tiene el servicio

El agente corre como el usuario `lymen-agent`, con dos permisos extra de solo lectura para ver los dueños de los sockets y las métricas de procesos de otros usuarios. Tiene un tope de 512 MB de memoria. Puede leer el diario del sistema (se suma al grupo `systemd-journal` si existe). Si el servidor tiene nginx con la página `/nginx_status` en la propia máquina, el instalador lo detecta y activa sus métricas.

## Ejemplos

Servidor común, directo a Lymen, en el grupo producción:

```sh
curl -fsSL https://<tu-cuenta>-ingesta.lymen.app/agente/instalar.sh \
  | sudo LYMEN_ENROLAR=<código> LYMEN_INGESTA=<tu-cuenta>-ingesta.lymen.app sh -s -- --grupo produccion
```

Servidor sin salida a internet, que usa dos gateways en orden (el portal agrega las huellas):

```sh
curl -fsSL https://<tu-cuenta>-ingesta.lymen.app/agente/instalar.sh \
  | sudo LYMEN_ENROLAR=<código> LYMEN_INGESTA=<tu-cuenta>-ingesta.lymen.app sh -s -- \
    --gateway 10.0.0.5:4390 --gateway 10.0.1.5:4390 \
    --gateway-huella 10.0.0.5:4390=sha256//<huella> --gateway-huella 10.0.1.5:4390=sha256//<huella>
```

Con monitoreo en detalle de aplicaciones:

```sh
curl -fsSL https://<tu-cuenta>-ingesta.lymen.app/agente/instalar.sh \
  | sudo LYMEN_ENROLAR=<código> LYMEN_INGESTA=<tu-cuenta>-ingesta.lymen.app LYMEN_INSTRUMENTAR=si sh -s --
```

## Problemas comunes

| Síntoma | Qué hacer |
|---|---|
| "hay que correrlo como root (sudo)" | Corré el comando con `sudo`. |
| "este servidor no usa systemd" | El instalador solo soporta systemd. Pedí soporte para tu sistema. |
| "falta el comando ..." | Instalá `curl`, `tar`, `sha256sum` y `useradd` (paquete `coreutils`/`shadow-utils`). |
| "no se pudo llegar a Lymen" | El servidor no tiene salida a internet. Usá `--gateway` con un gateway de tu red. |
| "no se pudo llegar a Lymen ni a ningún gateway" | Revisá que algún gateway esté encendido y alcanzable por su puerto desde este servidor. |
| "el código no es válido, ya se usó o venció" | Generá un código nuevo en el portal. |
| "el paquete bajado no coincide con el publicado" | La descarga se cortó o fue alterada. Quitá el servidor en el portal y reinstalá con un código nuevo. |
| Instalado, pero no aparece en el portal | Esperá 2 minutos. Después mirá `systemctl status lymen-agent` y `journalctl -u lymen-agent`. |
| El servidor figura con otro nombre | El nombre es el que informa el propio equipo (`uname -n`). Cambialo en el sistema y reinstalá. |

Para sacar el agente, mirá [Desinstalar](https://lymen.app/docs/instalacion/desinstalar/).
