Skip to content

Latest commit

 

History

History
530 lines (382 loc) · 14.2 KB

File metadata and controls

530 lines (382 loc) · 14.2 KB
SteerDock Logo

🐳 Modern Docker management platform with clean UI and powerful features

LicenseDockerGoReactNginxMySQLPostgreSQLMongoDBRedisJWTOAuthTest Coverage

Englisch|Vereinfachtes Chinesisch|Traditionelles Chinesisch|Spanisch|Französisch|Deutsch|japanisch|Portugiesisch|Russisch|Koreanisch|Arabisch|Hindi

📸 Screenshots

SteerDock Dashboard - Dark Theme

Docker Dashboard with real-time monitoring (Dark Theme)

SteerDock Monitoring - Light Theme

Real-time resource monitoring and container status (Light Theme)

✨ Funktionen

🔐 Sicherheit und Authentifizierung

  • JWT-Authentifizierung mit 24-Stunden-Ablauf
  • Role-Based Access Control (Super Admin / Admin / Manager / User / ReadOnly)
  • Passwortverschlüsselung (SHA-256)
  • Ratenbegrenzung und Sicherheitsheader
  • Vollständige Audit-Protokollierung
  • OAuth 2.0-Unterstützung (Google, GitHub)

🗄️ Multi-Datenbank-Unterstützung

  • MySQL 8.0+ (Standard)
  • PostgreSQL 15+
  • MongoDB 5.0+
  • Automatische Schemamigration
  • Verbindungspooling

🐳 Docker-Management

  • Container: Starten, stoppen, neu starten, entfernen, erstellen, prüfen
  • Bilder: Register abrufen, entfernen, prüfen, durchsuchen
  • Netzwerke: Container erstellen, entfernen, verbinden/trennen
  • Bände: Erstellen, entfernen, prüfen, beschneiden
  • Terminal: Echtzeit-Shell-Zugriff mit xterm.js
  • Protokolle: Echtzeit-Streaming von Containerprotokollen
  • Statistiken: Live-Überwachung der Ressourcennutzung (CPU, Speicher, Netzwerk, E/A)

🌐 Multi-Host-Unterstützung

  • Verwalten Sie mehrere Docker-Hosts
  • Lokale und Remote-Docker-Daemons
  • SSH- und TCP-Verbindungen
  • Schneller Hostwechsel

🎨 Modern UI

  • Dunkel/Hell-Thema
  • Responsives Design
  • Mehrsprachige Unterstützung (10+ Sprachen)
  • Tastaturkürzel
  • Echtzeit-Updates

🚀 Schnellstart

Der schnellste Weg, SteerDock zum Laufen zu bringen:

# 1. Generate secure passwords and configuration
./generate-passwords.sh  # Linux/macOS
# or
.\generate-passwords.ps1  # Windows

# 2. Start all services with Docker Compose
docker compose up -d

# 3. Wait for services to start (about 30 seconds)
docker compose logs -f steerdock

# 4. Access SteerDock
# Open: http://localhost:5151

Standard-Login:

  • Benutzername:superadmin
  • Passwort:superadmin123

⚠️Passwort nach dem ersten Login ändern!


Option 1: Entwicklungsmodus (für die Entwicklung empfohlen)

# Linux/macOS
./start-dev.sh

# Windows
.\start-dev.ps1

Zugang:

  • Frontend: http://localhost:5151 (mit Hot-Reload)
  • Backend: http://localhost:8383

Option 2: Produktionsmodus

# Linux/macOS
./start-prod.sh

# Windows
.\start-prod.ps1

Zugang:

  • Frontend: http://localhost:5151 (vom Backend bereitgestellt)
  • Backend-API: http://localhost:8383/api/v1

Option 3: Desktop-Anwendung (Windows)

# Windows only
.\win-desktop.ps1

Dadurch wird eine eigenständige Desktop-Anwendung erstellt mit:

  • Backend-Dienst läuft im Hintergrund
  • Desktop-GUI-Anwendung (SteerDock-frontend.exe)
  • Zugriff: Desktop-Anwendungsfenster

Option 4: Docker Compose (empfohlen)

# 1. Generate configuration and passwords
./generate-passwords.sh  # Linux/macOS
# or
.\generate-passwords.ps1  # Windows

# 2. Start all services (MySQL + Redis + SteerDock)
docker compose up -d

# 3. Check service status
docker compose ps

# 4. View logs
docker compose logs -f steerdock

# 5. Access application
# Frontend: http://localhost:5151 (served by backend)
# Backend API: http://localhost:8383/api/v1

