Skip to content

Latest commit

 

History

History
541 lines (393 loc) · 15.3 KB

File metadata and controls

541 lines (393 loc) · 15.3 KB
SteerDock Logo

🐳 Modern Docker management platform with clean UI and powerful features

License Docker Go React Nginx MySQL PostgreSQL MongoDB Redis JWT OAuth Test Status

Anglais|Chinois simplifié|Chinois traditionnel|Espagnol|Français|Allemand|japonais|portugais|russe|coréen|arabe|hindi

📸 Captures d'écran

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)

✨ Caractéristiques

🔐 Sécurité et authentification

  • Authentification JWT avec expiration de 24 h
  • Contrôle d'accès basé sur les rôles (Super administrateur/Administrateur/Gestionnaire/Utilisateur/Lecture seule)
  • Cryptage du mot de passe (SHA-256)
  • Limitation de débit et en-têtes de sécurité
  • Journalisation d'audit complète
  • Prise en charge d'OAuth 2.0 (Google, GitHub)

🗄️ Prise en charge multi-bases de données

  • MySQL 8.0+ (par défaut)
  • PostgreSQL 15+
  • MongoDB 5.0+
  • Migration automatique du schéma
  • Regroupement de connexions

🐳 Gestion des Dockers

  • Conteneurs: Démarrer, arrêter, redémarrer, supprimer, créer, inspecter
  • Images : Extraire, supprimer, inspecter, rechercher des registres
  • Réseaux: Créer, supprimer, connecter/déconnecter des conteneurs
  • Volumes: Créer, supprimer, inspecter, élaguer
  • Terminal: Accès au shell en temps réel avec xterm.js
  • Journaux : Diffusion en temps réel des journaux de conteneurs
  • Statistiques: Surveillance en direct de l'utilisation des ressources (CPU, Mémoire, Réseau, E/S)

🌐 Prise en charge multi-hôtes

  • Gérer plusieurs hôtes Docker
  • Démons Docker locaux et distants
  • Connexions SSH et TCP
  • Changement d'hôte rapide

🎨 Interface utilisateur moderne

  • Thème sombre/clair
  • Conception réactive
  • Prise en charge multilingue (plus de 10 langues)
  • Raccourcis clavier
  • Mises à jour en temps réel

🚀 Démarrage rapide

Le moyen le plus rapide de faire fonctionner SteerDock :

# 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

Connexion par défaut :

  • Nom d'utilisateur:superadmin
  • Mot de passe:superadmin123

⚠️Changez le mot de passe après la première connexion !


Option 1 : Mode développement (recommandé pour le développement)

# Linux/macOS
./start-dev.sh

# Windows
.\start-dev.ps1

Accéder:

  • Frontend : http://localhost:5151 (avec rechargement à chaud)
  • Back-end : http://localhost:8383

Option 2 : Mode production

# Linux/macOS
./start-prod.sh

# Windows
.\start-prod.ps1

Accéder:

  • Frontend : http://localhost:5151 (servi par le backend)
  • API back-end : http://localhost:8383/api/v1

Option 3 : Application de bureau (Windows)

# Windows only
.\win-desktop.ps1

Cela crée une application de bureau autonome avec :

  • Service backend exécuté en arrière-plan
  • Application GUI de bureau (SteerDock-frontend.exe)
  • Accès : fenêtre de l'application de bureau

Option 4 : Docker Compose (recommandé)

# 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

Prestations incluses :

  • Base de données MySQL (port 3306)
  • Redis cache (port 6379)
  • Application SteerDock (port 8383)

**Important:**Utilisez toujoursdocker compose up -dpour démarrer tous les services ensemble. Ne faites pas fonctionner des conteneurs individuels avecdocker run.

Connexion par défaut :

  • Nom d'utilisateur:superadmin
  • Mot de passe:superadmin123

⚠️Changez le mot de passe après la première connexion !

� Construction manuelle

Construire à partir de la source

# 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

Créer une image Docker

Construction rapide

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

Construction Docker avancée

# 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 .

Configuration du conteneur

**Important:**Utilisez Docker Compose au lieu de conteneurs individuels pour une connectivité appropriée à la base de données.

# 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

Pourquoi Docker Compose est requis :

  • Mise en réseau automatique des services (mysql, redis, steerdock)
  • Configuration appropriée des variables d'environnement
  • Vérifications de l'état et dépendances des services
  • Gestion des volumes pour la persistance des données

Détails de construction en plusieurs étapes

Le Dockerfile utilise un processus de construction en 3 étapes :

  1. Étape frontale: Construit l'application React avec Node.js

    FROM node:20-alpine AS frontend-builder
    # Builds optimized production frontend
  2. Étape back-end: Compile Go binaire

    FROM golang:1.24-alpine AS backend-builder  
    # Creates optimized static binary
  3. Étape finale : Image alpine minimale avec frontend et backend

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

Bilan de santé du conteneur

# 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

Utilisation du Makefile

# Build everything
make build

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

# Development mode
make dev

# Production mode  
make prod

📋 Exigences

  • Docker: 20.10+ et Docker Compose
  • Système: Linux/Windows/macOS avec 2 Go+ de RAM

Pour le développement :

  • Noeud.js: 20+
  • Aller: 1.24+
  • Base de données: MySQL 8.0+ (par défaut) / PostgreSQL 15+ / MongoDB 5.0+

🛠️ Pile technologique

Back-end

  • Passez à 1.24+ avec le framework Gin
  • GORM pour les opérations de base de données
  • Authentification JWT
  • WebSocket pour les mises à jour en temps réel

L'extrémité avant

  • Réagissez 18+ avec TypeScript
  • Outil de création de Vite
  • CSS vent arrière
  • React Query pour la gestion de l'état
  • xterm.js pour le terminal

👤 Utilisateurs par défaut

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

⚠️Changez tous les mots de passe par défaut après la première connexion !

📖Documentations

🔧Configuration

Toute la configuration est dans.envfichier (généré automatiquement par le générateur de mot de passe) :

# 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>

🐞 Dépannage

Impossible de se connecter à Docker

# 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

La connexion à la base de données a échoué

# 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

Impossible de se connecter

# 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 déjà utilisé

# 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

Erreurs courantes

# ❌ 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

🏗️ Structure du projet

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

🔒 Meilleures pratiques de sécurité

  1. Modifier les mots de passe par défaut: Immédiatement après l'installation
  2. Utilisez des mots de passe forts : Suivez les exigences de la politique de mot de passe
  3. Activer HTTPS: Utiliser des certificats SSL/TLS en production
  4. Mises à jour régulières : Gardez SteerDock et ses dépendances à jour
  5. Journaux d'audit : Examiner régulièrement les journaux d'audit
  6. Sauvegarde: Sauvegardes cryptées régulières
  7. Isolation du réseau : Utiliser des pare-feu et la segmentation du réseau
  8. Moindre privilège : Accorder les autorisations minimales requises

VoirSECURITY.mdpour des directives de sécurité détaillées.

🤝 Contribuer

Les contributions sont les bienvenues !

  1. Forker le référentiel
  2. Créez votre branche de fonctionnalités (git checkout -b feature/amazing-feature)
  3. Validez vos modifications (git commit -m 'Add amazing feature')
  4. Poussez vers la branche (git push origin feature/amazing-feature)
  5. Ouvrir une demande de tirage

Projets connexes

📝 Licence

Ce projet est sous licence MIT - voir leLICENCEfichier pour plus de détails.

📧 Soutien

🙏 Remerciements


Made with ❤️ by the SteerDock team