Documentation gerade gezogen

Dieser Commit ist enthalten in:
2025-06-22 20:17:05 +02:00
Ursprung 4b093fa3a9
Commit 8cb483a034
3 geänderte Dateien mit 131 neuen und 117 gelöschten Zeilen

Datei anzeigen

@@ -12,10 +12,12 @@ X-API-Key: AF-2025-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
**API Key Management:**
- API keys can be managed through the Admin Panel under Administration → API Keys
- API keys can be managed through the Admin Panel under "Lizenzserver Administration""System-API-Key generieren"
- Keys follow the format: `AF-YYYY-[32 random characters]`
- Only one system API key is active at a time
- Regenerating the key will immediately invalidate the old key
- The initial API key is automatically generated on first startup
- To retrieve the initial API key from database: `SELECT api_key FROM system_api_key WHERE id = 1;`
**Error Response (401 Unauthorized):**
```json
@@ -28,6 +30,8 @@ X-API-Key: AF-2025-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
## License Server API
**Base URL:** `https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com`
### Public Endpoints
#### GET /
@@ -136,7 +140,7 @@ Get license information.
**Headers:**
```
X-API-Key: your-api-key
X-API-Key: AF-2025-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
**Response:**
@@ -168,6 +172,8 @@ X-API-Key: your-api-key
### Session Management API Endpoints
**Note:** Session endpoints require that the client application is configured in the `client_configs` table. The default client "Account Forger" is pre-configured.
#### POST /api/license/session/start
Start a new session for a license.
@@ -235,7 +241,7 @@ Check for available updates.
**Headers:**
```
X-API-Key: your-api-key
X-API-Key: AF-2025-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
**Request:**
@@ -246,20 +252,38 @@ X-API-Key: your-api-key
}
```
**Response:** Update availability status with version info
**Response:**
```json
{
"update_available": true,
"latest_version": "1.1.0",
"download_url": "https://example.com/download/v1.1.0",
"release_notes": "Bug fixes and performance improvements"
}
```
#### GET /api/version/latest
Get latest version information.
**Headers:**
```
X-API-Key: your-api-key
X-API-Key: AF-2025-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
**Response:** Latest version information
**Response:**
```json
{
"version": "1.1.0",
"release_date": "2025-06-20",
"download_url": "https://example.com/download/v1.1.0",
"release_notes": "Bug fixes and performance improvements"
}
```
## Admin Panel API
**Base URL:** `https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com`
### Customer API Endpoints
#### GET /api/customers
@@ -791,7 +815,7 @@ All errors return JSON with `error`, `code`, and `status` fields.
Example request with required headers:
```bash
curl -X POST http://localhost/api/license/activate \
curl -X POST https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com/api/license/activate \
-H "X-API-Key: AF-2025-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
@@ -810,7 +834,13 @@ curl -X POST http://localhost/api/license/activate \
- Username: `w@rh@mm3r` / Password: `Warhammer123!`
- API Key: Generated in Admin Panel under "Lizenzserver Administration"
### Getting the Initial API Key
If you need to retrieve the API key directly from the database:
```bash
docker exec -it v2_postgres psql -U postgres -d v2_db -c "SELECT api_key FROM system_api_key WHERE id = 1;"
```
### Test Endpoints
- Admin Panel: `http://localhost:80`
- License Server API: `http://localhost:80/api`
- Admin Panel: `https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com/`
- License Server API: `https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com/`
- Monitoring: See OPERATIONS_GUIDE.md

Datei anzeigen

