যা যা লাগবে
এই অধ্যায়টি এখনও অনুবাদ হয়নি, তাই ইংরেজিতে দেখানো হচ্ছে।
এই পাতায়
What the server needs before the first upload. Any ordinary cPanel hosting plan is enough; a VPS with nginx works too. Everything is done in the browser: no Composer, no command line.
The server
- PHP 7.4 or newer. PHP 8.1 or newer is recommended.
- MySQL 5.7+ or MariaDB 10.3+, with one empty database and a user that has all privileges on it.
- Apache or LiteSpeed with
mod_rewrite(every cPanel host has it). The.htaccessfile in the package does the rest. For nginx, see below. - A Quran CMS licence key that starts with
QCMS-. See Your licence key.
PHP extensions
| Extension | Needed for | Required |
|---|---|---|
| pdo_mysql | the database | yes |
| curl | the licence check, and fetching translations, tafsir, hadith and the weather | yes |
| mbstring | Arabic and Bengali text | yes |
| zlib | unpacking the Quran data that comes in the package | yes |
| json | settings, the reader, the API | yes |
| gd | share images of the ayahs and resizing uploaded pictures | recommended |
| zip (ZipArchive) | installing plugins and themes from a zip | recommended |
| openssl | the translation voices the server makes (when no Azure key is set) | recommended |
| fileinfo | checking what an uploaded file really is | recommended |
| intl | the Hijri date from the Umm al-Qura calendar (a built-in table is used without it) | if your host offers it |
The installer checks the important ones on its first screen. A red mark stops the installation and tells you what to switch on; an orange mark is only a warning. On cPanel, extensions are switched on under Select PHP Version → Extensions.
Folders that must be writable
- The site folder itself, while the installer writes
config.php. uploads/— pictures, recitations and other files you upload.cache/— the voices the server makes, the weather, and other things kept for speed.
Permissions 755 for folders and 644 for files are right on almost every host. The folder database/data/ must be uploaded complete: it holds the whole Quran and the bundled translations, and the installer will not start without it.
Apache and LiteSpeed
The package carries a .htaccess file. It sends every address that is not a real file to index.php (that is how /2/255 or /prayer-times work), and it refuses to serve private folders and files such as includes/, database/, cache/, config.php and installed.lock. It is a hidden file, so check that it was uploaded and extracted too.
nginx
Use these rules in the server block of the site:
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ ^/(includes|database|cache)/ { deny all; }
location ~ ^/(config\.php|installed\.lock)$ { deny all; }
location ~ ^/(themes|plugins)/.+\.php$ { deny all; }
location ^~ /uploads/ { location ~ \.php$ { deny all; } }
Disk space
The files of the script take about 10 MB. What grows over time:
uploads/— your pictures, the background library of the image and video maker, and recitations you upload (whole surahs can be large files).cache/— each translation voice is made once and kept incache/tts/; recitations fetched for videos are kept incache/audio/.- The database — every translation you add, every tafsir you download and every hadith book you import.
Outbound internet
The site itself must be able to open HTTPS addresses on the internet. These are the places it talks to, and when:
| What | Where | When |
|---|---|---|
| Licence | license.faruk.bd | at installation, then every 12 hours by default |
| More translations | api.alquran.cloud, api.quran.com | when you press Add on the Translations page |
| Tafsir | api.quran.com | the first time the tafsir of an ayah is opened, or Download all |
| Hadith books | cdn.jsdelivr.net, raw.githubusercontent.com | when you import a book |
| Weather on the mosque screen | api.open-meteo.com | at most once every half hour for a place |
| Translation voices | Microsoft's speech service (the free Edge voice service, or Azure with your own key) | the first time an ayah is spoken; the file is kept afterwards |
| Recitations in videos | everyayah.com, mp3quran.net | when a video is made with a reciter's voice |
The Quran itself and the bundled translations need no download: they are loaded from files in the package. Visitors' browsers play the recitations straight from the reciters' audio addresses.
If your host blocks outgoing connections, the licence cannot be activated. Ask the host to allow at least license.faruk.bd.
A cron job
One line, run every minute:
/usr/local/bin/php /home/USER/public_html/cron/run.php > /dev/null 2>&1
It runs the licence check, scheduled blog posts, the sitemap and the plugins' own jobs. Without it the site still works: page views run the jobs instead. Admin → Scheduled jobs shows the exact line for your server. See Scheduled jobs.
HTTPS
A certificate (a free one is enough) is recommended. When a page arrives over HTTPS, the site tells the browser to keep using HTTPS for a year. Browsers also only share a visitor's exact location (for prayer times) with a site on HTTPS.