Docker
Ejecuta el agente InfraFence como un contenedor Docker que protege su host - la imagen, los privilegios y montajes necesarios, y todas las variables de entorno.
Última actualización:
El agente también funciona como un contenedor que protege su host. La imagen es multiarquitectura (amd64 y arm64), se publica con cada versión y está firmada con cosign.
ghcr.io/infrafence/infrafence-agent:latest, o una etiqueta de versión comoghcr.io/infrafence/infrafence-agent:<version>- la misma imagen en Docker Hub como
infrafence/infrafence-agent
docker run
docker run -d --name infrafence-agent --restart unless-stopped \
--privileged --network host --pid host \
-v /var/log:/var/log:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v infrafence-config:/etc/infrafence \
-e INFRAFENCE_TOKEN=<YOUR_TOKEN> \
ghcr.io/infrafence/infrafence-agent:latestPor qué hace falta cada parte:
--privileged,--network host: el agente gestiona el firewall del host (iptables e ipset) y lee el estado de red del host.--pid host: ve los procesos del host, para la detección de procesos maliciosos y la atribución de DNS./var/logen solo lectura: los logs que analiza.- el socket de Docker en solo lectura: para encontrar los contenedores cuyos puertos y logs debe proteger.
/etc/infrafenceen un volumen con nombre: el registro sobrevive a las actualizaciones del contenedor. El token se usa una sola vez; los arranques posteriores reutilizan el registro guardado.
Variables de entorno
| Variable | Predeterminado | Efecto |
|---|---|---|
INFRAFENCE_TOKEN |
El token de instalación, para el primer registro. | |
INFRAFENCE_TOKEN_FILE |
Un archivo que contiene el token, para los secretos de Docker. | |
INFRAFENCE_AGENT_NAME |
el nombre de host corto | El nombre en el panel. |
INFRAFENCE_SERVER_URL |
https://infrafence.com |
El panel en el que registrarse. |
Cualquiera de las variables propias del agente (consulta Configuración), como WEB_LOG_PATH, también se puede pasar con -e.
Sin un token, un archivo de token o una clave de clúster en el primer arranque, el contenedor se detiene con [infrafence] ERROR: No credentials provided for registration.
Docker Compose
Cada host necesita su propio token de instalación, como cualquier otro servidor.
services:
infrafence-agent:
image: ghcr.io/infrafence/infrafence-agent:latest
container_name: infrafence-agent
restart: unless-stopped
privileged: true
network_mode: host
pid: host
environment:
- INFRAFENCE_TOKEN=${INFRAFENCE_TOKEN}
volumes:
- /var/log:/var/log:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- infrafence-config:/etc/infrafence
volumes:
infrafence-config:INFRAFENCE_TOKEN=<YOUR_TOKEN> docker compose up -dContenedores en el host
En un host donde funciona Docker, el agente también salta a su cadena de firewall desde DOCKER-USER, así que los bloqueos cubren también los puertos que publican tus contenedores. Un agente instalado con install.sh en el host también encuentra los logs de acceso de los contenedores web (imágenes de nginx, Apache y OpenResty; para Traefik y Caddy, ver más abajo) y lee estas etiquetas de tus contenedores:
| Etiqueta | Efecto |
|---|---|
infrafence.monitor |
true para vigilar siempre los logs del contenedor, false para omitirlo. |
infrafence.log-path |
Rutas del host de sus logs de acceso, separadas por comas. |
infrafence.domain |
Sus dominios, separados por comas. |
El descubrimiento de contenedores usa la herramienta de línea de comandos docker, que la imagen del agente no contiene: dentro del contenedor, indica al agente los logs con WEB_LOG_PATH.
Dominios detrás de un proxy inverso
Desde el agente 1.0.35, el agente también lista los dominios de tus contenedores en ejecución a partir de las etiquetas que lee su proxy inverso, mediante el socket de Docker o Podman (solo lectura, actualizados cada 2 minutos, también dentro del contenedor del agente):
- Reglas de router de Traefik,
traefik.http.routers.<nombre>.rule: cadaHost(...)de la regla.HostRegexpy las reglas de ruta se omiten. - Direcciones de sitio de Caddy,
caddyycaddy_0,caddy_1... infrafence.domain.
Es lo que Coolify escribe para su proxy (coolify-proxy, Traefik o Caddy), así que un servidor Coolify no necesita ninguna etiqueta. Los dominios aparecen en Supervisión › Distintivo de monitorización, donde se verifican con un registro DNS TXT, porque el sitio no tiene raíz de documentos en el host: consulta Distintivo de monitorización. El agente nunca ejecuta nada en el contenedor del proxy; no lee los logs de acceso JSON de Traefik ni de Caddy.
Otros comandos
La imagen ejecuta cualquier comando del agente que le pases, por ejemplo la comprobación de solo lectura:
docker run --rm --privileged --network host --pid host ghcr.io/infrafence/infrafence-agent:latest preflight