vps/fleet

A self-hosted VPS fleet tracker with a dark GitHub-style UI, interactive map, and zero-config local storage.

Node.js Express License No Build Step


Features

  • Fleet overview — live stats for total servers, online / offline / maintenance counts, and total monthly spend
  • Server cards — glanceable cards showing name, IP, status dot, CPU / RAM / disk chips, and price
  • Add · Edit · Delete — modal form with full field set: provider, plan, specs, IPv4/IPv6, location, region, sites, notes
  • Interactive map — Leaflet.js world map; server locations are geocoded automatically via OpenStreetMap
  • Persistent storage — flat-file JSON, no database required
  • Dark theme — GitHub-flavored dark palette (#0d1117) with IBM Plex Mono / Sans typography
  • Single HTML file — no bundler, no framework, no build step

Requirements

Dependency Version
Node.js 18 or higher
npm included with Node

Installation

# 1. Clone the repo
git clone https://github.com/your-username/vps-manager.git
cd vps-manager

# 2. Install dependencies
npm install

# 3. Start the server
npm start

Then open http://localhost:8095 in your browser.

Windows: double-click start.bat instead of step 3.

Linux / macOS: run chmod +x start.sh && ./start.sh instead of step 3.


Usage

Adding a server

Click + Add Server in the top-right corner. Fill in any combination of fields — only the name is required. If you enter a location, coordinates are resolved automatically and a pin is placed on the map.

Editing a server

Click the pencil icon on any server card to reopen the form pre-filled with its data.

Deleting a server

Click the trash icon on a server card. The change is saved immediately.

Map view

The map tab shows all servers that have a resolvable location. Click any pin to see a summary popup.


API

The Express server exposes a simple REST API on port 8095.

Method Endpoint Description
GET /api/servers Return all servers
POST /api/servers Create or update a server (include id to update)
DELETE /api/servers/:id Delete a server by ID

Server object

{
  "id": "srv_1716825600000",
  "name": "web-01",
  "status": "online",
  "ipv4": "1.2.3.4",
  "ipv6": "",
  "provider": "Hetzner",
  "plan": "CX21",
  "cpu": "2 vCPU",
  "ram": "4 GB",
  "disk": "40 GB SSD",
  "price": "4.90",
  "location": "Nuremberg, Germany",
  "region": "eu-central",
  "sites": "example.com",
  "notes": "Primary web node"
}

Configuration

Variable Default Description
PORT 8095 Port the server listens on
PORT=3000 npm start

Project structure

vps-manager/
├── server.js          # Express server + REST API + geocoding
├── vps_manager.html   # Complete UI (HTML + CSS + JS, single file)
├── package.json       # Dependencies
├── start.bat          # Windows one-click launcher
├── start.sh           # Linux / macOS one-click launcher
└── data/
    └── servers.json   # Auto-created on first run

License

MIT

Description
No description provided
Readme 61 KiB
Languages
HTML 88.9%
JavaScript 10.1%
Dockerfile 0.6%
Batchfile 0.2%
Shell 0.2%