Getting started
Installer and updates
Sharkhex Delivery includes a browser-based backend installer and an authenticated admin update page. These pages are designed for buyers who are comfortable using a hosting panel but do not want to run Symfony console commands manually.
Install page
Open the backend installer at:
/install
The installer is public before setup is completed. After the platform is marked as installed, the installer locks itself and directs the user to the admin login page.
What the installer does
- Checks PHP version and required PHP extensions.
- Checks writable backend folders such as
var/,public/uploads, andconfig/jwt. - Checks whether Composer dependencies and frontend assets are present.
- Lets the user save the backend database URL into
.env.local. - Tests the database connection.
- Creates the database schema and reference data on an empty database (or runs pending migrations on an existing one) from the browser.
- Generates JWT keys from the browser when they are missing.
- Collects required platform settings.
- Collects optional Stripe, Mailgun, Google Maps, Pusher, and logo settings.
- Creates or promotes the first admin user.
- Marks the backend as installed when the required setup is complete.
Required install values
The installer requires these values before the platform can be marked as installed:
- Working database URL.
- Platform name.
- Public website URL.
- Currency code.
- Country.
- Default locale.
- Main city.
- First admin account.
Optional install values
These values can be entered during install or added later from the admin panel:
- Light and dark logo URLs.
- Stripe publishable key, secret key, and webhook secret.
- Mailgun API key, domain, from email, and from name.
- Google Maps API key.
- Pusher app ID, key, secret, and cluster.
What the installer cannot do
The installer can detect missing server requirements, but it cannot install PHP extensions or operating system packages from the browser. If a required extension or permission is missing, the buyer should enable it from their hosting panel or ask the hosting provider to enable it.
Update page
After installation, admins can open:
/admin/updates
This page is protected by the admin login and is not public.
Product version
The backend package includes a product version file named VERSION. The admin update page shows this value so buyers and support teams can confirm which backend package is installed.
This documentation starts at product version 1.0.0.
What the update page does
- Shows server health checks.
- Shows the installed product version.
- Shows database connection status.
- Shows whether an admin user exists.
- Shows whether required platform settings are complete.
- Shows Doctrine migration status.
- Runs pending database migrations when the admin clicks the update button.
- Checks or creates missing JWT keys without overwriting existing keys.
Safe update behavior
The update page only runs necessary backend maintenance tasks. Database updates run Doctrine migrations, which means only pending migrations are applied. If there are no pending migrations, nothing is changed.
The JWT key action uses skip-if-exists behavior, so existing JWT keys are preserved.
The update page does not recreate admin users, overwrite platform settings, overwrite payment keys, reload fixtures, or reset buyer data.
Buyer update flow
- Back up the database and current backend files.
- Upload the new backend files to the server.
- Keep the existing
.env.local, uploaded media, and JWT keys. - Open
/admin/updates. - Review server and database health.
- Click Run database updates.
- Click Check JWT keys if the page reports missing keys or if login tokens fail.
- Clear hosting/server cache if the hosting panel provides a cache clear button.
- Test admin login and mobile API login.
Found a mistake? Tell us.