Requirements
PHP 8.3+ with pdo_mysql or pdo_sqlite, mbstring, openssl, tokenizer, xml, ctype, json, and intl.
MySQL or MariaDB for production. SQLite is fine for evaluation. Point the web server document root at public/. Add one cron entry for SSL checks, reminders, and queued mail.
Composer 2 and Node.js 20+ are only needed when installing from source. The release archive already includes PHP dependencies and compiled frontend assets.
Release archive and web installer
Download the latest duvento.zip, extract it, point nginx or Apache at public/, and give the PHP user write access to the project root (for .env), storage/, and bootstrap/cache/.
Open the site. Duvento redirects to /install. The wizard is: language → server check → database → migrations → administrator. Save the generated admin URL and add the cron line shown at the end.
After a successful install, /install returns 404 (lock file, or an existing user/admin) and cannot reset the instance. The wizard writes .env with mode 0600, sets APP_DEBUG=false, generates an app key, and stores a private admin path. The administrator password must be at least 10 characters with letters and digits. The installer is rate-limited.
Install from source
Clone the repository, then run:
composer install --no-dev --optimize-autoloader
npm install
npm run build
cp .env.example .env
php artisan key:generate
php artisan migrate --force
php artisan duvento:installConfigure the database in .env before migrating. duvento:install creates the first workspace owner and a system administrator, and writes a private admin path. Do not run database seeders on a production instance.
Optional Docker
docker-compose.yml is optional. Build Composer/npm assets on the host first. The compose file runs PHP 8.3, MariaDB 11, the app on port 8090, and a separate scheduler container. It is not a one-command production image.