[comment]: # ({af2eaf2f-af2eaf2f})
# 3 Instalación desde el código fuente

Es posible obtener la versión más reciente de Zabbix si realizamos la compilación desde el
código fuente.

Aquí puede encontrar un tutorial paso a paso de cómo realizar la instalación de 
Zabbix desde el código fuente.

[comment]: # ({/af2eaf2f-af2eaf2f})

[comment]: # ({a81f3302-0040d992})
#### Instalación de los demonios de Zabbix

[comment]: # ({/a81f3302-0040d992})

[comment]: # ({2e98ce22-8cc2c1b1})
##### 1 Descargar el archivo fuente

Vaya a la [página de descargas de Zabbix](http://www.zabbix.com/download_sources#70LTS)
y descargue el archivo fuente. Una vez descargado, extraiga las fuentes
ejecutando:

    tar -zxvf zabbix-7.0.0.tar.gz

::: notetip
Introduzca la versión correcta de Zabbix en el comando. Debe
coincidir con el nombre del archivo descargado.
:::

[comment]: # ({/2e98ce22-8cc2c1b1})

[comment]: # ({65663a59-87e1101d})
##### 2 Crear cuenta de usuario

Todos los procesos demonio de Zabbix se ejecutan bajo usuarios del sistema sin privilegios.
Si un demonio de Zabbix se inicia desde una cuenta de usuario sin privilegios, continuará ejecutándose como ese usuario.

En la configuración predeterminada, si un demonio se inicia como `root`, cambiará a la cuenta de usuario `zabbix`, que debe estar presente.
Para crear un usuario y grupo de sistema `zabbix`, ejecute los comandos que se indican a continuación.

Sistema basado en RedHat:

    groupadd --system zabbix
    useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Sistema basado en Debian:

    addgroup --system --quiet zabbix
    adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

No es necesario crear una cuenta de usuario separada para el frontend de Zabbix.

###### Recomendación de seguridad

Si el [servidor](/manual/concepts/server) y el [agente](/manual/concepts/agent) de Zabbix se ejecutan en la misma máquina, se recomienda ejecutarlos bajo **cuentas de usuario separadas**.
Ejecutar ambos como el mismo usuario permite que el agente acceda al archivo de configuración del servidor, lo que podría exponer información sensible—como la contraseña de la base de datos—a cualquier usuario con nivel de Administrador en Zabbix.

::: noteimportant
Ejecutar Zabbix como `root`, `bin` o cualquier otra cuenta con derechos especiales es un riesgo de seguridad.
:::

###### Directorio home (opcional)

Los procesos de Zabbix no requieren un directorio home, por lo que generalmente no se recomienda crearlo.
Sin embargo, si necesita funcionalidad que requiera un directorio home (por ejemplo, almacenar credenciales de MySQL en $HOME/.my.cnf), puede crearlo utilizando los comandos que se indican a continuación.

En sistemas basados en RedHat, ejecute:

    mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
    chown zabbix:zabbix /usr/lib/zabbix

En sistemas basados en Debian, ejecute:

    mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
    chown zabbix:zabbix /var/lib/zabbix

[comment]: # ({/65663a59-87e1101d})

[comment]: # ({06256db0-06256db0})
##### 3 Crear la base de datos de Zabbix

Es necesario tener una base de datos para los demonios Zabbix [server](/manual/concepts/server) y 
[proxy](/manual/concepts/proxy), así como para el Zabbix Frontend. La base de datos no es 
necesaria para ejecutar el Zabbix [agent](/manual/concepts/agent).

[Aquí puedes encontrar los scripts SQL](/manual/appendix/install/db_scripts) para crear 
el esquema de la base de datos, así como insertar el conjunto de datos. La base de 
datos para el Zabbix proxy necesita solo el esquema mientras que la base de datos para 
el Zabbix server requiere también contar con el conjunto de datos encima del esquema.

Una vez creada la base de datos de Zabbix, proceda con los siguientes pasos 
para poder compilar Zabbix.

[comment]: # ({/06256db0-06256db0})

[comment]: # ({ecd76a0a-8ff1b41c})
##### 4 Configurar las fuentes

Se requiere C99 con extensiones GNU para compilar Zabbix server, Zabbix proxy o Zabbix agent.
Esta versión puede especificarse explícitamente estableciendo CFLAGS="-std=gnu99":

    export CFLAGS="-std=gnu99"

::: noteclassic
Si se instala desde el [repositorio Git de Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
es necesario ejecutar primero:

`./bootstrap.sh`
:::

Al configurar las fuentes para un Zabbix server o proxy, debe
especificar el tipo de base de datos que se utilizará. Solo un tipo de base de datos puede
compilarse con un proceso server o proxy a la vez.

Para ver todas las opciones de configuración compatibles, dentro del
directorio de código fuente extraído de Zabbix ejecute:

    ./configure --help

Para configurar las fuentes para un Zabbix server y agent, puede ejecutar
algo como:

    ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Para configurar las fuentes para un Zabbix server (con PostgreSQL, etc.), puede
ejecutar:

    ./configure --enable-server --with-postgresql --with-net-snmp

Para configurar las fuentes para un Zabbix proxy (con SQLite, etc.), puede
ejecutar:

    ./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Para configurar las fuentes para un Zabbix agent, puede ejecutar:

    ./configure --enable-agent

o, para Zabbix agent 2:

    ./configure --enable-agent2

::: noteclassic
Debe estar instalada una [versión compatible de Go](/manual/installation/requirements#agent-2) para compilar Zabbix agent 2.
:::

Notas sobre las opciones de compilación:

-   `--enable-agent` - compila Zabbix agent, así como las utilidades de línea de comandos [Zabbix get](/manual/concepts/get) y [Zabbix sender](/manual/concepts/sender).
-   `--with-libcurl` - requerido para la monitorización de máquinas virtuales, la autenticación SMTP y los [items de Zabbix agent](/manual/config/items/itemtypes/zabbix_agent) `web.page.*`. Véase también: [Requisitos](/manual/installation/requirements#serverproxy) (libcurl).
-   `--with-libxml2` - requerido para la monitorización de máquinas virtuales.
-   `--with-libpcre[=DIR]` - Zabbix siempre se compila con la biblioteca PCRE; esta opción solo permite especificar una ruta de instalación personalizada de PCRE.
-   `--with-mysql=/path/to/mysql_config` - especifica la ruta a una configuración concreta de la biblioteca cliente MySQL. Es útil cuando hay instaladas varias versiones de MySQL o MariaDB.
-   `--with-oracle` - especifica la ubicación de la API Oracle Call Interface (OCI).
-   `--enable-static` - enlaza bibliotecas estáticamente (no compatible con [Solaris](https://docs.oracle.com/cd/E18659_01/html/821-1383/bkajp.html)). Úselo si planea distribuir binarios compilados a sistemas sin las bibliotecas requeridas. No se recomienda al compilar Zabbix server. Para compilar el server de forma estática, se requiere una versión estática de cada biblioteca externa. El script configure no comprueba esto automáticamente.
-   `--with-stacksize=<value>` - establece el tamaño de pila por hilo en kilobytes (por ejemplo, `--with-stacksize=512`). Puede aumentar este valor si Zabbix falla o se bloquea debido a desbordamientos de pila (por ejemplo, durante el [preprocesamiento](/manual/config/items/preprocessing) en sistemas con límites predeterminados bajos para la pila de hilos).

::: noteimportant
Si `./configure` falla debido a bibliotecas faltantes u otros problemas, consulte el archivo `config.log` para obtener información detallada sobre el error.

Por ejemplo, si falta `libssl`, el mensaje de error inmediato puede ser engañoso:

    checking for main in -lmysqlclient... no
    configure: error: Not found mysqlclient library

En este caso, `config.log` revela la causa real:

    /usr/bin/ld: cannot find -lssl
    /usr/bin/ld: cannot find -lcrypto

:::

Véase también:

-   [Compilar Zabbix con soporte de cifrado](/manual/encryption#compiling-zabbix-with-encryption-support)
-   Problemas conocidos de [compilación](/manual/installation/known_issues/compilation_issues)

[comment]: # ({/ecd76a0a-8ff1b41c})

[comment]: # ({1d0f465e-08edd3dc})
##### 5 Compilar e instalar todo

::: noteclassic
Si se instala desde el [repositorio Git de Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse),
es necesario ejecutar primero:

`$ make dbschema` 
:::

    make install

Este paso debe ejecutarse como un usuario con permisos suficientes (comúnmente
'root', o usando `sudo`).

Al ejecutar `make install`, por defecto se instalarán los binarios de los demonios
(zabbix\_server, zabbix\_agentd, zabbix\_proxy) en /usr/local/sbin y
los binarios de cliente (zabbix\_get, zabbix\_sender) en /usr/local/bin.

::: noteclassic
Para especificar una ubicación diferente a /usr/local, utilice la
clave --prefix en el paso anterior de configuración de fuentes, por ejemplo
--prefix=/home/zabbix. En este caso, los binarios de los demonios se instalarán
en <prefix>/sbin, mientras que las utilidades en <prefix>/bin. Las páginas de manual
se instalarán en <prefix>/share.
:::

[comment]: # ({/1d0f465e-08edd3dc})

[comment]: # ({f36d53db-112b74f7})
##### 6 Revisar y editar archivos de configuración

-   editar el archivo de configuración del Zabbix agent
    **/usr/local/etc/zabbix\_agentd.conf**

Es necesario configurar este archivo en cada equipo con zabbix\_agentd instalado.

De la misma forma es necesario especificar la **dirección IP ** del servidor Zabbix en el archivo.
Todas las conexiones desde otros equipos serán rechazadas.

-   editar el archivo de configuración del servidor Zabbix
    **/usr/local/etc/zabbix\_server.conf**

Se requiere especificar el nombre de la base de datos, así como el usuario y contraseña (en caso de ser necesario)

El resto de los parámetros por defecto se ajustarán a sus necesidades en caso de
tener una instalación pequeña (hasta diez equipos monitoreados). Sin embargo es necesario
cambiar los parámetros por defecto si requiere mejorar el desempeño del servidor Zabbix 
(o proxy). Para más detalles consulte la sección de [ajustes de desempeño](/manual/appendix/performance_tuning).

-   si ha instalado el proxy Zabbix, edite el archivo de configuración 
    **/usr/local/etc/zabbix\_proxy.conf**

Se requiere especificar la dirección IP del servidor y el nombre de equipo del proxy (debe ser reconocido 
por el servidor), así como el nombre de la base de datos, el usuario y contraseña (en caso de 
ser necesario).

::: noteclassic
Usando SQLite es necesario especificar la ubicación completa del archivo de la base 
de datos; usuario DB y contraseña no son requeridos.
:::

[comment]: # ({/f36d53db-112b74f7})

[comment]: # ({67632a65-bbdd82ac})
##### 7 Iniciar los demonios

Ejecute zabbix\_server en el lado del servidor.

    zabbix_server

::: noteclassic
Asegúrese de que su sistema permita la asignación de 36 MB (o un poco más) de memoria compartida, de lo contrario el servidor puede no iniciarse y verá "Cannot allocate shared memory for <type of cache>." en el archivo de registro del servidor. Esto puede ocurrir en FreeBSD, Solaris 8.
:::

Ejecute zabbix\_agentd en todas las máquinas monitorizadas.

    zabbix_agentd

::: noteclassic
Asegúrese de que su sistema permita la asignación de 2 MB de memoria compartida, de lo contrario el agent puede no iniciarse y verá "Cannot allocate shared memory for collector." en el archivo de registro del agent. Esto puede ocurrir en Solaris 8.
:::

Si ha instalado Zabbix proxy, ejecute zabbix\_proxy.

    zabbix_proxy

[comment]: # ({/67632a65-bbdd82ac})

[comment]: # ({8d29e485-c9f154ca})
#### Instalación de la interfaz web de Zabbix

[comment]: # ({/8d29e485-c9f154ca})

[comment]: # ({7ed89806-ed4e56ce})
##### Copiando archivos PHP

La interfaz de Zabbix está escrita en PHP, por lo que para ejecutarla se necesita un servidor web compatible con PHP.
La instalación se realiza simplemente copiando los archivos PHP del directorio ui al directorio de documentos HTML del servidor web.

Las ubicaciones comunes de los directorios de documentos HTML para servidores web Apache incluyen:

-   /usr/local/apache2/htdocs (directorio por defecto al instalar Apache desde el código fuente)
-   /srv/www/htdocs (OpenSUSE, SLES)
-   /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Se sugiere utilizar un subdirectorio en lugar de la raíz HTML.
Para crear un subdirectorio y copiar los archivos de la interfaz de Zabbix en él, ejecute los siguientes comandos, reemplazando <htdocs> por el directorio real:

    mkdir <htdocs>/zabbix
    cd ui
    cp -a . <htdocs>/zabbix

Si planea utilizar cualquier otro idioma que no sea inglés, consulte [Instalación de idiomas adicionales para la interfaz](/manual/appendix/install/locales) para obtener instrucciones.

[comment]: # ({/7ed89806-ed4e56ce})

[comment]: # ({ae1b267f-63583cbb})
##### Instalación del frontend

Consulte la página [Instalación de la interfaz web](/manual/installation/frontend) para obtener información sobre el asistente de instalación del frontend de Zabbix.

[comment]: # ({/ae1b267f-63583cbb})

[comment]: # ({8751cf7f-5ea0c792})
#### Instalación de plugins cargables de Zabbix agent 2

La instalación de plugins cargables de Zabbix agent 2 solo es necesaria si desea monitorizar objetivos no cubiertos por los plugins integrados (por ejemplo, servidores o clústeres de MongoDB, PostgreSQL y sus derivados, etc.).
Consulte la lista completa de [plugins cargables](/manual/extensions/plugins#loadable-plugins) y [plugins integrados](/manual/extensions/plugins#built-in-plugins).

::: noteimportant
Antes de instalar un plugin, consulte su archivo README.
Puede contener requisitos específicos e instrucciones de instalación.
:::

Para instalar desde las fuentes, primero [descargue](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) y extraiga el archivo de fuentes del plugin cargable.

Para compilar el plugin, navegue al directorio extraído del plugin y ejecute `make`:

    make

::: noteclassic
Debe instalarse una [versión compatible de Go](/manual/installation/requirements#agent-2) para compilar los plugins cargables de Zabbix agent 2.
:::

El ejecutable del plugin puede colocarse en cualquier lugar siempre que sea cargable por Zabbix agent 2.
Especifique la ruta al binario del plugin en el archivo de configuración del plugin, por ejemplo, en postgresql.conf para el plugin [PostgreSQL](/manual/appendix/config/zabbix_agent2_plugins/postgresql_plugin):

    Plugins.PostgreSQL.System.Path=/ruta/al/ejecutable/zabbix-agent2-plugin-postgresql

La ruta al archivo de configuración del plugin debe especificarse en el parámetro Include del archivo de configuración de Zabbix agent 2:

    Include=/ruta/al/archivo/de/configuración/del/plugin/postgresql.conf

Consulte la sección de [configuración](/manual/extensions/plugins#configuring-plugins) para más detalles sobre la configuración de plugins.

Los plugins cargables proporcionados por Zabbix utilizan makefiles simples con los siguientes objetivos de compilación:

-   `make` - compila el plugin
-   `make clean` - elimina todos los archivos creados al compilar el plugin
-   `make check` - ejecuta auto-pruebas (requiere un objetivo de monitorización real, por ejemplo, una base de datos PostgreSQL)
-   `make style` - comprueba el estilo del código Go con `golangci-lint`
-   `make format` - formatea el código Go con `go fmt`
-   `make dist` - crea un archivo de fuentes que incluye todas las dependencias

[comment]: # ({/8751cf7f-5ea0c792})

[comment]: # ({3c8ef27d-1a519c06})
#### Instalación de Java gateway

Es necesario instalar Java gateway solo si desea monitorizar aplicaciones
JMX. Java gateway es ligero y no requiere una base de datos.

Para instalar desde el código fuente, primero
[descargue](/manual/installation/install#download-the-source-archive) y
extraiga el archivo fuente.

Para compilar Java gateway, ejecute el script `./configure` con la
opción `--enable-java`. Se recomienda especificar la opción `--prefix`
para indicar una ruta de instalación distinta de la predeterminada /usr/local,
ya que la instalación de Java gateway creará un árbol de directorios completo,
no solo un único ejecutable.

    ./configure --enable-java --prefix=$PREFIX

Para compilar y empaquetar Java gateway en un archivo JAR, ejecute `make`.
Tenga en cuenta que para este paso necesitará los ejecutables `javac` y `jar`
en su ruta.

    make

Ahora tiene un archivo zabbix-java-gateway-$VERSION.jar en
src/zabbix\_java/bin. Si le resulta cómodo ejecutar Java gateway desde
src/zabbix\_java en el directorio de distribución, puede continuar con
las instrucciones para configurar y ejecutar [Java
gateway](/manual/java/from_sources#overview-of-files).
De lo contrario, asegúrese de tener privilegios suficientes y ejecute `make install`.

    make install

Continúe con la [configuración](/manual/concepts/java/from_sources) para obtener más detalles
sobre cómo configurar y ejecutar Java gateway.

[comment]: # ({/3c8ef27d-1a519c06})

[comment]: # ({a056dfd8-76c01064})
#### Instalación del servicio web de Zabbix

La instalación del servicio web de Zabbix solo es necesaria si desea utilizar los [informes programados](/manual/web_interface/frontend_sections/reports/scheduled).

Para instalar desde el código fuente, primero [descargue](/manual/installation/install#download-the-source-archive) y extraiga el archivo fuente.

Para compilar el servicio web de Zabbix, ejecute el script `./configure` con la opción `--enable-webservice`.

::: noteclassic
Debe estar instalada una [versión de Go compatible](/manual/installation/requirements#agent-2) para compilar el servicio web de Zabbix.
:::

Ejecute zabbix\_web\_service en la máquina donde está instalado el servicio web:

    zabbix_web_service

Continúe con la [configuración](/manual/appendix/install/web_service) para obtener más detalles sobre cómo configurar la generación de informes programados.

[comment]: # ({/a056dfd8-76c01064})

