Files
HexaHost-Panel/README.md
TheOnlyMace 5b260022f8 Add README and DEPLOY documentation for HexaHost Panel.
Replace default Laravel README with project overview and link detailed Plesk deployment steps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-17 13:30:07 +02:00

4.2 KiB
Raw Blame History

HexaHost Panel

Web-Panel zur Steuerung von Proxmox VE-VMs, Traefik-Routen (File Provider), Plesk DNS und Anbindung an WHMCS 9 für Bestellung und Abrechnung.

Repository: ssh://git@git.hexahost.dev:8006/smueller/HexaHost-Panel.git

Produktions-URL (Ziel): https://panel.hexahost.de

Ausführliche Server-Anleitung: DEPLOY.md


Funktionen

Bereich Beschreibung
VM-Verwaltung Anlegen, Start/Stop/Reboot, Live-Status, Konsole (noVNC)
Provisioning Queue-basiert mit Rollback (Proxmox → DNS → Traefik)
WHMCS API HMAC-gesicherte Endpoints: Provision, Suspend, Terminate, Status
Netzwerk Private IP-Pools (10.32.0.0/24), optionale öffentliche IPs
Traefik YAML-Merge, atomisches Schreiben, Reload
Snapshots Manuell + automatisch vor kritischen Aktionen, 48h Retention
ISO-Upload Kunden-ISO auf Proxmox-Storage (Limits konfigurierbar)
Backups vzdump → PBS (wenn BACKUPS_ENABLED=true)
Firewall Regeln pro VM, Sync zu Proxmox
Sicherheit 2FA-Pflicht für Admins, Login-Throttle, Policies pro Rolle
Admin VM-Templates, System-Health, Benutzer, IP-Pools

Architektur

WHMCS 9 ──HMAC API──► Laravel Panel ──► Proxmox VE (Hyperion)
                            ├──► Plesk DNS (A-Records)
                            └──► Traefik dynamic YAML + Reload

Tech-Stack

  • PHP 8.3+, Laravel 13
  • SQLite (Entwicklung) / MariaDB (Produktion empfohlen)
  • Tailwind CSS 4, Vite
  • Queue: database (Worker erforderlich)
  • WHMCS-Modul: whmcs-module/hexahost/

Lokale Entwicklung

Voraussetzungen

  • PHP 8.3+, Composer, Node.js 20+
  • Optional: Proxmox API-Token in .env

Installation

git clone ssh://git@git.hexahost.dev:8006/smueller/HexaHost-Panel.git
cd HexaHost-Panel

composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed --class=HostingSeeder

npm install
npm run build

Starten

# Terminal 1  App
php artisan serve

# Terminal 2  Queue (Provisioning)
php artisan queue:work

# Terminal 3  optional Assets
npm run dev

Standard-Admin nach Seeder: admin@hexahost.local / admin1234in Produktion sofort ändern.

Tests

npm run build
php artisan test

Konfiguration

Alle hosting-spezifischen Werte liegen in config/hosting.php und werden über .env gesetzt. Vorlage: .env.example.

Wichtige Gruppen:

Präfix Zweck
PROXMOX_* API, Node, Storage, ISO, PBS
HOSTING_* / HOSTING_PUBLIC_* IP-Pools, Gateways, CIDR
TRAEFIK_* Pfad zur dynamic config, Reload
PLESK_* DNS-API
WHMCS_* API-Secret, IP-Allowlist
CONSOLE_PROXY_* WebSocket-Proxy (optional)

Niemals .env committen (enthält Secrets).


Geplante Aufgaben (Cron)

Der Laravel Scheduler muss jede Minute laufen (php artisan schedule:run):

Command Intervall
hosting:release-vmids alle 15 Min.
hosting:purge-iso-uploads stündlich
hosting:prune-snapshots stündlich
hosting:collect-metrics alle 5 Min.

WHMCS

Server-Modul-Skeleton: whmcs-module/hexahost/hexahost.php

API-Basis: https://panel.hexahost.de/api/whmcs/ (nur HMAC, kein offenes Hosting-API mehr).

WHMCS_API_SECRET in Panel-.env und im WHMCS-Modul identisch setzen.


Console-Proxy (optional)

Direkte Browser-Verbindung zu Proxmox-VNC ist unsicher und oft blockiert. Empfohlen:

  1. CONSOLE_PROXY_ENABLED=true in .env
  2. Node-Proxy starten: scripts/console-ws-proxy.mjs
  3. Reverse-Proxy /ws/vm → lokaler Port (siehe DEPLOY.md)

Projektstruktur (Auszug)

app/Services/Hosting/
  Proxmox/          # API-Client, VM-Management
  Provisioning/     # Provision, Deprovision, IP, VMID
  Traefik/          # YAML-Generator
  Plesk/            # DNS
  Snapshots/        # Snapshot-Service
  ...
routes/
  web.php           # Panel-UI
  api.php           # WHMCS + Console-Validate
whmcs-module/       # WHMCS 9 Server Module

Lizenz

MIT (Laravel-Basis). Siehe composer.json.