Inklusivleistungen:

  • MySQL-Datenbank (Port 3306)
  • Redis-Cache (Port 6379)
  • SteerDock-Anwendung (Port 8383)

**Wichtig:**Immer verwendendocker compose up -dum alle Dienste gemeinsam zu starten. Führen Sie keine einzelnen Behälter mit ausdocker run.

Standard-Login:

  • Benutzername:superadmin
  • Passwort:superadmin123

⚠️Passwort nach dem ersten Login ändern!

� Manueller Aufbau

Aus der Quelle erstellen

# 1. Build frontend
cd frontend
npm install
npm run build

# 2. Build backend (creates single binary)
cd ../backend
go mod tidy
go build -o steerdock .

# 3. Install the database and cache
cd .. && ./install-database.sh

# 4. Run backend
cd ./backend && ./steerdock  # Linux/macOS
# or: 
cd ./backend && steerdock.exe  # Windows

# 5. Run frontend (in another terminal)
cd ./frontend && npm run preview -- --host 0.0.0.0 --port 5151

Erstellen Sie ein Docker-Image

Schneller Aufbau

# Use Docker Compose (Recommended)
docker compose up -d

Erweiterter Docker-Build

# Build with custom tag and build args
docker build \
  --tag steerdock:v1.0.0 \
  --tag steerdock:latest \
  --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
  --build-arg VERSION=v1.0.0 \
  .

# Build for multiple platforms (requires buildx)
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --tag steerdock:latest \
  --push \
  .

# Build with specific Dockerfile
docker build -f Dockerfile -t steerdock:custom .

Containerkonfiguration

**Important:**Verwenden Sie Docker Compose anstelle einzelner Container für eine ordnungsgemäße Datenbankkonnektivität.

# Generate configuration first
./generate-passwords.sh  # Linux/macOS
# or
.\generate-passwords.ps1  # Windows

# Start all services with Docker Compose
docker compose up -d

# For production deployment with custom configuration
docker compose -f docker-compose.prod.yml up -d

Warum Docker Compose erforderlich ist:

  • Automatische Service-Vernetzung (MySQL, Redis, Steerdock)
  • Richtige Konfiguration der Umgebungsvariablen
  • Gesundheitsprüfungen und Dienstabhängigkeiten
  • Volume-Management für Datenpersistenz

Details zum mehrstufigen Build

Das Dockerfile verwendet einen dreistufigen Build-Prozess:

  1. Frontend-Bühne: Erstellt eine React-App mit Node.js

    FROM node:20-alpine AS frontend-builder
    # Builds optimized production frontend
  2. Backend-Phase: Kompiliert Go Binary

    FROM golang:1.24-alpine AS backend-builder  
    # Creates optimized static binary
  3. Letzte Phase: Minimales Alpine-Image mit Frontend und Backend

    FROM alpine:3.19
    # Runtime dependencies, backend serves frontend files, ~50MB final image

Container-Gesundheitsprüfung

# Check container health
docker ps --filter name=steerdock
docker logs steerdock
docker exec steerdock curl -f http://localhost:8383/health/live

# View container stats
docker stats steerdock

Makefile verwenden

# Build everything
make build

# Build and run with Docker
make docker-build
make docker-run

# Development mode
make dev

# Production mode  
make prod

📋 Anforderungen

  • Docker: 20.10+ und Docker Compose
  • System: Linux/Windows/macOS mit 2 GB+ RAM

Für die Entwicklung:

  • Node.js: 20+
  • Gehen: 1.24+
  • Datenbank: MySQL 8.0+ (Standard) / PostgreSQL 15+ / MongoDB 5.0+

🛠️ Tech-Stack

Backend

  • Gehen Sie 1.24+ mit dem Gin-Framework
  • GORM für Datenbankoperationen
  • JWT-Authentifizierung
  • WebSocket für Echtzeit-Updates

Frontend

  • Reagieren Sie 18+ mit TypeScript
  • Vite-Build-Tool
  • Rückenwind-CSS
  • Reagieren Sie auf eine Abfrage zur Statusverwaltung
  • xterm.js für Terminal

👤 Standardbenutzer

👑 Super Admin: superadmin / superadmin123
🛡️ Admin: admin / admin123
👨‍💼 Manager: manager / manager123
👤 User: user / user123
👁️ ReadOnly: readonly / readonly123

⚠️Ändern Sie alle Standardpasswörter nach dem ersten Login!

📖 Dokumentation

🔧 Konfiguration

Alle Konfigurationen sind vorhanden.envDatei (vom Passwortgenerator automatisch generiert):

