Sign inSign up

certyiknofetch/subnetra

By certyiknofetch

Updated 6 months ago

Image
0

1.2K

certyiknofetch/subnetra repository overview

🌐 Subnet Manager

A self-hosted subnet and network management web application — built with Rust + SQLite, packaged as a single zero-dependency Docker image.

Manage your IP subnets, plan VLSM allocations, inject Docker Compose networks with static IPs, and keep a full audit log — all from a clean dark-mode UI.


✨ Features

  • Subnet Dashboard — Create, search, tag, and manage IPv4 subnets with CIDR, VLAN, and description support
  • IP Allocation Tracking — Allocate and release IPs within any subnet, track usage percentage
  • VLSM Planner — Divide a base network into variable-length subnets based on host requirements, auto-skip occupied ranges
  • What-If Simulation — Compare multiple subnet split scenarios side-by-side before committing
  • Compose Network Tool — Paste any docker-compose.yml and inject a subnet with static IPs per service
    • Auto-detects external networks, network_mode conflicts, existing static IPs
    • Merge or replace mode — preserves existing networks
    • Per-service custom IP input fields
    • Full YAML auto-correction (tabs, indentation, invisible chars, typos)
  • Compose Health Analysis — Scores your compose file 0–100 across Configuration, Security, Best Practices, and Networking (30+ checks)
  • Subnet Tree — Visual hierarchy of parent/child subnet relationships
  • Audit Log — Every create, update, and delete action is recorded with timestamps
  • Email-based Auth — Single admin account with email + password login, session tokens, rate-limited login
  • Import / Export — CSV and JSON export of all subnets

🚀 Quick Start

docker run -d \
  --name subnet-manager \
  -p 8080:8080 \
  -v subnet_data:/data \
  certyiknofetch/subnetra:latest

Then open http://localhost:8080 — you will be prompted to create your admin account on first launch.


🐙 Docker Compose

services:
  subnet-manager:
    image: certyiknofetch/subnetra:latest
    container_name: subnet-manager
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - subnet_data:/data
    environment:
      DATABASE_URL: sqlite:/data/subnets.db
      HOST: 0.0.0.0
      PORT: "8080"
      ALLOWED_ORIGINS: "*"

volumes:
  subnet_data:

⚙️ Environment Variables

VariableDefaultDescription
DATABASE_URLsqlite:/data/subnets.dbSQLite database path
HOST0.0.0.0Bind address
PORT8080HTTP port
ALLOWED_ORIGINS*CORS allowed origins (comma-separated)
RUST_LOGsubnet_manager=infoLog level

🔒 Security

  • Runs as non-root user (uid=65532) inside a distroless container
  • All passwords hashed with PBKDF2-SHA256
  • Single admin account — no multi-user exposure

💾 Data Persistence

All data is stored in a single SQLite file at /data/subnets.db. Mount a named volume or host path to persist across container restarts.

# Backup
docker cp subnet-manager:/data/subnets.db ./subnets-backup.db

# Restore
docker cp ./subnets-backup.db subnet-manager:/data/subnets.db

🏗️ Architecture

  • Platformslinux/amd64, linux/arm64

📦 Tags

TagDescription
latestLatest stable release
1.0Initial release

🔗 Source

github.com/certyiknofetch/subnetra

Tag summary

Content type

Image

Digest

sha256:2d31b4838

Size

4 MB

Last updated

6 months ago

docker pull certyiknofetch/subnetra