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