Skip to content

rohanpandula/findip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

findip

A self-hosted network discovery tool that scans your local network and identifies connected devices. Runs as a lightweight Docker container with a web interface powered by FastAPI.

findip dashboard

Why I Built This

I run a lot of containers on my home network and prefer giving each one a static IP. The annoying part was always figuring out which IPs were available — checking router tables, pinging addresses one by one, or just picking one and hoping it didn't collide with something else. I built findip so I could open one page, see every free address on the subnet, and pick one in seconds.

What It Does

findip continuously monitors your local network, discovering devices via IP scanning and mDNS (Avahi). It exposes the results through a clean web API so you can see what's on your network at a glance.

Key features:

  • Automatic network device discovery
  • mDNS/Avahi-based name resolution
  • Persistent scan state across restarts
  • Web API on port 80 (v1) and port 8080 (v2)
  • Designed for always-on home server deployments

Quick Start

Prerequisites

  • Docker and Docker Compose
  • The findip:v2 image built or imported on your host
  • A br0 bridge network configured in Docker

Run

git clone https://github.com/rohanpandula/findip.git
cd findip
docker compose up -d

The app will be available at http://<your-static-ip> (default: 10.0.0.69).

Project Structure

findip/
├── docker-compose.yml        # Container definition and networking
├── supervisord_fixed.conf    # Process manager config (app, avahi, dbus)
└── data/                     # Runtime state (gitignored)
    └── scan_state.json       # Persistent scan results

Architecture

The container runs three services managed by supervisord:

Service Purpose Port
app_v1 Original API (main:app) 80
app_v2 Updated API (main_v2:app) 8080
avahi mDNS discovery daemon
dbus System message bus (avahi dependency)

Networking

The container attaches to an external Docker bridge network (br0) with a static IP address. This allows it to sit directly on your LAN and perform accurate network scans.

To set up the br0 network on your Docker host:

docker network create \
  --driver=bridge \
  --subnet=10.0.0.0/24 \
  --gateway=10.0.0.1 \
  -o parent=eth0 \
  br0

Adjust the subnet, gateway, and parent interface to match your network.

Configuration

Environment Variable Description Default
STATE_FILE Path to the persistent scan state file /data/scan_state.json

License

MIT

About

A self-hosted network discovery tool that scans your local network and identifies connected devices. Runs as a lightweight Docker container with a web interface powered by FastAPI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors