A modern Docker container management dashboard with real-time monitoring, automatic update detection, and seamless container updates.
- Real-time Container Monitoring: View all Docker containers with live status updates
- Update Detection: Automatically checks Docker Hub for newer image versions and shows update badges
- Tag Selection: Choose which tag to update to (latest, stable, beta, etc.)
- Container Controls: Start, stop, restart containers directly from the dashboard
- Pull & Recreate: Update containers by pulling the latest image and recreating them
- Pull Image Only: Download the latest image without recreating the container
- Container Logs: View real-time container logs with auto-scroll, download, and stderr highlighting
- Registry Links: Quick links to Docker Hub (or other registries) to view changelogs before updating
- Docker System Info: View Docker version, CPU, memory, and container statistics
- Update Logs: Track all container update operations with version history
- Periodic Check Settings: Configure automatic update check intervals
- Self-Update Detection: Detects when DockerMaid itself needs an update
- Modern UI: Clean, responsive interface built with React and TailwindCSS
docker run -d \
--name dockermaid \
-p 3000:3000 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
souhaibtouati/dockermaid:latestThen open http://localhost:3000
services:
dockermaid:
image: souhaibtouati/dockermaid:latest
container_name: dockermaid
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- API_TOKEN=your-secret-token # Optional: secure the API| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server port |
API_TOKEN |
(none) | Optional API authentication token |
CHECK_INTERVAL |
3600000 |
Update check interval in milliseconds (default: 1 hour) |
AUTO_UPDATE |
false |
Enable automatic container updates |
- Node.js 18+
- Docker (for the backend to manage containers)
- npm or yarn
# Install frontend dependencies
npm install
# Install server dependencies
cd server && npm install && cd ..
# Start both frontend and backend in development mode
npm run dev:allOr run them separately:
# Terminal 1: Start the backend server
npm run dev:server
# Terminal 2: Start the frontend dev server
npm run devThe frontend runs on http://localhost:5173 and proxies API requests to the backend on port 3001.
npm run buildGET /api/health- Check Docker connection status
GET /api/containers- List all containers with update statusGET /api/containers/:id- Get container detailsPOST /api/containers/:id/start- Start a containerPOST /api/containers/:id/stop- Stop a containerPOST /api/containers/:id/restart- Restart a containerGET /api/containers/:id/logs- Get container logs (query:tailfor line count)POST /api/containers/:id/update- Pull latest image and recreate containerPOST /api/containers/update-all- Update all containers with available updates (skips self-update)
GET /api/images- List Docker imagesPOST /api/images/:imageName/pull- Pull latest version of an imageGET /api/images/:imageName/registry-url- Get registry URLs for an image
GET /api/supervisor/status- Get DockerMaid statusGET /api/docker/info- Get Docker system information
GET /api/settings- Get current settingsPUT /api/settings- Update settings (checkInterval, autoUpdate)
GET /api/logs- Get update logsDELETE /api/logs- Clear logs
POST /api/cache/clear- Clear update detection cache
- React 18 + TypeScript
- Vite (rolldown-vite)
- TailwindCSS
- Lucide React icons
- Axios
- Node.js + Express
- Dockerode (Docker API client)
Recommendations:
- Use the
API_TOKENenvironment variable to secure the API - Consider running behind a reverse proxy with authentication
- Only expose to trusted networks
- Use read-only socket mount when possible:
-v /var/run/docker.sock:/var/run/docker.sock:ro
The dashboard shows all containers with their status. When an update is available, a badge appears next to the container name.
View real-time logs from any container with syntax highlighting for stderr messages.
Quick access to Docker Hub or other registries to view available tags and changelogs before updating.
- π Security Fix: Updated dependencies to patch CVE-2024-21538 (cross-spawn), CVE-2025-64756 (glob), CVE-2025-5889 (brace-expansion)
- π§ Dockerfile Hardening: Added
apk upgradeto ensure Alpine packages are up-to-date
- β¨ Smart Update All: "Update All" button now only updates containers with available updates
- β¨ Automatic Latest Tag: Pinned version containers are updated to
latesttag automatically - β¨ Rollback Detection: Cache invalidates when local image changes (detects rollbacks)
- β¨ Self-Update Protection: Batch updates skip DockerMaid to prevent crashes (with manual instructions)
- β¨ Update History Tags: Shows version/tag names in update logs instead of SHA hashes
- π§ GitHub CI/CD: Added workflows for CI and Docker Hub publishing
- π Contributor Docs: Added CONTRIBUTING.md, PR/issue templates, and code of conduct
- π¨ New Branding: Renamed to DockerMaid with new shield logo
- β¨ Tag Selection: Choose which tag to update to (latest, stable, beta, etc.)
- β¨ Self-Update Detection: Detects when DockerMaid container needs updating
- π Fixed Pinned Version Detection: Properly detects updates for containers with pinned version tags
- π Fixed Container Recreation: Preserves all container settings (Cmd, Entrypoint, WorkingDir, etc.)
- β¨ Update Detection: Automatically detects when newer images are available on Docker Hub
- β¨ Container Logs: View container logs in a modal with auto-scroll, refresh, and download
- β¨ Pull Image Only: New button to pull latest image without recreating container
- β¨ Registry Links: Links to Docker Hub to view tags/changelogs before updating
- π Improved error handling and logging for update detection
- β¨ Added periodic update check settings
- β¨ Added version display in footer
- π Fixed authentication for same-origin requests
- π Initial release
- Container monitoring and controls
- Pull & recreate functionality
- Update logs
MIT


