Installation
CVN ERP installs with a guided web installer, install.php, that takes about two minutes once the server is ready.
1. Put the files in place
Unpack the release so your web root points at it, with a writable secure_data/ folder beside it (see Requirements). The PHP-FPM user must be able to write to secure_data/, or to its parent so the installer can create it.
2. Set up Nginx
-
Copy
deploy/nginx.conf.exampleinto your Nginx sites, then setserver_nameandroot. -
The sample does not route
install.php, so it returns 404 by default. For the install only, add the location block shown in the comment above the "No other PHP" rule in that file. -
Test and reload Nginx:
sudo nginx -t && sudo systemctl reload nginx
3. Run the installer
Open https://your-domain/install.php and work through the four steps:
- Server requirements. The installer checks PHP 8.4, each required extension and that
secure_data/is writable. It then writes a one-time install code tosecure_data/install-token.txt. Open that file on the server and paste the code. It proves you control the server. - Licence key. Enter your key. It is activated for the domain you are installing on.
- Database. Enter the host, port, database name, user and password. The installer tests the connection and creates the database if the user is allowed to.
- Administrator account. Your business name (optional), your email, your name and a password of at least 8 characters. This is the first super-admin.
The installer then writes secure_data/secrets.php with the database details and a new app secret, and opens the app once so it creates every table.
4. Lock it down
- Remove the temporary
install.phplocation from Nginx and reload, or deleteinstall.phpfrom the server. - Even if you forget, the installer is locked: once
secrets.phpexists it refuses every step.
5. Sign in
Open https://your-domain/admin/ and sign in with the account you created. Continue with First sign-in and setup.
Tables and upgrades
You never run migrations by hand. The app creates its tables on the first request and adds new columns automatically after each update. Every table is prefixed CVN_.