Files
dashcaddy/dashcaddy-installer
Krystie cd3d0cd8ff
CI / Test & Lint (push) Canceled after 0s
CI / Security audit (push) Canceled after 0s
feat: VM disk sandboxing — bounded virtual disk per platform
ARCHITECTURE:
- Windows: dedicated WSL2 distro with fixed VHDX, Docker inside
- macOS: Lima VM with fixed disk, Docker inside
- Linux: sparse ext4 loopback image, Docker data-root inside

NEW FILES:
- vm-provisioner.js: core provisioning engine (create/start/destroy/export)
  - Disk presets: Minimal(10GB), Balanced(30GB), Power(100GB), Custom
  - Sparse images that grow on demand (start at ~0 bytes)
  - Full lifecycle: provision → deploy DashCaddy → destroy (clean removal)
  - Data export before uninstall for users who want to migrate
- vm-ipc.js: Electron IPC handlers connecting wizard to provisioner
  - vm:provision, vm:destroy, vm:get-status, vm:export-data, vm:get-presets
- disk-budget-step.js: wizard UI step with preset cards + custom slider
  - Real-time free space check against selected disk size
  - Plain English description of what each tier handles

UPDATED:
- caddyfile-generator.js: docker-compose now includes disk safety env vars
  (health retention, stats caps, memory limits) as defense-in-depth
  even inside the VM sandbox

GUARANTEE: DashCaddy physically cannot exceed the storage budget.
The OS enforces the limit at the disk/image level, not our code.
2026-08-12 23:02:51 -07:00
..
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00

DashCaddy Installer

A cross-platform Electron application that provides a guided installation wizard for DashCaddy - the unified management platform for Docker containers and Caddy reverse proxy.

Features

  • 🎯 Guided 5-Step Wizard - Simple, intuitive installation process
  • 🔍 Automatic Dependency Detection - Checks for Docker and Caddy
  • 📦 One-Click Dependency Installation - Installs missing requirements
  • 🖥️ Cross-Platform Support - Windows, macOS, and Linux
  • 📁 Smart File Deployment - Copies and configures all necessary files
  • ⚙️ Auto-Configuration - Generates Caddyfile and docker-compose.yml
  • 🚀 Service Management - Starts services and opens dashboard
  • 💾 Configuration Persistence - Saves settings for upgrades
  • 🎨 Modern UI - Clean, responsive interface with progress tracking

🚀 Quick Start

For End Users

  1. Download the installer for your platform
  2. Run the executable (portable, no installation needed)
  3. Follow the wizard steps
  4. Access your dashboard at http://localhost:8080

See QUICK_START.md for detailed user instructions.

For Developers

# Install dependencies
npm install

# Run in development mode with DevTools
npm run dev

# Build for Windows
npm run build:win

See BUILD_GUIDE.md for comprehensive build instructions.

📋 System Requirements

  • Operating System: Windows 10/11, macOS 10.15+, or Linux
  • RAM: 4GB minimum, 8GB recommended
  • Disk Space: 2GB free space
  • Dependencies: Docker and Caddy (installer can install these)

🏗️ Project Structure

dashcaddy-installer/
├── src/
│   ├── main/                      # Electron main process
│   │   ├── index.js              # Main entry & IPC handlers
│   │   ├── dependency-checker.js # Docker/Caddy detection
│   │   ├── config-manager.js     # Configuration management
│   │   ├── file-deployer.js      # File copying & deployment
│   │   ├── caddyfile-generator.js # Config generation
│   │   ├── browser-launcher.js   # Browser integration
│   │   └── service-manager.js    # Service control
│   ├── renderer/                  # UI layer
│   │   ├── index.html            # Main HTML
│   │   ├── wizard.js             # Wizard logic
│   │   └── styles.css            # Styling
│   ├── preload/                   # IPC bridge
│   │   └── index.js              # Secure IPC exposure
│   └── shared/                    # Shared utilities
│       ├── constants.js          # App constants
│       └── platform-utils.js     # Platform detection
├── templates/                     # Configuration templates
│   ├── Caddyfile.template        # Caddyfile template
│   ├── docker-compose.template.yml
│   └── README.md
├── assets/                        # Images & icons
│   ├── icon.png                  # App icon
│   └── dashcaddy-logo.png
├── dist/                          # Build output (generated)
├── BUILD_GUIDE.md                 # Comprehensive build guide
├── QUICK_START.md                 # User quick start guide
└── package.json                   # Dependencies & config

🛠️ Development

Setup

# Clone the repository
git clone <repository-url>
cd dashcaddy-installer

# Install dependencies
npm install

Running

# Development mode with DevTools
npm run dev

# Production mode
npm start

Testing

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run property-based tests
npm test -- --testNamePattern="property"

Building

# Build for current platform
npm run build

# Build for specific platforms
npm run build:win    # Windows
npm run build:mac    # macOS
npm run build:linux  # Linux

Build Output:

  • Windows: dist/win-unpacked/DashCaddy Installer.exe (168MB portable)
  • macOS: dist/DashCaddy Installer.dmg
  • Linux: dist/DashCaddy Installer.AppImage

📖 Documentation

🎯 Installation Wizard Steps

1. Welcome

  • Introduction to DashCaddy
  • Platform detection
  • Feature overview

2. Choose Folders

  • Select installation directory
  • Configure Docker data path
  • Set Caddy config location

3. Check Dependencies

  • Detect Docker installation
  • Detect Caddy installation
  • Install missing dependencies

4. Installation

  • Deploy dashboard files
  • Deploy API server
  • Install npm dependencies
  • Generate configurations
  • Start services

5. Complete

  • Installation summary
  • Dashboard URL
  • Quick access button

🔧 Configuration

Source Directories

The installer copies files from:

  • Dashboard: ../status/{install}/dashboard/
  • API Server: ../dashcaddy-api/{install}/api/

Generated Files

The installer creates:

  • Caddyfile - Reverse proxy configuration
  • docker-compose.yml - Container orchestration
  • .dashcaddy-config.json - Installation settings

Default Ports

  • Dashboard: 8080
  • API Server: 3001
  • Caddy Admin: 2019

🐛 Troubleshooting

Build Issues

  • Ensure Node.js 18+ is installed
  • Delete node_modules and run npm install
  • Check that source directories exist

Runtime Issues

  • Run with npm run dev to see console errors
  • Check that Docker daemon is running
  • Verify Caddy is installed and accessible
  • Ensure ports 8080, 3001, 2021 are available

Deployment Issues

  • Verify source paths in file-deployer.js
  • Check write permissions on installation directory
  • Ensure sufficient disk space

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

📝 License

MIT

🙏 Acknowledgments

Built with: