# InfraNet Pro — Docker (default: HOST networking → discovery completa) # Avvio: docker compose up -d --build → http://: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://: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 :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 (→ :8421). # Per limitarlo a un solo indirizzo: HOST=127.0.0.1 (solo loopback host) oppure 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: