Files
vps-manager/README.md
2026-06-04 09:49:56 -04:00

128 lines
3.8 KiB
Markdown

# vps/fleet
> A self-hosted VPS fleet manager — track every server you own in one dark, minimal dashboard.
[![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org)
[![Express](https://img.shields.io/badge/Express-4.18-000000?style=for-the-badge&logo=express&logoColor=white)](https://expressjs.com)
[![License](https://img.shields.io/badge/License-MIT-58a6ff?style=for-the-badge)](LICENSE)
[![No Build](https://img.shields.io/badge/Build-None-3fb950?style=for-the-badge)](https://github.com/your-username/vps-manager)
---
## Features
- 📊 **Fleet stats** — live totals for online / offline / maintenance counts and monthly spend
- 🃏 **Server cards** — status dot, IP, CPU · RAM · Disk chips, and price at a glance
- ✏️ **Full CRUD** — add, edit, and delete servers via a clean modal form
- 🗺️ **Interactive map** — Leaflet.js world map; locations geocoded automatically via OpenStreetMap
- 💾 **Zero-config storage** — flat-file JSON, no database, no migrations
- 🌑 **Dark theme** — GitHub-style `#0d1117` palette with IBM Plex Mono / Sans
- 📄 **Single HTML file** — no bundler, no framework, no build step
---
## Requirements
| Dependency | Version |
| ---------- | ------------------ |
| Node.js | 18 or higher |
| npm | included with Node |
---
## Quick Start
```bash
git clone https://github.com/your-username/vps-manager.git
cd vps-manager
npm install
npm start
```
Open `http://localhost:8095` in your browser.
> **Windows** — double-click `start.bat`
>
> **Linux / macOS** — `chmod +x start.sh && ./start.sh`
---
## Usage
**Add a server** — click **+ Add Server** in the top-right corner. Only the hostname is required; all other fields are optional. Enter a location and a map pin is placed automatically.
**Edit** — click the pencil icon on any card to reopen the form pre-filled with its data.
**Delete** — click the trash icon on any card. The change is saved immediately.
**Map view** — switch to the map tab to see all geocoded servers plotted on a world map. Click a pin for a quick summary.
---
## API
All data is served over a local REST API on port `8095`.
| Method | Endpoint | Description |
| ---------- | ------------------ | -------------------------------------------------- |
| `GET` | `/api/servers` | Return all servers |
| `POST` | `/api/servers` | Create or update a server (`id` present = update) |
| `DELETE` | `/api/servers/:id` | Delete a server by ID |
### Server object
```json
{
"id": "srv_1700000000000",
"name": "prod-app-01",
"status": "online",
"ipv4": "203.0.113.42",
"ipv6": "2001:db8::1",
"provider": "DigitalOcean",
"plan": "s-2vcpu-4gb",
"cpu": "2",
"ram": "4",
"disk": "80",
"price": "24.00",
"billing": "monthly",
"renewal": "2026-07-01",
"location": "Toronto, Canada",
"region": "ca-central",
"sites": "myapp.example.com",
"notes": "Primary application node"
}
```
---
## Configuration
| Variable | Default | Description |
| -------- | ------- | -------------------------- |
| `PORT` | `8095` | Port the server listens on |
```bash
PORT=3000 npm start
```
---
## Project Structure
```text
vps-manager/
├── server.js # Express server · REST API · geocoding
├── vps_manager.html # Full UI — HTML + CSS + JS in one file
├── package.json # Dependencies
├── start.bat # Windows launcher
├── start.sh # Linux / macOS launcher
└── data/
└── servers.json # Auto-created on first run (gitignored)
```
---
## License
Released under the [MIT License](LICENSE).