Skip to content

Latest commit

 

History

History
541 lines (393 loc) · 18.7 KB

File metadata and controls

541 lines (393 loc) · 18.7 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 (Google, GitHub)

🗄️ Поддержка нескольких баз данных

  • MySQL 8.0+ (по умолчанию)
  • PostgreSQL 15+
  • МонгоБД 5.0+
  • Автоматическая миграция схемы
  • Пул соединений

🐳 Управление докером

  • Контейнеры: Запуск, остановка, перезапуск, удаление, создание, проверка.
  • Изображения: Извлекать, удалять, проверять, искать в реестрах.
  • Сети: Создание, удаление, подключение/отключение контейнеров.
  • Объемы: Создание, удаление, проверка, обрезка
  • Терминал: Доступ к оболочке в реальном времени с помощью xterm.js.
  • Журналы: Потоковая передача журналов контейнера в реальном времени.
  • Статистика: Мониторинг использования ресурсов в реальном времени (ЦП, память, сеть, ввод-вывод).

🌐 Поддержка нескольких хостов

  • Управление несколькими хостами 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 (обслуживается серверной частью)
  • Серверный API: http://localhost:8383/api/v1.

Вариант 3. Настольное приложение (Windows)

# Windows only
.\win-desktop.ps1

При этом создается автономное настольное приложение с:

  • Серверная служба работает в фоновом режиме
  • Настольное приложение с графическим интерфейсом (SteerDock-frontend.exe)
  • Доступ: Окно настольного приложения.

Вариант 4: Docker Compose (рекомендуется)

# 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

Сборка образа Docker

Быстрая сборка

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

Расширенная сборка Docker

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

  • Автоматическое создание сети сервисов (mysql, redis, steerdock)
  • Правильная конфигурация переменных среды
  • Проверки работоспособности и зависимости служб
  • Управление томами для сохранения данных

Подробности многоэтапной сборки

Dockerfile использует трехэтапный процесс сборки:

  1. Фронтенд-этап: Создает приложение React с помощью Node.js.

    FROM node:20-alpine AS frontend-builder
    # Builds optimized production frontend
  2. Бэкэнд-этап: Компилирует двоичный файл Go

    FROM golang:1.24-alpine AS backend-builder  
    # Creates optimized static binary
  3. Финальный этап: Минимальный образ Alpine с интерфейсом и серверной частью.

    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 с ОЗУ более 2 ГБ

Для развития:

  • Node.js: 20+
  • Идти: 1.24+
  • База данных: MySQL 8.0+ (по умолчанию) / PostgreSQL 15+ / MongoDB 5.0+

🛠️ Технический стек

Бэкэнд

  • Перейти 1.24+ с фреймворком Gin
  • GORM для операций с базами данных
  • JWT-аутентификация
  • WebSocket для обновлений в реальном времени

Внешний интерфейс

  • Реагируйте 18+ с помощью TypeScript
  • Инструмент сборки Vite
  • CSS попутного ветра
  • React Query для управления состоянием
  • 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