System & Hosting Requirements
5 min read
These are the requirements the Academy & Exam OS installer checks before it installs anything. They describe the environment version 1.0.2 was tested in; environments outside this list are not claimed to work.
Hosting at a glance #
Academy & Exam OS works on compatible shared hosting, cloud hosting and VPS hosting. A VPS is not required when your hosting meets the requirements below. Not every hosting plan or configuration meets them, so the built-in installer checks compatibility first and names anything that is missing before it writes anything.
Your server needs:
- PHP 8.3 or PHP 8.4.
- The PHP extensions
intl,mbstring,bcmath,pdo_mysql,fileinfo,openssl,gd,sodium,curl,jsonandctype. - MySQL 8.0 or newer, or MariaDB 10.11, 11.4 or 11.8 (the certified MariaDB versions).
- A database user with the required privileges, including
TRIGGER. - HTTPS.
.htaccess/ URL rewriting.- The ability to run an every-minute cron job.
Tip: The
sodiumextension is often switched off by default in hosting panels. Enable it for the PHP version your site uses.
Composer and Node.js are not required on the server. Everything the application needs is already inside the Web/ folder of your download.
PHP #
| Requirement | Value |
|---|---|
| PHP version | PHP 8.3 or 8.4. PHP 8.2 is refused; PHP 8.5 and later are refused as untested. |
| Extensions | intl, mbstring, bcmath, pdo_mysql, fileinfo, openssl, gd, sodium, curl, json, ctype. The installer’s requirements page names any missing extension. |
| PHP for cron jobs | The PHP that runs the scheduled tasks must have the same version and extensions as the website. |
memory_limit | 256 MB recommended. 128–255 MB works with a warning; below 128 MB the installer refuses. |
upload_max_filesize | 250M for the full media range (videos up to 250 MB). Lower values give a warning and lower the largest file staff can upload. |
post_max_size | 260M for the full range (it must be larger than the upload size). Lower values give a warning with the same effect. |
max_execution_time | The usual shared-hosting default is fine; long imports and exports run in the background worker. |
| Sessions | PHP file sessions (the default session.save_path must be writable). |
If an installed site loses a required extension (for example after a hosting change), every page shows Server requirements not met with the extension’s name until you enable it again.
Database #
| Requirement | Value |
|---|---|
| MySQL | MySQL 8.0 or newer. MySQL 8.4 is the tested version. |
| MariaDB | MariaDB 10.11, 11.4 and 11.8 (tested with 10.11.19, 11.4.9 and 11.8.9). Other MariaDB series, including older ones, are refused by the installer as not certified. |
| Character set | utf8mb4. Every product table is created as utf8mb4_unicode_ci, whatever the server default is. |
sql_mode | The application switches its own connections to strict mode, so a non-strict server default only gives a warning. ANSI_QUOTES, NO_BACKSLASH_ESCAPES, PIPES_AS_CONCAT and NO_AUTO_VALUE_ON_ZERO in the server default are refused. |
| Privileges | SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP, TRIGGER, REFERENCES on the application database, held directly or through the user’s default role. |
| Binary logging | If binary logging is on and the user has no SUPER privilege, the server needs log_bin_trust_function_creators = 1 for the triggers the schema creates. The installer diagnoses this. On typical shared hosting binary logging is off and the TRIGGER privilege is enough. |
Use a dedicated, empty database and a dedicated database user with exactly the privileges above. In most hosting panels, giving the user “all privileges” on the database includes TRIGGER.
Web server #
- HTTPS is required for production installations. The installer refuses plain HTTP on a public host.
- Apache 2.4 with
mod_rewriteandAllowOverride All, LiteSpeed with.htaccesssupport, or nginx with every request routed towebroot/index.php. - Recommended document root:
Web/webroot/. On shared hosting that serves the upload folder, upload the contents ofWeb/instead; the shipped.htaccessfiles route requests intowebroot/and block the private folders. See Installing Academy & Exam OS. - Writable folders:
Web/tmp/,Web/logs/,Web/storage/, andWeb/config/during the installation. - Outbound HTTPS from PHP (curl and OpenSSL with a working CA bundle) for the optional integrations: AI providers, Google Sign-In, SMTP with TLS and payment providers.
- Single Site and Multi Site only: outbound HTTPS to the OsDot licence server. The installer lists it on the requirements page.
Scheduled tasks (cron) #
Your hosting must be able to run PHP from the command line every minute (cron on Linux, or the cron feature of your hosting panel). The scheduled tasks need the same PHP 8.3 or 8.4 and the same extensions as the website. Use the command-line PHP binary for that version, which is not always the panel’s default php. See Cron Jobs & Background Worker.
Browser #
Any current desktop or mobile browser. The staff area and the exam player use standard HTML, CSS and JavaScript; no plugins are needed.
Sizing guidance #
A single institute with a few thousand students runs comfortably on shared hosting or a small virtual server with PHP and MySQL on the same machine. Uploaded media (PDFs up to 20 MB, videos up to 250 MB) is stored in Web/storage/private/, so plan disk space accordingly.
Tested shared hosting example #
Academy & Exam OS has been installed and tested on Hostinger shared hosting with PHP 8.3 and MariaDB 11.8.9. This is not a guarantee for every plan or configuration: sodium must be enabled, the database user needs the required privileges including TRIGGER, and the cron jobs must use the PHP 8.3 command-line binary. The installer checks your actual environment.
Related documents #
Watch the Video Tutorial #
This topic is also covered in Academy & Exam OS Video Tutorial 01: Installation & Hosting Setup (watch on YouTube). All Academy & Exam OS video tutorials.