Skip to content

Latest commit

 

History

History
541 lines (393 loc) · 17.3 KB

File metadata and controls

541 lines (393 loc) · 17.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

إنجليزي|الصينية المبسطة|الصينية التقليدية|الأسبانية|فرنسي|الألمانية|اليابانية|البرتغالية|الروسية|كوري|العربية|الهندية

📸 لقطات الشاشة

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)

✨ المميزات

🔐 الأمن والمصادقة

  • مصادقة JWT مع انتهاء الصلاحية لمدة 24 ساعة
  • التحكم في الوصول المستند إلى الدور (المسؤول المتميز / المشرف / المدير / المستخدم / للقراءة فقط)
  • تشفير كلمة المرور (SHA-256)
  • تحديد المعدل ورؤوس الأمان
  • تسجيل التدقيق الكامل
  • دعم OAuth 2.0 (جوجل، جيثب)

🗄️ دعم قواعد البيانات المتعددة

  • ماي إس كيو إل 8.0+ (افتراضي)
  • بوستجري إس كيو إل 15+
  • مونغو دي بي 5.0+
  • ترحيل المخطط التلقائي
  • تجمع الاتصال

🐳 إدارة عامل الميناء

  • حاويات: البدء، الإيقاف، إعادة التشغيل، الإزالة، الإنشاء، الفحص
  • الصور: سحب، إزالة، فحص، السجلات البحث
  • الشبكات: إنشاء، إزالة، توصيل/فصل الحاويات
  • مجلدات: إنشاء، إزالة، فحص، تقليم
  • صالة: الوصول إلى Shell في الوقت الفعلي باستخدام xterm.js
  • سجلات: Real-time container logs streaming
  • احصائيات: مراقبة استخدام الموارد الحية (وحدة المعالجة المركزية، الذاكرة، الشبكة، الإدخال / الإخراج)

🌐 دعم متعدد المضيفين

  • إدارة مضيفي Docker المتعددين
  • شياطين Docker المحلية والبعيدة
  • اتصالات SSH وTCP
  • التبديل السريع للمضيف

🎨 واجهة المستخدم الحديثة

  • موضوع الظلام / الضوء
  • تصميم سريع الاستجابة
  • دعم متعدد اللغات (10+ لغات)
  • اختصارات لوحة المفاتيح
  • تحديثات في الوقت الحقيقي

🚀 بداية سريعة

أسرع طريقة لتشغيل 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

تسجيل الدخول الافتراضي:

  • اسم المستخدم:superadmin
  • كلمة المرور:superadmin123

⚠️تغيير كلمة المرور بعد تسجيل الدخول الأول!


الخيار 1: وضع التطوير (موصى به للتطوير)

# Linux/macOS
./start-dev.sh

# Windows
.\start-dev.ps1

وصول:

  • الواجهة الأمامية: http://localhost:5151 (مع إعادة التحميل السريع)
  • الواجهة الخلفية: http://localhost:8383

الخيار 2: وضع الإنتاج

# Linux/macOS
./start-prod.sh

# Windows
.\start-prod.ps1

وصول:

  • الواجهة الأمامية: http://localhost:5151 (تخدمها الواجهة الخلفية)
  • واجهة برمجة التطبيقات الخلفية: http://localhost:8383/api/v1

الخيار 3: تطبيق سطح المكتب (Windows)

# Windows only
.\win-desktop.ps1

يؤدي هذا إلى إنشاء تطبيق سطح مكتب مستقل مع:

  • خدمة الواجهة الخلفية تعمل في الخلفية
  • تطبيق واجهة المستخدم الرسومية لسطح المكتب (SteerDock-frontend.exe)
  • الوصول: نافذة تطبيق سطح المكتب

Option 4: Docker Compose (Recommended)

# 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

الخدمات المتضمنة:

  • قاعدة بيانات MySQL (المنفذ 3306)
  • Redis ذاكرة التخزين المؤقت (المنفذ 6379)
  • تطبيق SteerDock (المنفذ 8383)

**مهم:**استخدم دائماdocker compose up -dلبدء جميع الخدمات معًا. لا تقم بتشغيل حاويات فردية معdocker run.

تسجيل الدخول الافتراضي:

  • اسم المستخدم:superadmin
  • كلمة المرور:superadmin123

⚠️تغيير كلمة المرور بعد تسجيل الدخول الأول!

� البناء اليدوي

البناء من المصدر

# 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

