A web-based tool for building, managing, and converting Docker Compose files, configuration files, and schedulers.
Build and manage Docker Compose files with a powerful visual interface:
- Visual Service Builder - Create and configure Docker services with an intuitive UI
- Marketplace Integration - Browse and import popular self-hosted services from GitHub Marketplace
- YAML Validation - Real-time validation and formatting of Compose files
- Live Preview - See YAML output as you build with CodeMirror editor
- Container Settings: Image, name, restart policies, user, working directory
- Networking: Ports (host/container mapping), expose, network modes, DNS, extra hosts
- Storage: Volumes (bind mounts & named volumes), tmpfs, devices
- Environment: Variables (array/dict syntax), env files
- Resources: CPU/memory limits and reservations, health checks
- Security: Privileged mode, capabilities (cap_add/cap_drop), security options, sysctls
- Advanced: Dependencies, labels, commands, entrypoints, ulimits, IPC/PID modes
Built-in support for containerized VPN solutions:
- Tailscale - Zero-config VPN with serve config support
- Newt - Lightweight VPN with Pangolin integration
- Cloudflared - Cloudflare Tunnel support
- WireGuard - Custom WireGuard configurations
- ZeroTier - Software-defined networking
- Netbird - Modern VPN alternative
Configure services to route through VPN containers with automatic network_mode settings.
- Create and configure Docker networks (bridge, host, overlay, macvlan)
- IPAM configuration (driver, subnet, gateway)
- Network driver options
- External network support
- Attachable and internal network flags
- Named volumes with driver configurations
- Driver options (type, device, o flags)
- External volume support
- Volume labels
Convert your Docker Compose files to various formats:
-
Docker Run Commands
- Convert services to
docker runequivalents - Automatically generates all flags and options
- Perfect for debugging or manual deployment
- Convert services to
-
Systemd Service Files
- Generate systemd unit files for services
- Auto-start containers with system boot
- Service management with systemctl
-
.env Files
- Extract environment variables to .env format
- Optional: Clear environment variables from compose after extraction
- Separate sensitive data from compose files
-
Redact Sensitive Data
- Automatically redact passwords, secrets, tokens, and API keys
- Safe sharing of compose files for troubleshooting
- Pattern-based detection of sensitive values
-
Komodo .toml Configuration
- Convert Docker Compose to Komodo deployment format
- Supports Portainer stack imports
- Environment variable extraction
Generate configuration files for popular self-hosted applications:
- Create services configuration YAML
- Define service name, description, icon, URL
- Organize with categories and tags
- Visual editor with live preview
- Copy or download generated config
- Extensible system for additional config types
- YAML-based output
- Template system for common configurations
Create schedulers and automation tasks in multiple formats:
-
Cron Jobs
- Traditional cron syntax
- User and working directory support
- Command scheduling with full flexibility
-
GitHub Actions
- Automated workflow generation
- Cron-based scheduling
- Ready-to-use YAML workflow files
-
Systemd Timers
- Modern alternative to cron
- Service and timer unit files
- OnCalendar syntax support
- Persistent scheduling
- Visual cron expression builder
- Command testing and validation
- Description and metadata support
- Download or copy generated files
- Multi-format export
- Node.js v18 or higher
- npm or yarn
- Optional: Docker (for containerized deployment)
-
Clone the repository
git clone https://github.com/hhftechnology/Dock-Dploy.git cd Dock-Dploy -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser
http://localhost:3000
npm run buildPreview the production build:
npm run serveQuick Deploy
# Clone the repository
git clone https://github.com/hhftechnology/Dock-Dploy.git
cd Dock-Dploy
# Deploy with Docker Compose
docker-compose up -dAccess at: http://localhost:3000
docker-compose.yml configuration:
services:
dock-dploy:
image: hhftechnology/dock-dploy:latest
container_name: dock-dploy
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256MCustom Port:
# Edit docker-compose.yml and change port mapping
ports:
- "8080:3000" # Access on port 8080Using Pre-built Image (when available)
# Pull from Docker Hub
docker pull hhftechnology/dock-dploy:latest
# Run container
docker run -d \
--name dock-dploy \
--restart unless-stopped \
-p 3000:3000 \
-e NODE_ENV=production \
hhftechnology/dock-dploy:latestBuild and Run Locally
# Build image
docker build -t dock-dploy .
# Run container
docker run -d \
--name dock-dploy \
--restart unless-stopped \
-p 3000:3000 \
-e NODE_ENV=production \
dock-dployContainer Management:
# View logs
docker logs dock-dploy
# Stop container
docker stop dock-dploy
# Start container
docker start dock-dploy
# Remove container
docker rm -f dock-dployOne-Click Deploy
Manual Deploy
# Install Vercel CLI
npm install -g vercel
# Deploy
vercelConfiguration:
- The
vercel.jsonis pre-configured for SPA routing - Automatic HTTPS and CDN
- Global edge network deployment
With Nginx
-
Build the project
npm run build
-
Copy dist folder to web root
sudo cp -r dist/* /var/www/html/dock-dploy/ -
Configure Nginx
server { listen 80; server_name dock-dploy.yourdomain.com; root /var/www/html/dock-dploy; index index.html; location / { try_files $uri $uri/ /index.html; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } }
-
Reload Nginx
sudo nginx -t sudo systemctl reload nginx
With Apache
-
Build the project
npm run build
-
Copy dist folder
sudo cp -r dist/* /var/www/html/dock-dploy/ -
Create .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /dock-dploy/ RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /dock-dploy/index.html [L] </IfModule>
-
Enable mod_rewrite
sudo a2enmod rewrite sudo systemctl restart apache2
Netlify
# Build
npm run build
# Drag and drop 'dist' folder to Netlify
# Or use Netlify CLI
npm install -g netlify-cli
netlify deploy --prod --dir=distGitHub Pages
# Build
npm run build
# Deploy to gh-pages branch
npx gh-pages -d distCloudflare Pages
- Connect your GitHub repository
- Build command:
npm run build - Output directory:
dist - Deploy
- Navigate to Docker Compose Builder from the sidebar
- Add a Service:
- Click "Add Service" button
- Enter service name and image
- Configure ports, volumes, environment variables
- Browse Marketplace (optional):
- Click "Browse Compose Marketplace"
- Search for popular services (e.g., Nginx, PostgreSQL, Redis)
- Click "Add All Services" to import
- Configure Networks and Volumes as needed
- Download YAML or copy to clipboard
- Scroll to VPN Configuration section
- Enable VPN toggle
- Select VPN Type (Tailscale, WireGuard, etc.)
- Configure VPN Settings:
- For Tailscale: Auth key, hostname, routes
- For WireGuard: Config path, interface
- For others: Respective configuration options
- Select Services to Route Through VPN
- VPN service is automatically added to your compose file
- Build your compose file
- Click "Utilities" dropdown in the YAML editor
- Select conversion type:
- Docker Run - Get docker run commands
- Systemd Service - Generate unit files
- .env File - Extract environment variables
- Redact Sensitive Data - Safe sharing version
- Komodo .toml - Komodo deployment format
- Copy or Download the generated output
- Validate YAML: Click "Validate YAML" button
- Reformat: Click "Reformat YAML" for consistent formatting
- Real-time syntax highlighting with CodeMirror
- Navigate to Config Builder
- Select "Homepage" config type
- Add Services:
- Name: Service display name
- Description: Service description
- Icon: Icon URL or icon name
- URL: Service URL
- Category (optional): Group services
- Tags (optional): Service tags
- Click "Add Item"
- Download or Copy the generated YAML
- Navigate to Scheduler Builder
- Select "Cron" type
- Enter Details:
- Name: Job identifier
- Schedule: Cron expression (e.g.,
0 */6 * * *) - Command: Command to execute
- User: User to run as (default: root)
- Working Dir: Path to execute from
- Download or Copy the cron entry
- Select "GitHub Actions" type
- Configure:
- Name: Workflow name
- Schedule: Cron expression
- Command: Steps to execute
- Download
.github/workflows/scheduled.yml
- Select "Systemd Timer" type
- Configure:
- Name: Service name (e.g., backup)
- Schedule: Cron or OnCalendar format
- Command: Command to execute
- User: Service user
- Working Dir: Execution path
- Download both
.serviceand.timerfiles - Install:
sudo cp *.service /etc/systemd/system/ sudo cp *.timer /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now backup.timer
- React 19 - UI library
- TypeScript 5.7 - Type safety
- Vite 6 - Build tool and dev server
- TanStack Router - Type-safe routing
- Tailwind CSS 4 - Utility-first CSS
- Radix UI - Accessible component primitives
- Lucide React - Icon library
- CodeMirror - Code editor with YAML syntax highlighting
- js-yaml - YAML parsing and generation
- Zod 4 - Schema validation
- Vitest - Unit testing framework
- Testing Library - React testing utilities
- Vite - Lightning-fast builds
- TypeScript - Strict type checking
- Docker - Containerization
- Nginx - Production web server
Contributions are welcome! Here's how you can help:
- Check existing issues
- Create a new issue with:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Open an issue with the
enhancementlabel - Describe the feature and use case
- Discuss implementation approach
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
npm test npm run build - Commit with descriptive messages
git commit -m "Add amazing feature" - Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request
- Follow existing code style
- Add TypeScript types
- Update documentation
- Write tests for new features
- Keep commits focused and atomic
- Marketplace Services - hhftechnology/Marketplace
- Shadcn UI - Beautiful, accessible components
- Radix UI - Accessible component primitives
- TanStack - Type-safe routing
- Vite - Next generation frontend tooling
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Multi-file compose project support
- Import from existing compose files
- Template library
- Docker Swarm support
- Kubernetes manifest generation
- Visual network diagram
- Service health monitoring
- Compose file diff viewer
- More config builder types
- Advanced VPN configurations
Made with ❤️ for the self-hosting community
If you find this project useful, please consider giving it a star on GitHub!