Requirements
What a server needs before you install Bondry, for shared hosting and for a VPS, and how to check it without a shell.
Bondry is a PHP application. There is no Node, no build step and no service to keep alive beyond one cron entry. This page lists the minimum for shared hosting and the recommended setup for a VPS, so you can check a host before you buy.
At a glance#
| Item | Requirement |
|---|---|
| PHP | 8.3 or newer (8.3, 8.4 and 8.5 are supported) |
| Database | MySQL 8.0 or newer, or MariaDB 10.6 or newer (InnoDB, utf8mb4) |
| Web server | Apache 2.4 with mod_rewrite (the product ships public/.htaccess), Nginx or LiteSpeed |
| HTTPS | A valid certificate on the domain |
| Cron | One entry, every minute |
| Outbound network | HTTPS to api.bondry.org |
| Disk | 500 MB free before uploads |
| Memory | memory_limit of 256M (128M is the floor) |
Shared hosting (minimum)#
Check each line in your hosting panel (cPanel, Plesk or DirectAdmin).
| What to check | Value | Why |
|---|---|---|
| PHP version selector | 8.3, 8.4 or 8.5 | The installer refuses anything older |
| PHP extensions | pdo_mysql, mbstring, openssl, zip, gd, curl, fileinfo, intl, tokenizer |
All are required; the installer refuses to continue while one is missing |
memory_limit |
256M | 128M is the floor; the admin updater and image processing need headroom |
max_execution_time |
120 or more | The updater raises it itself when the host allows |
upload_max_filesize |
64M | The core package is about 16 MB and module and theme packages go through the panel |
post_max_size |
64M | Must be at least upload_max_filesize |
max_input_vars |
3000 | Large admin forms send many fields |
| OPcache | Enabled | Faster page loads |
| Writable directories | storage, bootstrap/cache, modules, themes and public/uploads |
Cache, logs, installed packages and public uploads |
| Database | One MySQL database and one user with full rights on it | The installer creates the tables |
| Cron jobs | Allowed in the panel | See below |
| Outgoing email | SMTP credentials or an API provider | The default MAIL_MAILER=log writes mail to a file; change it after the install |
| Outbound HTTPS | api.bondry.org reachable |
License activation, heartbeat and updates |
| Disk | 500 MB free before uploads | See the table below |
| SSH | Optional | The web installer and the admin panel do everything |
Cron and the queue#
Add one entry, every minute:
* * * * * php /path/to/bondry/artisan schedule:run >> /dev/null 2>&1
The scheduler drives pruning, the license heartbeat, the daily update check,
file cleanup, storage moves, webhooks, RSS imports and digests. It does not run
a queue worker. Bondry does not require a worker: search indexing runs after the
response in the same process. If the queue driver is database and more than
100 jobs wait, the health page in the admin panel warns that no worker is
running. If your host has no cron at all, Advanced Configuration offers a mode
that runs the due tasks from site traffic, at most once a minute.
Disk#
| Part | Size |
|---|---|
| Core package (compressed) | 16 MB |
| Installed | about 60 MB |
| Backup copy made by the updater during an update | about 60 MB |
| Uploads | grows with your content |
Plan 500 MB free before uploads.
Typical shared hosts#
Any cPanel, Plesk or DirectAdmin host with the values above works. The installer verifies every item before it writes anything, so a host that falls short is reported before it changes your account.
VPS or dedicated server (recommended)#
| Size | CPU | RAM | Disk |
|---|---|---|---|
| Small (up to a few thousand members, low traffic) | 1 vCPU | 1 GB (2 GB with the Designer and LMS modules) | 10 GB SSD |
| Medium | 2 vCPU | 4 GB | 40 GB SSD |
| Large | 4 vCPU | 8 GB | SSD, sized to your uploads |
MySQL benefits most from RAM and SSD.
Software stack#
| Component | Recommendation |
|---|---|
| Operating system | Debian 12 or 13, Ubuntu 22.04 or 24.04 |
| Web server | Nginx with PHP-FPM 8.3 or newer |
| Database | MySQL 8.4 or MariaDB 10.11 |
| Queue worker (optional) | Supervisor or systemd running php artisan queue:work database --sleep=3 --tries=3 |
| Redis (optional) | Cache, session and queue; the .env file has REDIS_* entries |
| TLS | Let's Encrypt with certbot |
| Firewall | Open 22, 80 and 443 only |
| Cron | The same entry as above |
| Backups | The database and the public/uploads directory |
A minimal Nginx server block:
server {
listen 443 ssl;
server_name example.com;
root /var/www/bondry/public;
index index.php;
client_max_body_size 64m;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
File ownership#
Code is readable by the PHP user. Only storage, bootstrap/cache, modules,
themes and public/uploads are writable. Set the owner to the PHP-FPM user
rather than making directories world writable.
Tested environments#
| Environment | Setup |
|---|---|
| Production | Debian 13, Nginx, PHP-FPM 8.5, MySQL 8.4 (bondry.org and demo.bondry.org run here) |
| Automated tests | PHP 8.3 and PHP 8.4 |
| Development | macOS, PHP 8.5 |
Checking before you buy#
- Upload a file containing
<?php phpinfo();and look for the PHP version, the extension list and the values ofmemory_limit,upload_max_filesize,post_max_sizeandmax_input_vars. Delete the file afterwards. - Cron: open the cron section of the panel and confirm you can add a job that runs every minute with the PHP command line.
- Outbound HTTPS: ask the host, or run a one-line PHP file with
var_dump(file_get_contents('https://api.bondry.org'));and check it does not report a connection error. Delete it afterwards.
Common problems#
| Problem | Cause | Fix |
|---|---|---|
| The installer refuses to start | PHP 8.2 or older is selected | Select 8.3 or newer in the panel |
Red item for intl or zip |
Extension not enabled | Enable it in the PHP extensions page of the panel |
| Uploads fail | post_max_size or upload_max_filesize too low |
Raise both to 64M |
| 500 error after install | storage or bootstrap/cache not writable |
Fix the owner or permissions of those directories |
| Scheduled work never ran | Cron entry missing or wrong path | Add the entry; the health page shows the last run |
| License activation fails | Outbound HTTPS to api.bondry.org blocked |
Ask the host to allow it |