2024-12-26 13:29:57 +11:00
2024-12-26 13:29:57 +11:00
2024-12-25 21:34:02 +11:00
2024-12-25 18:59:37 +11:00
2024-12-18 23:59:11 +11:00
2024-12-26 13:01:44 +11:00
2024-12-25 23:56:35 +11:00

photonglass

A modern, distributed looking glass application that provides network insight for network operators.

See it live

https://photonglass.dev

Features

  • Multi Device Support: Connect to multiple devices from one single interface.
  • Easy Deployment: Extremely easy to deploy and scale with multiple devices.
  • Webhook Logging: Log queries to a webhook channel (optional).
  • Rate Limiting: Reduce service abuse by rate limiting users, 100 per day and 10 per minute.

Setup (Docker)

  1. Clone repository
    • git clone https://github.com/AliMickey/photonglass.git
  2. Create an instance folder to store your config and logos/favicon
    • cd photonglass
    • mkdir instance
    • mkdir instance/images
  3. Create config files and upload logos/favicon (follow config template below)
  4. Create docker-compose.yml (follow template below)
  5. Build and deploy the container (inital build may take a minute)
    • docker compose up -d --build
  6. View the app at http://IP_ADDRESS:5000, recommend using a reverse proxy (traefik) for production use.

Configuration

docker-compose.yml

services:
  photonglass:
    container_name: photonglass
    restart: unless-stopped
    build: .
    ports:
      - 5000:5000
    volumes:
      - ./instance:/instance
#      - ./instance/images:/app/static/images # Commented out by default to use default logos

instance/config.yaml

header:
  title: "photonglass"
  logo_href: "#"

footer:
  text: "photonglass"
  peeringdb_href: "https://www.peeringdb.com"
  github_href: "https://github.com/alimickey"

webhook:
  url: "https://hooks.slack.com/###"

instance/commands.yaml

ping:
  display_name: "Ping"
  format: "ping -{ip_version} -c 4 {target}"
  description: "Test network connectivity"
  field:
    type: "text"
    placeholder: "Enter IP address or hostname"

traceroute:
  display_name: "Traceroute"
  format: "traceroute -{ip_version} {target}"
  description: "Trace network path to destination"
  field:
    type: "text"
    placeholder: "Enter IP address or hostname"

mtr:
  display_name: "MTR"
  format: "mtr -{ip_version} -r {target}"
  description: "Trace network path with stats"
  field:
    type: "text"
    placeholder: "Enter IP address or hostname"

instance/devices.yaml

sydney1:
  display_name: "Sydney"
  subtext: "Equinix SY3"
  country_code: "AU"
  type: "linux"
  host: "IP_ADDRESS"
  port: PORT
  username: "USERNAME"
  password: "PASSWORD"
  commands:
    - ping
    - traceroute
    - mtr

Attribution

This project was inspired by hyperglass after having difficulty deploying it as well as being overkill for what I wanted. This project is not meant as a 1:1 replacement with hyperglass and as such is kept simple by design. At time of release only Linux servers were tested as a target device, the same device library as hyperglass is used (netmiko) so compatibility with more devices should not be an issue, just be aware it is untested.

Description
A modern, simple, distributed looking glass application that provides network insight for network operators.
Readme GPL-3.0 156 KiB
v1.0.1 Latest
2024-12-28 11:57:31 +08:00
Languages
HTML 61%
Python 19.6%
JavaScript 17.1%
Dockerfile 2.2%
CSS 0.1%