
# Stupid Simple Network Inventory
**Self-hosted network inventory and logical topology visualisation**
[FranΓ§ais](README.fr.md) Β· [EspaΓ±ol](README.es.md)






[](LICENSE)
---

---
## β¨ Features
- ποΈ **Manual inventory** β add and manage devices (18 types) with IPs, VLANs, descriptions and optional web links
- πΊοΈ **Topology view** β card-based layout per network (LAN / VLAN 802.1Q), with WAN and gateway sections
- π‘ **ICMP ping sweep** β check reachability of all known hosts in one click
- π **Auto-discovery** β ping sweep + PTR DNS lookup on a subnet to import new hosts
- π·οΈ **Brand logos** β automatic detection and display of vendor logos (Proxmox, Cisco, Synology, Docker, 30+ more)
- π **Authentication** β JWT-based login with forced password change on first use
- π **Dark mode** β light / dark theme toggle
- π **i18n** β French, English, Spanish
## π οΈ Stack
| Layer | Technology |
|-------|-----------|
| Backend | FastAPI + SQLAlchemy + SQLite (Python 3.11) |
| Frontend | Vue 3 + Vite, served by Nginx |
| Auth | JWT HS256, 24-hour expiry |
| Runtime | Docker Compose |
---
## π Quick start
```bash
# 1. Clone and enter the project
git clone https://git.raspot.in/olivier/stupid-simple-network-inventory.git
cd stupid-simple-network-inventory
# 2. Create the data directory owned by the current user
mkdir -p db_data
# 3. Configure environment (required for correct bind-mount ownership)
cp .env.example .env
# Edit .env:
# DOCKER_UID / DOCKER_GID β output of: id -u && id -g
# INITIAL_ADMIN_PASSWORD β set to avoid the default admin/admin bootstrap
# 4. Build and start
docker compose --env-file .env up --build -d
# 5. Open http://localhost:8080 in your browser
```
### First login
| Case | Credentials | Behaviour |
|------|------------|-----------|
| `INITIAL_ADMIN_PASSWORD` set | `admin` / `