@@ -1,5 +1,19 @@
# V2-Docker Operations Guide
## WICHTIGER HINWEIS
**NICHT VERWENDEN (für <100 Kunden nicht benötigt):**
- ❌ Redis - System verwendet direkte DB-Verbindungen
- ❌ RabbitMQ - System verwendet synchrone Verarbeitung
- ❌ Prometheus/Grafana/Alertmanager - Integrierte Überwachung ist ausreichend
- ❌ Externe Monitoring-Tools - Admin Panel hat alle benötigten Metriken
**NUR DIESE SERVICES VERWENDEN:**
- ✅ PostgreSQL (db)
- ✅ License Server (license-server)
- ✅ Admin Panel (admin-panel)
- ✅ Nginx Proxy (nginx-proxy)
## Deployment
### Prerequisites
@@ -16,12 +30,12 @@ Database initializes automatically via init.sql.
### Standard-Zugangsdaten
#### Admin Panel
- URL: http://localhost:80 (oder konfigurierte Domain)
- URL: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com/
- User 1: `rac00n` / `1248163264`
- User 2: `w@rh@mm3r` / `Warhammer123!`
#### License Server API
- URL: http://localhost:80/api (über Nginx Proxy)
- URL: https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com/
- API Key: Wird im Admin Panel unter "Lizenzserver Administration" verwaltet
- Header: `X-API-Key: <api-key>`
@@ -31,41 +45,38 @@ Database initializes automatically via init.sql.
```yaml
license-server:
build: ./v2_lizenzserver
container_name: v2_license_server
container_name: license-server
environment:
- DATABASE_URL=postgresql://adminuser:supergeheimespasswort@postgres:5432/meinedatenbank
- DATABASE_URL=postgresql://adminuser:supergeheimespasswort@db:5432/meinedatenbank
- JWT_SECRET=your-secret-jwt-key-here-minimum-32-chars
- REDIS_HOST=redis
- RABBITMQ_HOST=rabbitmq
# NICHT VERWENDEN:
# - REDIS_HOST=redis # NICHT BENÖTIGT
# - RABBITMQ_HOST=rabbitmq # NICHT BENÖTIGT
expose:
- "8000"
- "8443"
networks:
- backend
- monitoring
depends_on:
- postgres
- redis
- rabbitmq
- db # Nur PostgreSQL wird benötigt
```
#### Admin Panel
```yaml
admin-panel:
build: ./v2_adminpanel
container_name: v2_admin_panel
container_name: admin-panel
environment:
- DATABASE_URL=postgresql://adminuser:supergeheimespasswort@postgres:5432/meinedatenbank
- DATABASE_URL=postgresql://adminuser:supergeheimespasswort@db:5432/meinedatenbank
- SECRET_KEY=supersecretkey
- JWT_SECRET=your-secret-jwt-key-here-minimum-32-chars
- REDIS_HOST=redis
# NICHT VERWENDEN:
# - REDIS_HOST=redis # NICHT BENÖTIGT
expose:
- "5000"
networks:
- backend
- monitoring
depends_on:
- postgres
- redis
- db # Nur PostgreSQL wird benötigt
volumes:
- ./backups:/app/backups
```
@@ -74,7 +85,7 @@ admin-panel:
```yaml
nginx:
build: ./v2_nginx
container_name: v2_nginx
container_name: nginx-proxy
ports:
- "80:80"
networks:
@@ -91,82 +102,33 @@ nginx:
## Monitoring
### Prometheus Configuration
**WICHTIG**: Externe Monitoring-Tools werden NICHT verwendet! Die folgenden Konfigurationen sind VERALTET und sollten IGNORIERT werden.
#### Scrape Configs
```yaml
scrape_configs:
- job_name: 'license-server'
static_configs:
- targets: ['license-server:8000']
metrics_path: /metrics
### Integrierte Überwachung (Admin Panel)
- job_name: 'admin-panel'
static_configs:
- targets: ['admin-panel:5000']
metrics_path: /metrics
**HINWEIS**: Externe Monitoring-Tools (Grafana, Prometheus, etc.) werden NICHT verwendet!
- job_name: 'postgres'
static_configs:
- targets: ['postgres-exporter:9187']
Das Admin Panel bietet alle benötigten Überwachungsfunktionen:
- job_name: 'redis'
static_configs:
- targets: ['redis-exporter:9121']
1. **Dashboard** (Startseite)
- Aktive Lizenzen
- Aktive Sessions
- Heartbeat-Statistiken
- System-Metriken
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
2. **Log-Seite**
- Vollständiges Audit-Log aller Aktionen
- Filterbar nach Benutzer, Aktion, Entität
- Export in Excel/CSV
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
```
3. **Lizenz-Übersicht**
- Aktive/Inaktive Lizenzen
- Session-Status in Echtzeit
- Letzte Heartbeats
#### Alert Rules
- License server down: `up{job="license-server"} == 0`
- High error rate: `rate(http_requests_total{status=~"5.."}[5m]) > 0.05`
- Database connections: `pg_stat_database_numbackends > 100`
### Grafana Dashboards
1. **System Overview Dashboard**
- CPU and memory usage
- Network traffic
- Disk usage
- Container status
2. **License Server Dashboard**
- Active licenses
- Heartbeat frequency
- API response times
- Error rates
3. **Database Performance Dashboard**
- Query performance
- Connection pool status
- Table sizes
- Slow queries
### Accessing Monitoring
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3001
- Default Login: admin/admin
- Vorkonfigurierte Dashboards:
- System Overview
- License Server Metrics
- Database Performance
- Alertmanager: http://localhost:9093
### Monitoring Stack Services
- PostgreSQL Exporter: Sammelt DB-Metriken (Port 9187)
- Redis Exporter: Sammelt Cache-Metriken (Port 9121)
- Node Exporter: System-Level Metriken (Port 9100)
- cAdvisor: Container-Metriken (Port 8080)
- Prometheus: Metrics Collection (Port 9090)
- Grafana: Visualization (Port 3000)
- Alertmanager: Alert Management (Port 9093)
4. **Metriken-Endpoint**
- `/metrics` im License Server für basic monitoring
- Zeigt aktuelle Anfragen, Fehler, etc.
## Features Overview
@@ -232,10 +194,10 @@ DROP TABLE IF EXISTS license_heartbeats_2024_01;
#### Backup Procedures
```bash
# Backup
docker exec v2_postgres pg_dump -U adminuser meinedatenbank | gzip > backup_$(date +%Y%m%d).sql.gz
docker exec db pg_dump -U adminuser meinedatenbank | gzip > backup_$(date +%Y%m%d).sql.gz
# Restore
gunzip -c backup_20250619.sql.gz | docker exec -i v2_postgres psql -U adminuser meinedatenbank
gunzip -c backup_20250619.sql.gz | docker exec -i db psql -U adminuser meinedatenbank
```
##### Integriertes Backup-System
@@ -320,13 +282,13 @@ db:
#### License Server Not Responding
- Check status: `docker ps | grep license`
- View logs: `docker logs v2_license_server --tail 100`
- Test health: `docker exec v2_nginx curl http://license-server:8000/health`
- View logs: `docker logs license-server --tail 100`
- Test health: `docker exec nginx-proxy curl http://license-server:8443/health`
#### Database Connection Issues
- Check status: `docker exec v2_postgres pg_isready`
- Check status: `docker exec db pg_isready`
- Test connection: Use psql from admin panel container
- Check logs: `docker logs v2_postgres --tail 50`
- Check logs: `docker logs db --tail 50`
#### High Memory Usage
1. Check container stats: `docker stats`
@@ -342,7 +304,7 @@ Quick health check script:
docker ps --format "table {{.Names}}\t{{.Status}}"
# Key endpoints
curl -s http://localhost/api/health
curl -s https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com/health
curl -s http://localhost:9090/-/healthy
```
@@ -381,17 +343,18 @@ server {
server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com;
location / {
proxy_pass https://license_servers;
proxy_pass http://license_servers;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
```
#### Scaling Considerations
- Redis für Session-Sharing zwischen Instanzen
- RabbitMQ für asynchrone Task-Verteilung
- Sticky Sessions bei Bedarf aktivieren
#### Scaling Considerations (für >100 Kunden)
**HINWEIS**: Für <100 Kunden ist keine Skalierung notwendig!
- Direkter DB-Zugriff ist ausreichend (kein Redis benötigt)
- Synchrone Verarbeitung ist schnell genug (kein RabbitMQ benötigt)
- Single Instance ist völlig ausreichend
### Database Scaling
- Read replicas for reporting

