Installation
The installation wizard takes about two minutes. It collects your Medel Platforms license key, MySQL credentials, app name and URL, and creates the first administrator account.
Requirements
- PHP 8.1+ with these extensions:
mysqli,curl,openssl,mbstring,json,gd,zip. - MySQL 5.7+ or MariaDB 10.3+.
- A web server (Apache, Nginx, IIS) with PHP enabled.
- Your Medel Platforms license key (Get here).
1. Upload the files
Unzip the package and upload the entire folder to your web server's document root, or any subfolder (e.g. https://example.com/vault). The wizard works in both setups.
Make sure these directories are writable by PHP:
app/assets/img/uploads/backups/
2. Run the wizard
Open https://yourdomain.com/install/ in your browser. The setup is a guided 7-step process:
| # | Step | What happens |
|---|---|---|
| 1 | Welcome | Reads VERSION and shows the requirements list. |
| 2 | License key | Live verify call against Medel Platforms. The buyer cannot continue without a valid key. |
| 3 | System requirements | PHP version + extensions + writable paths. |
| 4 | Database | Host, user, password, database name. The wizard creates the database if missing and tests the connection. |
| 5 | Application | App name and public URL. |
| 6 | Admin user | Email, display name, vault PIN (4–8 digits) and PIN confirmation. Passwordless login — no password is stored. |
| 7 | Finish | Applies the schema, creates the admin user via the live vault_v2_init helper, displays the vault recovery code one time, writes app/.installed. |
3. After installation
- The
/install/folder is harmless to keep, but you can safely remove it. The runtime refuses to re-run the wizard onceapp/.installedexists. - Updates are managed inside the admin panel at
/admin/license. Press Check now to query Medel Platforms and Apply update to install a new release.
What the wizard does internally
Step 7 (Finish) is where the heavy work happens. It runs the following pipeline in order, bailing out and reporting if anything fails:
- Generates a cookie encryption key and writes it to
.fortpass-key. - Opens a MySQL connection with the credentials from step 4 and creates the database if it does not exist.
- Executes
install/sql/schema.sqlagainst the new database (the baseline schema for this release). - Writes
app/db.phpwith the buyer's credentials. - Seeds
settingswith the app name, app URL, version, license key and a pre-warmedlicense_cacherow so the first page load doesn't round-trip the API again. - Creates the admin user with
is_admin = 1, hashes the PIN, and callsvault_v2_init()to derive the vault encryption keys and generate the recovery code. - Writes the
app/.installedmarker (JSON with version + timestamp + masked license).
Troubleshooting the install
"License inactive" after install
Open /admin/license, paste a fresh key and click Save key. The license is re-verified live. See License & Updates for details on the cache and grace windows.
The wizard refuses to start
Make sure app/ is writable so the wizard can write the credentials file and the .installed marker. Check the PHP error log for permission errors.
Database errors during install
The user you specified must have CREATE, ALTER, INSERT, UPDATE, DELETE and SELECT privileges on the target database.
I want to start over
Delete the database, delete app/.installed, and reload /install/. The wizard will run again from scratch.