resman/README.md
2026-04-06 18:21:01 +02:00

3.8 KiB

ResMan

Ressourcen- und Infrastruktur-Management Tool für Server, Domains und IPs.


🚀 Features

  • 🖥️ Ressourcenverwaltung (Server, VPS, etc.)
  • 🌐 Domain Management inkl. DNS Check
  • 🔗 Subdomain Verwaltung
  • 🌍 IP Management (CRUD + Validation)
  • 💰 Kosten Dashboard (monatlich / jährlich)
  • 🗺️ Infrastruktur Übersicht
  • 🟢 Server Status Check (Ping)
  • 🌙 Dark Mode

🧱 Tech Stack

  • Backend: Node.js + Express
  • Datenbank: MariaDB / MySQL
  • Frontend: Vanilla JavaScript (modular)
  • Deployment: Docker + NGINX Reverse Proxy

📁 Projektstruktur

backend/

routes/

controllers/

public/

index.html

css/

js/

api.js

main.js

resources.js

domains.js

modals.js

costs.js

infra.js


⚙️ Setup

1. Installation

git clone <repo>
cd resman
docker compose up -d --build

2. Migrationen

Beim Start des Backends werden ausstehende Migrationen automatisch ausgefuehrt.

Manuell kannst du sie im Container jederzeit starten:

docker compose exec backend npm run migrate

3. Backend neu bauen / neu starten

docker compose up -d --build backend

4. Erreichbarkeit

  • Frontend/API intern: http://127.0.0.1:3000/resman/
  • Fuer produktive Nutzung ist ein Reverse Proxy davor vorgesehen

🗄️ Datenbank Schema resources

CREATE TABLE resources ( id INT AUTO_INCREMENT PRIMARY KEY, position INT, name VARCHAR(255), produkt VARCHAR(255), provider VARCHAR(255), art VARCHAR(100), cpu VARCHAR(50), ram VARCHAR(50), disk VARCHAR(50), os VARCHAR(100), ipv6_net VARCHAR(255), providername VARCHAR(255), kosten_monat DECIMAL(10,2), kosten_jahr DECIMAL(10,2), laufzeit_monate INT, bestelldatum DATE, kuendbar_ab DATE, kuendigungsdatum DATE, status VARCHAR(50), bemerkung TEXT );

resource_ips

CREATE TABLE resource_ips ( id INT AUTO_INCREMENT PRIMARY KEY, resource_id INT, ip VARCHAR(100), type VARCHAR(50), comment VARCHAR(255) );

domains

CREATE TABLE domains ( id INT AUTO_INCREMENT PRIMARY KEY, position INT, domain_name VARCHAR(255), provider VARCHAR(255), ip_address VARCHAR(100), yearly_cost DECIMAL(10,2), notes TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

subdomains

CREATE TABLE subdomains ( id INT AUTO_INCREMENT PRIMARY KEY, domain_id INT, subdomain VARCHAR(100), ip_address VARCHAR(100) );

🔌 API Endpoints (Auszug) Ressourcen

GET /resman/api/resources/active GET /resman/api/resources/cancelled POST /resman/api/resources PUT /resman/api/resources/:id DELETE /resman/api/resources/:id

IPs

GET /resman/api/resources/:id/ips POST /resman/api/resources/:id/ips PUT /resman/api/ips/:id DELETE /resman/api/ips/:id

Domains

GET /resman/api/domains POST /resman/api/domains PUT /resman/api/domains/:id DELETE /resman/api/domains/:id

Subdomains

GET /resman/api/subdomains POST /resman/api/subdomains PUT /resman/api/subdomains/:id DELETE /resman/api/subdomains/:id

Sonstiges

GET /resman/api/domainmap GET /resman/api/dns/:domain GET /resman/api/ping/:ip GET /resman/api/ipcheck/:ip

🌐 Reverse Proxy NGINX

location /resman/ { proxy_pass http://127.0.0.1:3000/resman/; }

Apache

ProxyPass /resman http://127.0.0.1:3000/resman ProxyPassReverse /resman http://127.0.0.1:3000/resman

🔒 Sicherheit (optional) Basic Auth via NGINX empfohlen Alternativ: nur im internen Netzwerk betreiben API aktuell ohne Auth → nicht öffentlich exponieren 🧠 Architektur

Frontend ist modular aufgebaut:

api.js → zentrale API Kommunikation resources.js → Ressourcen + IPs domains.js → Domains + Subdomains modals.js → alle Dialoge costs.js → Kostenberechnung infra.js → Infrastruktur Ansicht main.js → Initialisierung + Refresh ⚠️ Bekannte Themen DNS Requests können ohne Cache langsam sein Keine Authentifizierung im Backend Kein Rollen-/Rechtesystem