بناء صورة عامل الميناء

بناء سريع

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

بناء عامل ميناء متقدم

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

تكوين الحاوية

**مهم:**استخدم Docker Compose بدلاً من الحاويات الفردية للاتصال المناسب بقاعدة البيانات.

# 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

لماذا يلزم Docker Compose:

  • Automatic service networking (mysql, redis, steerdock)
  • التكوين المناسب لمتغير البيئة
  • الفحوصات الصحية وتبعيات الخدمة
  • إدارة الحجم لاستمرارية البيانات

تفاصيل البناء متعدد المراحل

يستخدم ملف Dockerfile عملية إنشاء مكونة من ثلاث مراحل:

  1. مرحلة الواجهة الأمامية: إنشاء تطبيق React باستخدام Node.js

    FROM node:20-alpine AS frontend-builder
    # Builds optimized production frontend
  2. مرحلة الخلفية: يجمع الذهاب ثنائي

    FROM golang:1.24-alpine AS backend-builder  
    # Creates optimized static binary
  3. المرحلة النهائية: الحد الأدنى من صورة جبال الألب مع كل من الواجهة الأمامية والخلفية

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

فحص صحة الحاوية

# 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

# Build everything
make build

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

# Development mode
make dev

# Production mode  
make prod

📋 المتطلبات

  • عامل ميناء: 20.10+ وDocker Compose
  • نظام: Linux/Windows/macOS مع ذاكرة وصول عشوائي (RAM) بسعة 2 جيجابايت+

للتطوير:

  • Node.js: 20+
  • يذهب: 1.24+
  • قاعدة البيانات: MySQL 8.0+ (افتراضي) / PostgreSQL 15+ / MongoDB 5.0+

🛠️ تيك ستاك

الخلفية

  • انتقل إلى الإصدار 1.24+ باستخدام إطار عمل Gin
  • GORM لعمليات قاعدة البيانات
  • مصادقة JWT
  • WebSocket للحصول على التحديثات في الوقت الحقيقي

الواجهة الأمامية

  • رد فعل 18+ مع TypeScript
  • أداة بناء فيت
  • الريح الخلفية CSS
  • رد فعل الاستعلام لإدارة الدولة
  • xterm.js للمحطة

👤 المستخدمون الافتراضيون

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

⚠️قم بتغيير جميع كلمات المرور الافتراضية بعد تسجيل الدخول لأول مرة!

📖 التوثيق

🔧 التكوين

كل التكوين موجود.envالملف (يتم إنشاؤه تلقائيًا بواسطة منشئ كلمات المرور):

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

🐞 استكشاف الأخطاء وإصلاحها

لا يمكن الاتصال بـ 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

فشل الاتصال بقاعدة البيانات

# 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

لا يمكن تسجيل الدخول

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

المنفذ قيد الاستخدام بالفعل

# 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

الأخطاء الشائعة

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

🏗️ هيكل المشروع

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

🔒 أفضل الممارسات الأمنية

  1. تغيير كلمات المرور الافتراضية: مباشرة بعد التثبيت
  2. استخدم كلمات مرور قوية: اتبع متطلبات سياسة كلمة المرور
  3. تمكين HTTPS: استخدم شهادات SSL/TLS في الإنتاج
  4. تحديثات منتظمة: حافظ على تحديث SteerDock والتبعيات
  5. سجلات التدقيق: مراجعة سجلات التدقيق بانتظام
  6. النسخ الاحتياطي: النسخ الاحتياطية المشفرة العادية
  7. عزل الشبكة: استخدام جدران الحماية وتجزئة الشبكة
  8. الامتياز الأقل: منح الحد الأدنى من الأذونات المطلوبة

يرىSECURITY.mdللحصول على إرشادات أمنية مفصلة.

🤝 المساهمة

المساهمات هي موضع ترحيب!

  1. شوكة المستودع
  2. قم بإنشاء فرع الميزات الخاص بك (git checkout -b feature/amazing-feature)
  3. تنفيذ التغييرات الخاصة بك (git commit -m 'Add amazing feature')
  4. ادفع إلى الفرع (git push origin feature/amazing-feature)
  5. افتح طلب السحب

المشاريع ذات الصلة

📝 الترخيص

هذا المشروع مرخص بموجب ترخيص MIT - راجعرخصةملف للحصول على التفاصيل.

📧 الدعم

🙏 شكر وتقدير


Made with ❤️ by the SteerDock team