Skip to content

Latest commit

 

History

History
541 lines (393 loc) · 15.2 KB

File metadata and controls

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

Inglés|Chino simplificado|chino tradicional|Español|Francés|Alemán|japonés|portugués|ruso|coreano|árabe|hindi

📸 Capturas de pantalla

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)

✨ Características

🔐 Seguridad y autenticación

  • Autenticación JWT con vencimiento de 24 horas
  • Control de acceso basado en roles (superadministrador/administrador/gerente/usuario/solo lectura)
  • Cifrado de contraseña (SHA-256)
  • Limitación de velocidad y encabezados de seguridad
  • Registro de auditoría completo
  • Compatibilidad con OAuth 2.0 (Google, GitHub)

🗄️ Soporte para múltiples bases de datos

  • MySQL 8.0+ (predeterminado)
  • PostgreSQL 15+
  • MongoDB 5.0+
  • Migración automática de esquemas
  • Agrupación de conexiones

🐳 Gestión de Docker

  • Contenedores: Iniciar, detener, reiniciar, eliminar, crear, inspeccionar
  • Imágenes: Extraer, eliminar, inspeccionar, buscar registros
  • Redes: Crear, eliminar, conectar/desconectar contenedores
  • Volúmenes: Crear, eliminar, inspeccionar, podar
  • Terminal: Acceso al shell en tiempo real con xterm.js
  • Registros: Transmisión de registros de contenedores en tiempo real
  • Estadísticas: Monitoreo del uso de recursos en vivo (CPU, memoria, red, E/S)

🌐 Soporte para múltiples hosts

  • Administrar múltiples hosts Docker
  • Demonios Docker locales y remotos
  • Conexiones SSH y TCP
  • Quick host switching

🎨 Interfaz de usuario moderna

  • Tema oscuro/claro
  • Diseño responsivo
  • Soporte multilingüe (más de 10 idiomas)
  • Atajos de teclado
  • Actualizaciones en tiempo real

🚀 Inicio rápido

La forma más rápida de hacer funcionar 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

Inicio de sesión predeterminado:

  • Nombre de usuario:superadmin
  • Contraseña:superadmin123

⚠️**¡Cambie la contraseña después del primer inicio de sesión!**


Opción 1: Modo de desarrollo (recomendado para desarrollo)

# Linux/macOS
./start-dev.sh

# Windows
.\start-dev.ps1

Acceso:

  • Frontend: http://localhost:5151 (con recarga en caliente)
  • Servidor: http://localhost:8383

Opción 2: Modo de producción

# Linux/macOS
./start-prod.sh

# Windows
.\start-prod.ps1

Acceso:

  • Frontend: http://localhost:5151 (servido por backend)
  • API de back-end: http://localhost:8383/api/v1

Opción 3: Aplicación de escritorio (Windows)

# Windows only
.\win-desktop.ps1

Esto crea una aplicación de escritorio independiente con:

  • Servicio backend ejecutándose en segundo plano
  • Aplicación GUI de escritorio (SteerDock-frontend.exe)
  • Acceso: ventana de la aplicación de escritorio

Opción 4: Docker Compose (recomendado)

# 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

Servicios incluidos:

  • Base de datos MySQL (puerto 3306)
  • Caché de Redis (puerto 6379)
  • Aplicación SteerDock (puerto 8383)

**Importante:**Utilice siempredocker compose up -dpara iniciar todos los servicios juntos. No utilice contenedores individuales condocker run.

Inicio de sesión predeterminado:

  • Nombre de usuario:superadmin
  • Contraseña:superadmin123

⚠️**¡Cambie la contraseña después del primer inicio de sesión!**

� Construcción manual

Construir desde la fuente

# 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

Crear imagen de Docker

Construcción rápida

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

Construcción avanzada de 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 .

Configuración del contenedor

**Importante:**Utilice Docker Compose en lugar de contenedores individuales para una conectividad adecuada de la base de datos.

# 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

Por qué se requiere Docker Compose:

  • Redes de servicios automáticos (mysql, redis, steerdock)
  • Configuración adecuada de variables de entorno
  • Controles de salud y dependencias de servicios.
  • Gestión de volúmenes para la persistencia de datos.

Detalles de construcción de varias etapas

Dockerfile utiliza un proceso de compilación de 3 etapas:

  1. Etapa de interfaz: Crea la aplicación React con Node.js

    FROM node:20-alpine AS frontend-builder
    # Builds optimized production frontend
  2. Etapa de back-end: Compila Ir binario

    FROM golang:1.24-alpine AS backend-builder  
    # Creates optimized static binary
  3. Etapa final: Imagen alpina mínima con frontend y backend

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

Comprobación del estado del contenedor

# 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

Usando el archivo Make

# Build everything
make build

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

# Development mode
make dev

# Production mode  
make prod

📋 Requisitos

  • Estibador: 20.10+ y Docker Compose
  • Sistema: Linux/Windows/macOS con más de 2GB de RAM

Para el desarrollo:

  • Nodo.js: 20+
  • Ir: 1.24+
  • Base de datos: MySQL 8.0+ (predeterminado) / PostgreSQL 15+ / MongoDB 5.0+

🛠️ Pila de tecnología

backend

  • Vaya a 1.24+ con el marco Gin
  • GORM para operaciones de bases de datos
  • autenticación JWT
  • WebSocket para actualizaciones en tiempo real

Interfaz

  • Reaccionar 18+ con TypeScript
  • herramienta de construcción Vite
  • CSS de viento de cola
  • Consulta de reacción para gestión estatal.
  • xterm.js para terminal

👤 Usuarios predeterminados

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

⚠️**¡Cambie todas las contraseñas predeterminadas después del primer inicio de sesión!**

📖 Documentación

🔧 Configuración

Toda la configuración está en.envarchivo (generado automáticamente por el generador de contraseñas):

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

🐞 Solución de problemas

No se puede conectar a 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 conexión a la base de datos falló

# 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

No puedo iniciar sesión

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

Puerto ya en uso

# 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

Errores comunes

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

🏗️ Estructura del proyecto

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

🔒 Mejores prácticas de seguridad

  1. Cambiar contraseñas predeterminadas: Inmediatamente después de la instalación
  2. Utilice contraseñas seguras: Siga los requisitos de la política de contraseñas
  3. Habilitar HTTPS: Utilice certificados SSL/TLS en producción
  4. Actualizaciones periódicas: Mantenga actualizado SteerDock y sus dependencias.
  5. Registros de auditoría: Revise periódicamente los registros de auditoría
  6. Respaldo: Copias de seguridad cifradas periódicas
  7. Aislamiento de red: Utilice firewalls y segmentación de red
  8. Mínimo privilegio: Otorgar los permisos mínimos requeridos

VerSECURITY.mdpara obtener pautas de seguridad detalladas.

🤝 Contribuyendo

¡Las contribuciones son bienvenidas!

  1. Bifurcar el repositorio
  2. Crea tu rama de funciones (git checkout -b feature/amazing-feature)
  3. Confirme sus cambios (git commit -m 'Add amazing feature')
  4. Empuje hacia la rama (git push origin feature/amazing-feature)
  5. Abrir una solicitud de extracción

Proyectos Relacionados

📝 Licencia

Este proyecto tiene la licencia MIT (consulte laLICENCIAarchivo para más detalles.

📧 Soporte

🙏 Agradecimientos


Made with ❤️ by the SteerDock team