A modern, cross-platform GUI application for managing Caddy web server configurations. Built with Flutter, this application provides an intuitive interface for managing your Caddy server without dealing directly with JSON configurations.
- 🌲 Tree-based Config Editor: Visualize and edit your Caddy configuration in a hierarchical tree view
- 🔍 Smart Search: Quickly find and navigate to specific configuration sections
- 🔄 Live Configuration: Apply changes to your running Caddy server without restart
- 📊 Server Status Monitoring: Real-time monitoring of your Caddy server status
- 🔐 PKI Certificate Management: Manage SSL/TLS certificates directly from the UI
- 🔄 Reverse Proxy Management: Configure and monitor reverse proxy upstreams
- 💾 Config Import/Export: Easily backup and restore your Caddy configurations
- 🌐 Cross-Platform: Runs on Android, iOS, Linux, macOS, and Windows
Try out Caddy UI directly in your browser at https://makinghappen.github.io/caddy-ui
Download the latest release for your platform from the Releases page.
- Flutter SDK ≥3.5.3
- Dart SDK ≥3.0.0
- Caddy Server ≥2.0.0
- Clone the repository:
git clone https://github.com/makinghappen/caddy-ui.git
cd caddy-ui
- Install dependencies:
flutter pub get
- Run the application:
flutter run
- Create a Caddyfile:
mkdir caddy-data
echo "localhost:80 {
respond \"Hello, World!\"
}" > Caddyfile
- Run Caddy with Docker:
docker run -d \
--name caddy \
-p 80:80 \
-p 443:443 \
-p 2019:2019 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
-v caddy_config:/config \
caddy:2-alpine
Create a docker-compose.yml
:
version: '3.7'
services:
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
- "2019:2019"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
volumes:
caddy_data:
caddy_config:
Run with:
docker-compose up -d
- Start your Caddy server (either locally or in Docker)
- Launch Caddy UI
- Connect to your Caddy server's API endpoint (default: http://localhost:2019)
- Start managing your Caddy configuration through the intuitive interface
- View Configuration: Use the tree view to navigate through your Caddy config
- Edit Configuration: Click on any node to modify its values
- Search: Use the search bar to find specific configuration elements
- Apply Changes: Changes are automatically applied to your running Caddy server
- Monitor Status: View server status and running configuration in real-time
The project uses GitHub Actions for continuous integration and deployment:
- Automated Testing: Every push and pull request triggers automated tests
- Web Deployment: Changes to main branch are automatically deployed to GitHub Pages
- Release Builds: Creating a new release automatically builds and uploads binaries for:
- Linux (.tar.gz)
- Windows (.zip)
- macOS (.zip)
lib/
├── src/
│ ├── models/ # Data models
│ ├── services/ # Business logic and API services
│ └── ui/ # UI components and pages
│ └── config_editor/ # Configuration editor components
flutter test
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Caddy Server for the amazing web server
- Flutter for the cross-platform framework