Features
Everything you need to manage a production web server from one tool.
Nginx Management
Start, stop, reload, and view error logs. Built-in config editor. Automatic installation via apt-get (Linux) or winget (Windows).
SSL Certificates
Issue and renew Let's Encrypt certs via acme-client. Supports HTTP-01, DNS-01, wildcard certs, and expiry tracking with color-coded status badges.
Domain Management
Reverse proxy configs with SSL, external URL backends, wildcard domains, WebSocket support, gzip, rate limiting, security headers, and custom timeouts.
Notifications
Named Discord and Telegram channels configured once and assigned per domain per event type. State-aware dispatch prevents spam — alerts fire only on status changes. Recovery notifications sent when services come back online.
Node.js Manager
Switch Node.js versions via nvm or nvm-windows. Install/uninstall global npm packages. Update npm automatically.
Log Viewer
Stream nginx error.log and access.log in real time via Socket.io. Toggle between logs, auto-scroll, pause/resume, and colour-coded output.
SQLite Storage
Persistent configuration stored in a single SQLite database file in your home directory. Survives npm updates. No separate database server required.
Bootstrap Installer
One-line installers for Linux and Windows that auto-detect Node.js, install nvm if needed, and register the global command.
Themed Dashboard
Dark and light modes with 5 accent colors (teal, violet, amber, rose, cyan). Settings persist in localStorage.
Real-time Updates
Socket.io powered live updates: nginx status every 5 s, domain health badges every 60 s, cert expiry on connect and every 12 hours.
Notifications
Easy DevOps can send alerts to Discord and Telegram when something goes wrong — and again when it recovers. Channels are registered once in Settings → Notifications and then assigned to domains per event type.
- Named channel registry — each Discord webhook or Telegram bot gets a name and UUID. Edit or delete from the Notifications tab without touching domain configs.
- Per-domain assignment — open a domain and expand the Notifications section. Independently toggle
cert_expiryanddomain_health, and check which channels receive each event. - Global nginx_down — not tied to any single domain. Fires when nginx stops running. Routes to the union of all channels configured across all domains.
- Deduplication — the state machine only fires on transitions: up → down sends an alert; still down is silent; down → up sends a recovery notification.
- Discord role mentions — add a message prefix (e.g.
<@&RoleId>) to a Discord channel. It is sent as the webhookcontentfield so Discord resolves the mention correctly. - Test button — send a live test notification from the channel list without waiting for a real event.
Domain Configuration Options
- Backend: local host:port (
127.0.0.1:3000) or full external URL (https://app.vercel.app) - Wildcard domain (
*.example.com) — auto-enforces DNS-01 SSL validation - SSL/HTTPS with certificate management
- WebSocket support (
wsupstream type) - Gzip compression
- Rate limiting (requests/second + burst)
- Security headers (X-Frame-Options, etc.)
- Custom timeout and body size limits
- Domain-specific access logs
- Per-domain notification config — choose which channels receive cert_expiry and domain_health alerts for each domain individually