Datei anzeigen

@@ -1,8 +1,24 @@
# V2-Docker System Documentation
## WICHTIGER HINWEIS FÜR ZUKÜNFTIGE ENTWICKLUNG
**DIESE SERVICES WERDEN NICHT VERWENDET:**
- ❌ Redis - NICHT BENÖTIGT für <100 Kunden
- ❌ RabbitMQ - NICHT BENÖTIGT für <100 Kunden
- ❌ Prometheus - NICHT BENÖTIGT
- ❌ Grafana - NICHT BENÖTIGT
- ❌ Alertmanager - NICHT BENÖTIGT
- ❌ Externe Monitoring-Tools - NICHT BENÖTIGT
**Das System verwendet NUR:**
- ✅ PostgreSQL für alle Datenspeicherung
- ✅ Integrierte Überwachung im Admin Panel
- ✅ Direkte Datenbankverbindungen ohne Cache
- ✅ Synchrone Verarbeitung ohne Message Queue
## Overview
V2-Docker is a comprehensive system featuring a License Server, Admin Panel, Lead Management, and Monitoring Stack. This document consolidates all architecture and implementation details.
V2-Docker is a streamlined system featuring a License Server, Admin Panel, and Lead Management with integrated monitoring. This document consolidates all architecture and implementation details.
## License Server Architecture
@@ -221,17 +237,22 @@ Pre-configured dashboards and alerts for system health.
### Docker Services
#### Aktive Services
- `v2_postgres`: PostgreSQL database (Port 5432)
- `v2_admin_panel`: Admin interface (interner Port 5000)
- `v2_nginx`: Reverse proxy (Port 80)
- `v2_license_server`: License server (interner Port 8000)
- `v2_redis`: Redis cache (Port 6379)
- `v2_rabbitmq`: Message queue (Ports 5672, 15672)
- `db`: PostgreSQL database (Port 5432)
- `admin-panel`: Admin interface (interner Port 5000)
- `nginx-proxy`: Reverse proxy (Ports 80, 443)
- `license-server`: License server (interner Port 8443)
See monitoring configuration in `monitoring/docker-compose.monitoring.yml`.
#### NICHT VERWENDETE Services (DO NOT USE)
-`redis`: Redis cache - NICHT BENÖTIGT für <100 Kunden
-`rabbitmq`: Message queue - NICHT BENÖTIGT für <100 Kunden
- ❌ External monitoring (Prometheus, Grafana, Alertmanager) - NICHT BENÖTIGT
-`monitoring/docker-compose.monitoring.yml` - NICHT VERWENDEN
**WICHTIG**: Das System verwendet KEINE externen Monitoring-Tools, Redis oder RabbitMQ. Die eingebaute Überwachung im Admin Panel ist ausreichend für <100 Kunden.
### Environment Configuration
Required: DATABASE_URL, SECRET_KEY, JWT_SECRET
NOT Required: REDIS_HOST, RABBITMQ_HOST (diese NICHT konfigurieren)
See docker-compose.yaml for all environment variables.
@@ -240,5 +261,5 @@ System is production-ready with all core features implemented:
- ✅ License management with session enforcement
- ✅ Lead management CRM
- ✅ Resource pool management
-Complete monitoring stack
-Integrierte Überwachung (Admin Panel)
- ✅ Backup and audit systems