Docs / Help
FAQ & Troubleshooting
Answers to common questions and known issues.
Open a new terminal so the PATH can update. If it still fails, run npm bin -g and add the output directory to your PATH. For Linux users with permission issues, prefix the install command with sudo. Both ezz and easy-devops are registered as bin aliases — either one will launch the CLI.
From the CLI, select Settings from the main menu, then set a new password. This updates dashboardPassword in the SQLite database and takes effect immediately.
HTTP-01 validation requires exclusive access to port 80. Stop nginx before issuing a certificate (Nginx Manager → Stop), then retry. After issuance, Easy DevOps will restart nginx automatically. Alternatively, use DNS-01 which does not require stopping nginx.
The acmeEmail setting registers your ACME account with Let's Encrypt. It is required for certificate issuance — Let's Encrypt uses it to send expiry notifications and account recovery. Set it in Settings before issuing certificates.
Yes — the install.sh script works on macOS. However, the primary tested platforms are Linux and Windows. Community contributions for macOS-specific features are welcome.
From the project directory, run npm run dashboard. This starts the Express + Socket.io server directly. Access it at http://localhost:6443 (or your configured port). Alternatively, run ezz and select 'Open Dashboard' from the main menu.
Let's Encrypt does not support HTTP-01 for wildcard certificates. DNS-01 is the only validation method that can prove control of *.domain.com. Easy DevOps automatically disables HTTP-01 when you enable the wildcard option on a domain.
Since v1.2.1, the database lives in a persistent user directory that survives npm updates — Linux/macOS: ~/.config/easy-devops/easy-devops.sqlite, Windows: %APPDATA%\easy-devops\easy-devops.sqlite. SSL certificates are stored under sslDir (default: /etc/easy-devops/ssl/ on Linux, C:\easy-devops\ssl\ on Windows). If upgrading from v1.0.x, the database is migrated automatically on first run.
The dashboard runs headless (no terminal), so sudo cannot prompt for a password. You need to configure NOPASSWD sudoers rules once. From the CLI: Settings → Setup Linux Permissions. From the dashboard: Settings → Linux Permissions card → enter your password → Setup Permissions. This writes /etc/sudoers.d/easy-devops with NOPASSWD rules for systemctl and the nginx binary.
When nginx -t is run as a non-root user, it prints "syntax is ok" then tries to write /run/nginx.pid — which requires root — causing it to exit with code 1. The config is actually valid. Easy DevOps v1.2.1+ handles this correctly: it checks the output text for "syntax is ok" rather than relying on the exit code alone. If you see this on an older version, upgrade to v1.2.1.
nginx -t only reads configuration files, which are world-readable (644 permissions). It never needs root to validate syntax. Running it with sudo was the source of "a terminal is required" errors in the dashboard. Since v1.2.1, sudo has been removed from all nginx -t calls on every platform.
Still need help? Open an issue on GitHub or reach out for support.