Getting started
Server requirements
Prepare PHP, MySQL, persistent storage and HTTPS before installing.
On this page
Supported stack#
Use PHP 8.4, Composer 2, and MySQL 8.4 or 9.7 LTS. MariaDB and other MySQL versions are not certified. SQLite is a development test database, not a production target.
PHP needs PDO MySQL, GD with WebP, mbstring, fileinfo, OpenSSL, tokenizer, XML, ctype, session and ZIP. Linux workers also need pcntl for timeouts and graceful shutdown. Check your host's installed extensions with php -m; confirm its web PHP and CLI PHP both use the required version.
Hosting layout#
Point the web server document root at the release's public/ directory. Keep .env, source, dependencies and private uploads outside public web access. Give the PHP service account the required access to storage/ and bootstrap/cache/; do not make the entire installation world-writable.
Use a persistent MySQL database and set UPLOADS_ROOT to a private persistent directory outside the release directory and web root. Releases may be replaced; member attachments, avatars and branding must survive replacement. Use HTTPS and the canonical community URL in APP_URL.
Background services#
Your host must support a supervised PHP queue worker. Billing also needs a once-per-minute reconciliation scheduler. Web and workers need the same application key, database and relevant mail/billing environment. See worker setup.
Release archive or source?#
The release archive includes compiled public/build assets. Run Composer on the host; Node is unnecessary for that archive. Source installations need Node/npm to run npm ci and npm run build before serving. There is no browser-based installer: installation uses the CLI.
Before proceeding, arrange a private backup destination and a way to restore into a separate empty database. See the full installation reference.