# Frontend
FRONTEND_PORT=5151
BASE_URL=http://localhost:8383

# Database (MySQL example - default)
MYSQL_USER=steerdock
MYSQL_PASSWORD=<auto-generated>
MYSQL_DATABASE=steerdock
MYSQL_HOST=mysql  # Docker service name
MYSQL_PORT=3306

# Security
JWT_SECRET=<auto-generated>
ALLOWED_ORIGINS=http://localhost:8383,http://localhost:5151

# Cache (Optional)
REDIS_HOST=redis  # Docker service name
REDIS_PORT=6379
REDIS_PASSWORD=<auto-generated>

🐞 Fehlerbehebung

Es kann keine Verbindung zu Docker hergestellt werden

# Check Docker is running
docker ps

# Check Docker socket permissions (Linux)
ls -l /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock  # If needed

Datenbankverbindung fehlgeschlagen

# Check if you're using Docker Compose (IMPORTANT!)
docker compose ps

# Should show 3 services: mysql, redis, steerdock
# If not, start with Docker Compose:
docker compose up -d

# Check database container
docker compose logs mysql

# Restart all services
docker compose restart

Anmeldung nicht möglich

# Check backend is running
curl http://localhost:8383/health/live

# View backend logs
docker compose logs steerdock

# Check database initialization
docker compose exec mysql mysql -u steerdock -p steerdock -e "SELECT username FROM users;"

Port bereits verwendet

# Stop all services
docker compose down

# Or manually kill processes
# Linux/macOS
lsof -ti:8383 | xargs kill -9
lsof -ti:5432 | xargs kill -9
lsof -ti:6379 | xargs kill -9

# Windows
netstat -ano | findstr :8383
taskkill /PID <PID> /F

Häufige Fehler

# ❌ WRONG: Running single container without database
docker run steerdock:latest

# ✅ CORRECT: Using Docker Compose with all services
docker compose up -d

# ❌ WRONG: Missing .env file
docker compose up -d  # without running generate-passwords first

# ✅ CORRECT: Generate config first
./generate-passwords.sh && docker compose up -d

# ❌ WRONG: Using localhost for database in Docker
MYSQL_HOST=localhost  # Won't work in Docker

# ✅ CORRECT: Using Docker service names
MYSQL_HOST=mysql   # Docker Compose service name

🏗️ Projektstruktur

steerdock/
├── backend/             # Go backend application
│   ├── config/          # Configuration
│   ├── handlers/        # HTTP handlers
│   ├── middleware/      # Middleware
│   ├── models/          # Database models
│   ├── routes/          # API routes
│   └── main.go          # Entry point
├── frontend/            # React frontend
│   ├── src/
│   │   ├── components/  # React components
│   │   ├── pages/       # Page components
│   │   ├── hooks/       # Custom hooks
│   │   └── config/      # Configuration
│   └── package.json
├── sql/                 # Database init scripts
├── docs/                # Documentation
├── docker-compose.yml   # Docker Compose config
└── .env                 # Environment variables

🔒 Best Practices für die Sicherheit

  1. Standardpasswörter ändern: Unmittelbar nach der Installation
  2. Verwenden Sie sichere Passwörter: Befolgen Sie die Anforderungen der Passwortrichtlinie
  3. Aktivieren Sie HTTPS: SSL/TLS-Zertifikate in der Produktion verwenden
  4. Regelmäßige Updates: Halten Sie SteerDock und Abhängigkeiten auf dem neuesten Stand
  5. Audit-Protokolle: Überprüfen Sie regelmäßig die Audit-Protokolle
  6. Sicherung: Regelmäßige verschlüsselte Backups
  7. Netzwerkisolation: Verwenden Sie Firewalls und Netzwerksegmentierung
  8. Geringstes Privileg: Erteilen Sie die erforderlichen Mindestberechtigungen

SehenSECURITY.mdAusführliche Sicherheitsrichtlinien finden Sie hier.

🤝 Mitmachen

Beiträge sind willkommen!

  1. Forken Sie das Repository
  2. Erstellen Sie Ihren Feature-Branch (git checkout -b feature/amazing-feature)
  3. Übernehmen Sie Ihre Änderungen (git commit -m 'Add amazing feature')
  4. Zum Zweig schieben (git push origin feature/amazing-feature)
  5. Öffnen Sie eine Pull-Anfrage

Verwandte Projekte

📝 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert – sieheLIZENZEinzelheiten finden Sie in der Datei.

📧 Unterstützung

🙏 Danksagungen


Made with ❤️ by the SteerDock team