- Added a test case in CrowdSecConfig to show improved error message when preset is not cached. - Introduced a new test suite for the Dashboard component, verifying counts and health status. - Updated SMTPSettings tests to utilize a shared render function and added tests for backend validation errors. - Modified Security.audit tests to improve input handling and removed redundant export failure test. - Refactored Security tests to remove export functionality and ensure correct rendering of components. - Enhanced UsersPage tests with new scenarios for updating user permissions and manual invite link flow. - Created a new utility for rendering components with a QueryClient and MemoryRouter for better test isolation. - Updated go-test-coverage script to improve error handling and coverage reporting.
382 lines
15 KiB
Markdown
382 lines
15 KiB
Markdown
# What Can Charon Do?
|
|
|
|
Here's everything Charon can do for you, explained simply.
|
|
|
|
---
|
|
|
|
## \u2699\ufe0f Optional Features
|
|
|
|
Charon includes optional features that can be toggled on or off based on your needs. All features are enabled by default, giving you the full Charon experience from the start.
|
|
|
|
### What Are Optional Features?
|
|
|
|
**What it does:** Lets you enable or disable major features like security monitoring and uptime checks.
|
|
|
|
**Why you care:** If you don't need certain features, turning them off keeps your sidebar cleaner and saves system resources.
|
|
|
|
**Where to find it:** Go to **System Settings** → Scroll to **Optional Features**
|
|
|
|
### Available Optional Features
|
|
|
|
#### Cerberus Security Suite
|
|
- **What it is:** Complete security system including CrowdSec integration, country blocking, WAF protection, and access control
|
|
- **When enabled:** Cerberus/Dashboard entries appear in the sidebar, all protection features are active
|
|
- **When disabled:** Security menu is hidden, all protection stops, but configuration data is preserved
|
|
- **Default:** Enabled
|
|
|
|
#### Uptime Monitoring
|
|
- **What it is:** Background checks that monitor if your websites are responding
|
|
- **When enabled:** Uptime menu appears in sidebar, automatic checks run every minute
|
|
- **When disabled:** Uptime menu is hidden, background checks stop, but uptime history is preserved
|
|
- **Default:** Enabled
|
|
|
|
### What Happens When Disabled?
|
|
|
|
When you disable a feature:
|
|
|
|
- ✅ **Sidebar item is hidden** — Keeps your navigation clean
|
|
- ✅ **Background jobs stop** — Saves CPU and memory resources
|
|
- ✅ **API requests are blocked** — Feature-specific endpoints return appropriate errors
|
|
- ✅ **Configuration data is preserved** — Your settings remain intact if you re-enable the feature
|
|
|
|
**Important:** Disabling a feature does NOT delete your data. All your security rules, uptime history, and configurations stay safe in the database. You can re-enable features at any time without losing anything.
|
|
|
|
### How to Toggle Features
|
|
|
|
1. Go to **System Settings**
|
|
2. Scroll to the **Optional Features** section
|
|
3. Toggle the switch for the feature you want to enable/disable
|
|
4. Changes take effect immediately
|
|
|
|
**Note:** Both features default to enabled when you first install Charon. This gives you full functionality out of the box.
|
|
|
|
---
|
|
|
|
## \ud83d\udd10 SSL Certificates (The Green Lock)
|
|
|
|
**What it does:** Makes browsers show a green lock next to your website address.
|
|
|
|
**Why you care:** Without it, browsers scream "NOT SECURE!" and people won't trust your site.
|
|
|
|
**What you do:** Nothing. Charon gets free certificates from Let's Encrypt and renews them automatically.
|
|
### Choose Your SSL Provider
|
|
|
|
**What it does:** Lets you select which Certificate Authority (CA) issues your SSL certificates.
|
|
|
|
**Why you care:** Different providers have different rate limits and reliability. You also get a staging option for testing.
|
|
|
|
**Where to find it:** Go to System Settings → SSL Provider dropdown
|
|
|
|
**Available options:**
|
|
|
|
- **Auto (Recommended)** — The smart default. Tries Let's Encrypt first, automatically falls back to ZeroSSL if there are any issues. Best reliability with zero configuration.
|
|
|
|
- **Let's Encrypt (Prod)** — Uses only Let's Encrypt production servers. Choose this if you specifically need Let's Encrypt certificates and have no rate limit concerns.
|
|
|
|
- **Let's Encrypt (Staging)** — For testing purposes only. Issues certificates that browsers won't trust, but lets you test your configuration without hitting rate limits. See [Testing SSL Certificates](acme-staging.md) for details.
|
|
|
|
- **ZeroSSL** — Uses only ZeroSSL as your certificate provider. Choose this if you prefer ZeroSSL or are hitting Let's Encrypt rate limits.
|
|
|
|
**Recommended setting:** Leave it on "Auto (Recommended)" unless you have a specific reason to change it. The auto mode gives you the best of both worlds—Let's Encrypt's speed with ZeroSSL as a backup.
|
|
|
|
**When to change it:**
|
|
- Testing configurations → Use "Let's Encrypt (Staging)"
|
|
- Hitting rate limits → Switch to "ZeroSSL"
|
|
- Specific CA requirement → Choose that specific provider
|
|
- Otherwise → Keep "Auto"
|
|
### Smart Certificate Cleanup
|
|
|
|
**What it does:** When you delete websites, Charon asks if you want to delete unused certificates too.
|
|
|
|
**Why you care:** Custom and staging certificates can pile up over time. This helps you keep things tidy.
|
|
|
|
**How it works:**
|
|
- Delete a website → Charon checks if its certificate is used elsewhere
|
|
- If the certificate is custom or staging (not Let's Encrypt) and orphaned → you get a prompt
|
|
- Choose to keep or delete the certificate
|
|
- Default is "keep" (safe choice)
|
|
|
|
**When it prompts:**
|
|
- ✅ Custom certificates you uploaded
|
|
- ✅ Staging certificates (for testing)
|
|
- ❌ Let's Encrypt certificates (managed automatically)
|
|
|
|
**What you do:**
|
|
- See the prompt after clicking Delete on a proxy host
|
|
- Check the box if you want to delete the orphaned certificate
|
|
- Leave unchecked to keep the certificate (in case you need it later)
|
|
|
|
---
|
|
|
|
## \ud83d\udee1\ufe0f Security (Optional)
|
|
|
|
Charon includes **Cerberus**, a security system that blocks bad guys. It's off by default—turn it on when you're ready. The main page is the **Cerberus Dashboard** (sidebar: Cerberus → Dashboard).
|
|
|
|
### Block Bad IPs Automatically
|
|
|
|
**What it does:** CrowdSec watches for attackers and blocks them before they can do damage. The overview now has a single Start/Stop toggle—no separate mode selector.
|
|
|
|
**Why you care:** Someone tries to guess your password 100 times? Blocked automatically.
|
|
|
|
**What you do:** Add one line to your docker-compose file. See [Security Guide](security.md).
|
|
|
|
### Block Entire Countries
|
|
|
|
**What it does:** Stop all traffic from specific countries.
|
|
|
|
**Why you care:** If you only need access from the US, block everywhere else.
|
|
|
|
**What you do:** Create an access list, pick countries, assign it to your website.
|
|
|
|
### Block Bad Behavior
|
|
|
|
**What it does:** Detects common attacks like SQL injection or XSS.
|
|
|
|
**Why you care:** Protects your apps even if they have bugs.
|
|
|
|
**What you do:** Turn on "WAF" mode in security settings.
|
|
### Zero-Day Exploit Protection
|
|
|
|
**What it does:** The WAF (Web Application Firewall) can detect and block many zero-day exploits before they reach your apps.
|
|
|
|
**Why you care:** Even if a brand-new vulnerability is discovered in your software, the WAF might catch it by recognizing the attack pattern.
|
|
|
|
**How it works:**
|
|
- Attackers use predictable patterns (SQL syntax, JavaScript tags, command injection)
|
|
- The WAF inspects every request for these patterns
|
|
- If detected, the request is blocked or logged (depending on mode)
|
|
|
|
**What you do:**
|
|
1. Enable WAF in "Monitor" mode first (logs only, doesn't block)
|
|
2. Review logs for false positives
|
|
3. Switch to "Block" mode when ready
|
|
|
|
**Limitations:**
|
|
- Only protects web-based exploits (HTTP/HTTPS traffic)
|
|
- Does NOT protect against zero-days in Docker, Linux, or Charon itself
|
|
- Does NOT replace regular security updates
|
|
|
|
**Learn more:** [OWASP Core Rule Set](https://coreruleset.org/)
|
|
|
|
### Configuration Packages
|
|
|
|
- **Hub presets:** Pull presets from the CrowdSec Hub over HTTPS, use cache keys/ETags for faster repeat pulls, preview changes, then apply with an automatic backup and reload flag. Requires Cerberus to be enabled with admin scope; `cscli` is preferred for execution.
|
|
- **cscli availability:** Docker images (v1.7.4+) ship with cscli pre-installed. Bare-metal deployments can install cscli for Hub preset sync or use HTTP fallback with HUB_BASE_URL. Preset pull/apply requires either cscli or cached presets.
|
|
- **Offline/curated:** If the Hub is unreachable or apply is not supported, curated/offline presets remain available.
|
|
- **Validation:** Slugs are validated before apply. Hub errors surface cleanly (503 uses retry or cached data; 400 for bad slugs; apply failures prompt you to restore from the backup).
|
|
---
|
|
|
|
## \ud83d\udc33 Docker Integration
|
|
|
|
### Auto-Discover Containers
|
|
|
|
**What it does:** Sees all your Docker containers and shows them in a list.
|
|
|
|
**Why you care:** Instead of typing IP addresses, just click your container and Charon fills everything in.
|
|
|
|
**What you do:** Make sure Charon can access `/var/run/docker.sock` (it's in the quick start).
|
|
|
|
### Remote Docker Servers
|
|
|
|
**What it does:** Manages containers on other computers.
|
|
|
|
**Why you care:** Run Charon on one server, manage containers on five others.
|
|
|
|
**What you do:** Add remote servers in the "Docker" section.
|
|
|
|
---
|
|
|
|
## \ud83d\udce5 Import Your Old Setup
|
|
|
|
**What it does:** Reads your existing Caddyfile and creates proxy hosts for you.
|
|
|
|
**Why you care:** Don't start from scratch if you already have working configs.
|
|
|
|
**What you do:** Click "Import," paste your Caddyfile, review the results, click "Import."
|
|
|
|
**[Detailed Import Guide](import-guide.md)**
|
|
|
|
---
|
|
|
|
## \u26a1 Zero Downtime Updates
|
|
|
|
**What it does:** Apply changes without stopping traffic.
|
|
|
|
**Why you care:** Your websites stay up even while you're making changes.
|
|
|
|
**What you do:** Nothing special—every change is zero-downtime by default.
|
|
|
|
---
|
|
|
|
## \ud83c\udfa8 Beautiful Loading Animations
|
|
|
|
When you make changes, Charon shows you themed animations so you know what's happening.
|
|
|
|
### The Gold Coin (Login)
|
|
|
|
When you log in, you see a spinning gold coin. In Greek mythology, people paid Charon the ferryman with a coin to cross the river into the afterlife. So logging in = paying for passage!
|
|
|
|
### The Blue Boat (Managing Websites)
|
|
|
|
When you create or update websites, you see Charon's boat sailing across the river. He's literally "ferrying" your changes to the server.
|
|
|
|
### The Red Guardian (Security)
|
|
|
|
When you change security settings, you see Cerberus—the three-headed guard dog. He protects the gates of the underworld, just like your security settings protect your apps.
|
|
|
|
**Why these exist:** Changes can take 1-10 seconds to apply. The animations tell you what's happening so you don't think it's broken.
|
|
|
|
---
|
|
|
|
## \ud83d\udd0d Health Checks
|
|
|
|
**What it does:** Tests if your app is actually reachable before saving.
|
|
|
|
**Why you care:** Catches typos and mistakes before they break things.
|
|
|
|
**What you do:** Click the "Test" button when adding a website.
|
|
|
|
---
|
|
|
|
## \ud83d\udcca Uptime Monitoring
|
|
|
|
**What it does:** Automatically checks if your websites are responding every minute.
|
|
|
|
**Why you care:** Get visibility into uptime history and response times for all your proxy hosts.
|
|
|
|
**What you do:** View the "Uptime" page in the sidebar. Uptime checks run automatically in the background.
|
|
|
|
**Optional:** You can disable this feature in System Settings → Optional Features if you don't need it. Your uptime history will be preserved.
|
|
|
|
---
|
|
|
|
## \ud83d\udccb Logs & Monitoring
|
|
|
|
**What it does:** Shows you what's happening with your proxy.
|
|
|
|
**Why you care:** When something breaks, you can see exactly what went wrong.
|
|
|
|
**What you do:** Click "Logs" in the sidebar.
|
|
|
|
---
|
|
## 🔴 Live Security Logs & Notifications
|
|
|
|
**What it does:** Stream security events in real-time and get notified about critical threats.
|
|
|
|
**Why you care:** See attacks as they happen, not hours later. Configure alerts for WAF blocks, ACL denials, and suspicious activity.
|
|
|
|
### Live Log Viewer
|
|
|
|
**Real-time streaming:** Watch security events appear instantly in the Cerberus Dashboard. Uses WebSocket technology to stream logs with zero delay.
|
|
|
|
**What you see:**
|
|
- WAF blocks (SQL injection attempts, XSS attacks, etc.)
|
|
- CrowdSec decisions (blocked IPs and why)
|
|
- Access control denials (geo-blocking, IP filtering)
|
|
- Rate limit hits
|
|
- All security-related events with full context
|
|
|
|
**Controls:**
|
|
- **Pause/Resume** — Stop the stream to examine specific entries
|
|
- **Clear** — Remove old entries to focus on new activity
|
|
- **Auto-scroll** — Automatically follows new entries (disable to scroll back)
|
|
- **Filter** — Client-side filtering by level, source, or text search
|
|
|
|
**Where to find it:** Cerberus → Dashboard → Live Activity section (bottom of page)
|
|
|
|
**Query parameters:** The WebSocket endpoint supports server-side filtering:
|
|
- `?level=error` — Only error-level logs
|
|
- `?source=waf` — Only WAF-related events
|
|
- `?source=cerberus` — All Cerberus security events
|
|
|
|
### Notification System
|
|
|
|
**What it does:** Sends alerts when security events match your configured criteria.
|
|
|
|
**Where to configure:** Cerberus Dashboard → "Notification Settings" button (top-right)
|
|
|
|
**Settings:**
|
|
- **Enable/Disable** — Master toggle for all notifications
|
|
- **Minimum Log Level** — Only notify for warnings and errors (ignore info/debug)
|
|
- **Event Types:**
|
|
- WAF blocks (when the firewall stops an attack)
|
|
- ACL denials (when access control rules block a request)
|
|
- Rate limit hits (when traffic thresholds are exceeded)
|
|
- **Webhook URL** — Send alerts to Discord, Slack, or custom integrations
|
|
- **Email Recipients** — Comma-separated list of email addresses
|
|
|
|
**Example use cases:**
|
|
- Get a Slack message when your site is under attack
|
|
- Email yourself when ACL rules block legitimate traffic (false positive alert)
|
|
- Send all WAF blocks to your SIEM system for analysis
|
|
|
|
**What you do:**
|
|
1. Go to Cerberus Dashboard
|
|
2. Click "Notification Settings"
|
|
3. Enable notifications
|
|
4. Set minimum level to "warn" or "error"
|
|
5. Choose which event types to monitor
|
|
6. Add your webhook URL or email addresses
|
|
7. Save
|
|
|
|
**Technical details:**
|
|
- Notifications respect the minimum log level (e.g., only send errors)
|
|
- Webhook payloads include full event context (IP, request details, rule matched)
|
|
- Email delivery requires SMTP configuration (future feature)
|
|
- Webhook retries with exponential backoff on failure
|
|
|
|
---
|
|
## \ud83d\udcbe Backup & Restore
|
|
|
|
**What it does:** Saves a copy of your configuration before destructive changes.
|
|
|
|
**Why you care:** If you accidentally delete something, restore it with one click.
|
|
|
|
**What you do:** Backups happen automatically. Restore from the "Backups" page.
|
|
|
|
---
|
|
|
|
## \ud83c\udf10 WebSocket Support
|
|
|
|
**What it does:** Handles real-time connections for chat apps, live updates, etc.
|
|
|
|
**Why you care:** Apps like Discord bots, live dashboards, and chat servers need this to work.
|
|
|
|
**What you do:** Nothing—WebSockets work automatically.
|
|
|
|
|
|
|
|
## \ud83d\udcf1 Mobile-Friendly Interface
|
|
|
|
**What it does:** Works perfectly on phones and tablets.
|
|
|
|
**Why you care:** Fix problems from anywhere, even if you're not at your desk.
|
|
|
|
**What you do:** Just open the web interface on your phone.
|
|
|
|
---
|
|
|
|
## \ud83c\udf19 Dark Mode
|
|
|
|
**What it does:** Easy-on-the-eyes dark interface.
|
|
|
|
**Why you care:** Late-night troubleshooting doesn't burn your retinas.
|
|
|
|
**What you do:** It's always dark mode. (Light mode coming if people ask for it.)
|
|
|
|
---
|
|
|
|
## \ud83d\udd0c API for Automation
|
|
|
|
**What it does:** Control everything via code instead of the web interface.
|
|
|
|
**Why you care:** Automate repetitive tasks or integrate with other tools.
|
|
|
|
**What you do:** See the [API Documentation](api.md).
|
|
|
|
---
|
|
|
|
## Missing Something?
|
|
|
|
**[Request a feature](https://github.com/Wikid82/charon/discussions)** — Tell us what you need!
|