- Added comprehensive tests for CrowdSec configuration, including preset application and validation error handling. - Introduced new test cases for importing CrowdSec configurations, ensuring backup creation and successful import. - Updated existing tests to reflect changes in UI elements and functionality, including toggling CrowdSec mode and exporting configurations. - Created utility functions for building export filenames and handling downloads, improving code organization and reusability. - Refactored existing tests to use new test IDs and ensure accurate assertions for UI elements and API calls.
Charon
Your websites, your rules—without the headaches.
Turn multiple websites and apps into one simple dashboard. Click, save, done. No code, no config files, no PhD required.
Why Charon?
You want your apps accessible online. You don't want to become a networking expert first.
The problem: Managing reverse proxies usually means editing config files, memorizing cryptic syntax, and hoping you didn't break everything.
Charon's answer: A web interface where you click boxes and type domain names. That's it.
- ✅ Your blog gets a green lock (HTTPS) automatically
- ✅ Your chat server works without weird port numbers
- ✅ Your admin panel blocks everyone except you
- ✅ Everything stays up even when you make changes
What Can It Do?
🔐 Automatic HTTPS — Free certificates that renew themselves 🛡️ Optional Security — Block bad guys, bad countries, or bad behavior 🐳 Finds Docker Apps — Sees your containers and sets them up instantly 📥 Imports Old Configs — Bring your Caddy setup with you ⚡ No Downtime — Changes happen instantly, no restarts needed 🎨 Dark Mode UI — Easy on the eyes, works on phones
Quick Start
Docker Compose (Recommended)
Save this as docker-compose.yml:
services:
charon:
image: ghcr.io/wikid82/charon:latest
container_name: charon
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
- "8080:8080"
volumes:
- ./charon-data:/app/data
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CHARON_ENV=production
Then run:
docker-compose up -d
Docker Run (One-Liner)
docker run -d \
--name charon \
-p 80:80 \
-p 443:443 \
-p 443:443/udp \
-p 8080:8080 \
-v ./charon-data:/app/data \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e CHARON_ENV=production \
ghcr.io/wikid82/charon:latest
What Just Happened?
- Charon downloaded and started
- The web interface opened on port 8080
- Your websites will use ports 80 (HTTP) and 443 (HTTPS)
Open http://localhost:8080 and start adding your websites!
Optional: Turn On Security
Charon includes Cerberus, a security guard for your apps. It's turned off by default so it doesn't get in your way.
When you're ready, add these lines to enable protection:
environment:
- CERBERUS_SECURITY_WAF_MODE=monitor # Watch for attacks
- CERBERUS_SECURITY_CROWDSEC_MODE=local # Block bad IPs automatically
Start with "monitor" mode — it watches but doesn't block. Once you're comfortable, change monitor to block.
Learn about security features →
Getting Help
📖 Full Documentation — Everything explained simply 🚀 5-Minute Guide — Your first website up and running 💬 Ask Questions — Friendly community help 🐛 Report Problems — Something broken? Let us know
Contributing
Want to help make Charon better? Check out CONTRIBUTING.md
✨ Top Features
MIT License · Documentation · Releases
Built with ❤️ by @Wikid82
Powered by Caddy Server
