A Professional, Self-Hosted Docker Compose Management Dashboard
Beautiful β’ Secure β’ Easy to Use
Features β’ Installation β’ Usage β’ Screenshots β’ License
DockMaster-PHP is a production-ready, self-hosted web application for managing Docker containers and Docker Compose stacks. Built with modern web technologies and a stunning dark-mode interface, it provides an intuitive way to deploy, monitor, and manage your containerized applications.
π€ Krzysztof Siek
π§ Email: krzysiek@sieekuu.xyz
π
Year: 2026
βοΈ License: MIT
- π¦ Project Management - Deploy, start, stop, restart, and delete Docker Compose projects
- π Real-Time Monitoring - Live CPU and memory usage statistics with Chart.js
- π Log Viewer - Real-time log streaming from containers
- βοΈ YAML Editor - Built-in Ace Editor for editing docker-compose.yml files
Pre-configured templates for popular applications:
- π WordPress - Popular CMS with MySQL
- π Nginx Proxy Manager - Reverse proxy with SSL
- βοΈ Nextcloud - Self-hosted file sync and share
- π³ Portainer - Docker management UI
- π Traefik - Modern reverse proxy
- ποΈ MySQL - Relational database
- π PostgreSQL - Advanced database
- β‘ Redis - In-memory data store
- Scan ports 8000-9000 in real-time
- Visual grid showing free (π’) and taken (π΄) ports
- Click to select and copy port numbers
- Smart port picker for deployment wizard
- Dark Mode - Cyberpunk-inspired glassmorphism design
- Responsive - Works on desktop, tablet, and mobile
- Animated - Smooth transitions and hover effects
- Accessible - Clean, intuitive interface
- Authentication - Simple username/password login
- Input Validation - All user inputs are sanitized
- Secure Commands - Shell commands properly escaped using
escapeshellarg() - Session Management - Time-limited sessions with auto-logout
- PHP 8.2+ with CLI access
- Docker and Docker Compose installed
- Web Server (Apache/Nginx) or PHP built-in server
- Linux/Unix system (tested on Ubuntu/Debian)
git clone https://github.com/sieekuu/dockmaster-php.git
cd dockmaster-php# Make sure the web server can write to necessary directories
chmod -R 755 public/
chmod -R 755 src/
mkdir -p projects data
chmod -R 777 projects data
# IMPORTANT: Add web server user to docker group
sudo usermod -aG docker www-data
sudo systemctl restart apache2 # or nginxEdit config.php to customize settings:
// Change the default password!
define('AUTH_PASSWORD', password_hash('your_secure_password', PASSWORD_BCRYPT));
// Adjust port scanning range if needed
define('PORT_SCAN_START', 8000);
define('PORT_SCAN_END', 9000);
// Set your timezone
date_default_timezone_set('Europe/Warsaw');Option A: PHP Built-in Server (Development)
cd public
php -S 0.0.0.0:8080Then visit: http://localhost:8080
Option B: Apache Configuration (Production)
<VirtualHost *:80>
ServerName dockmaster.example.com
DocumentRoot /var/www/dockmaster-php/public
<Directory /var/www/dockmaster-php/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dockmaster-error.log
CustomLog ${APACHE_LOG_DIR}/dockmaster-access.log combined
</VirtualHost>Option C: Nginx Configuration (Production)
server {
listen 80;
server_name dockmaster.example.com;
root /var/www/dockmaster-php/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}Default credentials:
- Username:
admin - Password:
dockmaster(change this immediately!)
The main dashboard displays:
- Statistics Cards - Active projects, port usage, resource metrics
- Project List - All Docker Compose projects with status
- Resource Charts - CPU and memory usage visualization
- Quick Actions - Start, stop, restart, view logs, delete
- Click "Deploy App" in the navigation
- Choose a template from the App Store, or write custom YAML
- Configure variables (domain, ports, passwords)
- Review generated
docker-compose.yml - Click "Deploy Now"
When configuring a template:
- Click the "π Pick Port" button next to a port field
- View the port grid (green = free, red = taken)
- Click a free port to select it
- Port is automatically copied to clipboard
From the dashboard:
βΆοΈ Start - Start a stopped project- π Restart - Restart a running project
- βΈοΈ Stop - Stop a running project
- π Logs - View container logs in real-time
- ποΈ Delete - Remove project completely
DockMaster-PHP/
βββ config.php # Main configuration file
βββ LICENSE # MIT License
βββ README.md # This file
βββ src/ # Backend PHP classes
β βββ DockerService.php # Docker command wrapper
β βββ PortManager.php # Port scanning logic
β βββ TemplateManager.php # App template manager
βββ public/ # Web-accessible files
β βββ index.php # Dashboard (main page)
β βββ deploy.php # Deployment wizard
β βββ api.php # AJAX API endpoint
β βββ assets/
β βββ css/
β β βββ style.css # Custom styling
β βββ js/
β βββ app.js # Frontend JavaScript
βββ projects/ # Docker Compose projects
βββ data/ # Application data
- Change Default Password - Edit
config.phpimmediately after installation - HTTPS Recommended - Use SSL/TLS in production (Let's Encrypt, Cloudflare)
- Firewall Rules - Restrict access to management ports
- Docker Socket - Be aware that access to Docker socket = root access
- Regular Updates - Keep PHP, Docker, and system packages updated
- File Permissions - Ensure only web server can write to
projects/anddata/
| Component | Technology |
|---|---|
| Backend | PHP 8.2+ (Strict Types, OOP) |
| Frontend | Bootstrap 5 (Dark Theme), Vanilla JS (ES6) |
| Code Editor | Ace Editor 1.32+ |
| Charts | Chart.js 4.4+ |
| Database | SQLite (for app data) |
| Container Runtime | Docker + Docker Compose |
# Add your user to docker group
sudo usermod -aG docker $USER
newgrp docker
# Add web server user to docker group
sudo usermod -aG docker www-data
sudo systemctl restart apache2# Find what's using a port
sudo lsof -i :8080
# or
sudo netstat -tulpn | grep 8080
# Kill the process
sudo kill -9 <PID>sudo apt-get install php8.2-cli php8.2-mbstring php8.2-sqlite3- Multi-user support with roles
- Docker Swarm support
- Backup/restore functionality
- Webhook integrations
- Email notifications
- Custom template creation UI
- Docker network management
- Volume management interface
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2026 Krzysztof Siek <krzysiek@sieekuu.xyz>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
Krzysztof Siek
π§ krzysiek@sieekuu.xyz
For bug reports and feature requests, please use the GitHub Issues page.
Made with β€οΈ and β by Krzysztof Siek
β Star this repository if you find it useful!