docker-compose.yml
Rama main · réplica de lectura del repositorio original.
# InfraNet Pro — Docker (default: HOST networking → discovery completa)
# Avvio: docker compose up -d --build → http://<IP-host>:8421
# Log: docker compose logs infranetpro (password admin del primo avvio qui)
# Stop: docker compose down
#
# Prima del primo avvio: copia .env.example in .env e imposta SESSION_SECRET.
#
# Usa network_mode: host così il container si comporta come l'app installata nativamente:
# • discovery COMPLETA della LAN — vede la tabella ARP reale → MAC dei device → vendor (OUI),
# oltre a SNMP e LLDP/CDP. È lo scopo del prodotto.
# • raggiungibile su http://<IP-host>:8421 (il server fa bind secondo HOST, default 0.0.0.0).
# ⚠️ Sicurezza: la UI (protetta da login) è esposta sulle interfacce dell'host. Tienila su una rete
# fidata; per l'accesso da fuori usa VPN o reverse-proxy con TLS. NON esporla direttamente a internet.
# ⚠️ Richiede un host Linux. Su Docker Desktop (macOS/Windows) host mode è limitato → per quei casi,
# o per un'istanza isolata dietro reverse-proxy, usa docker-compose.bridge.yml.
services:
infranetpro:
build: .
image: infranetpro:latest
container_name: infranetpro
restart: unless-stopped
# Rete dell'host: dà al container la visibilità L2/ARP reale (→ MAC/vendor) e lo rende
# raggiungibile su <IP-host>:8421. È ciò che fa funzionare la discovery come bare-metal.
network_mode: host
environment:
# OBBLIGATORIO: senza un secret fisso le sessioni si invalidano a ogni re-create del container.
# Genera: openssl rand -base64 48
SESSION_SECRET: "${SESSION_SECRET:?Imposta SESSION_SECRET — copia .env.example in .env}"
# Interfaccia di bind del server. Default 0.0.0.0 = tutte le interfacce host (→ <IP-host>:8421).
# Per limitarlo a un solo indirizzo: HOST=127.0.0.1 (solo loopback host) oppure HOST=<IP-host>.
HOST: "${HOST:-0.0.0.0}"
volumes:
# Dati persistenti (progetti, skin, account utenti). Conservali per non perdere i dati.
- infranet_data:/data
# ICMP ping non privilegiato per lo scanner.
cap_add:
- NET_RAW
volumes:
infranet_data: