Modern, web-based UI for managing Docker containers, services, and projects. Built with Vue.js 3 + Vuetify 3 + Node.js + Express.
- π¨ Modern UI - Responsive design with Vuetify 3 Material Design
- π³ Docker Management - Container, service, and project management
- π Real-time Monitoring - Live updates with Socket.IO
- π§ Service Control - Enable/disable services on the fly
- π Project Management - Create, build, start, stop, and delete projects
- π₯οΈ Web Terminal - Integrated terminal with xterm.js
- π Live Logs - Real-time container logs streaming
version: "3.8"
services:
stackvo-ui:
image: stackvo/stackvo-ui:latest
container_name: stackvo-ui
restart: unless-stopped
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
NODE_ENV: productiondocker-compose up -ddocker run -d \
--name stackvo-ui \
-p 80:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e NODE_ENV=production \
stackvo/stackvo-ui:latestAccess the UI at http://localhost
| Variable | Default | Description |
|---|---|---|
NODE_ENV |
production |
Node.js environment |
STACKVO_ROOT |
/app |
Stackvo root directory |
PROJECTS_DIR |
/app/projects |
Projects directory |
GENERATED_DIR |
/app/generated |
Generated configs directory |
HOST_UID |
1000 |
Host user ID for file ownership |
HOST_GID |
1000 |
Host group ID for file ownership |
80- Nginx (HTTP)
| Volume | Description | Required |
|---|---|---|
/var/run/docker.sock |
Docker socket for API access | β Yes |
/app/projects |
Projects directory | |
/app/generated |
Generated configs | |
/app/logs |
Application logs |
βββββββββββββββββββββββββββββββββββββββ
β Nginx (Port 80) β
β ββββββββββββββββ ββββββββββββββββ β
β β Frontend β β Backend β β
β β (Vue.js 3) β β (Node.js + β β
β β (Vuetify 3) β β Express) β β
β ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββ
β β
β ββββββββββββ
β β
Static Files Docker API
(dist/) (/var/run/docker.sock)
- Vue.js 3 - Progressive JavaScript framework
- Vuetify 3 - Material Design component framework
- Pinia - State management
- Vue Router - Client-side routing
- Socket.IO Client - Real-time communication
- xterm.js - Terminal emulator
- Axios - HTTP client
- Node.js 20 - JavaScript runtime
- Express - Web framework
- Socket.IO - Real-time bidirectional communication
- Dockerode - Docker API client
- node-pty - Terminal emulation
- Nginx - Web server and reverse proxy
- Docker - Containerization
latest- Latest stable release (main branch)develop- Development branchv1.0.0- Specific version (semantic versioning)v1.0- Major.minor version
# Clone repository
git clone https://github.com/stackvo/stackvo-ui.git
cd stackvo-ui
# Build image
docker build -t stackvo-ui:local .
# Run container
docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock stackvo-ui:local# Install dependencies
npm install
# Start development server
npm run dev
# Frontend: http://localhost:5173
# Backend: http://localhost:3000GET /api/projects- List all projectsPOST /api/projects- Create new projectPOST /api/projects/:name/build- Build projectPOST /api/projects/:name/start- Start projectPOST /api/projects/:name/stop- Stop projectDELETE /api/projects/:name- Delete project
GET /api/services- List all servicesPOST /api/services/:name/enable- Enable servicePOST /api/services/:name/disable- Disable service
GET /api/docker/containers- List containersGET /api/docker/images- List imagesGET /api/docker/networks- List networksGET /api/docker/volumes- List volumes
GET /api/tools- List available toolsPOST /api/tools/:name/enable- Enable toolPOST /api/tools/:name/disable- Disable tool
terminal:input- Send input to terminalterminal:resize- Resize terminal
build:progress- Build progress updatesbuild:success- Build completed successfullybuild:error- Build failedterminal:output- Terminal output data
MIT License - see LICENSE file for details.
- GitHub Repository: https://github.com/stackvo/stackvo-ui
- Docker Hub: https://hub.docker.com/r/stackvo/stackvo-ui
- Main Stackvo Project: https://github.com/stackvo/stackvo
- Issues: https://github.com/stackvo/stackvo-ui/issues
Contributions are welcome! Please feel free to submit a Pull Request.
For support, please open an issue on GitHub or contact the Stackvo team.