VPS पर Flarum कैसे इंस्टॉल करें: स्टेप-बाय-स्टेप गाइड
VPS पर PHP, Composer और MariaDB के साथ Flarum इंस्टॉल करने का तरीका जानें। केवल /public डायरेक्टरी को TLS पर सर्व करें और मेल व एक्सटेंशन अपग्रेड से जुड़ी आम समस्याओं को हल करें।
VPS पर PHP और MariaDB के साथ Flarum इंस्टॉल करना
VPS पर Flarum इंस्टॉल करने से आपको एक ऐसा फोरम मिलता है जो PHP और MariaDB पर चलता है, जिसमें न तो Docker की आवश्यकता होती है, न Ruby की और न ही किसी अलग जॉब रनर की। यही इसे चुनने का मुख्य कारण है। VPS पर Discourse इंस्टॉल करना का अर्थ है एक Docker स्टैक जिसमें Ruby, PostgreSQL, Redis और एक बैकग्राउंड वर्कर शामिल हों, और बैकअप या मेल सर्विस जोड़ने से पहले 2 GB RAM इसकी व्यावहारिक न्यूनतम आवश्यकता है। Discourse हजारों पोस्ट प्रतिदिन वाले व्यस्त समुदायों के लिए इस संसाधन खपत को उचित ठहराता है। कुछ सौ लोगों के फोरम के लिए यह वह मशीनरी है जिसके लिए आप हर महीने भुगतान करते हैं लेकिन कभी उपयोग नहीं करते। Flarum उस PHP स्टैक के भीतर फिट हो जाता है जिसे आप शायद पहले से चला रहे हैं, इसलिए nginx और MariaDB वाला 1 GB का VPS इसे अन्य सेवाओं के साथ होस्ट कर सकता है। यदि चुनाव अभी भी खुला है, तो self-hosted फोरम सॉफ्टवेयर की व्यापक तुलना बाकी विकल्पों को कवर करती है।
यह गाइड इंस्टॉलेशन को Flarum 1.x, जो वर्तमान में 1.8 सीरीज है, पर सीमित रखती है। अगस्त 2026 तक Flarum 2.0 अभी भी एक release candidate है, इसलिए 1.8 वह संस्करण है जिसे ऐसे फोरम के लिए चलाना चाहिए जिस पर अन्य लोग निर्भर हैं। यहाँ कोर वर्जन की तुलना में एक्सटेंशन अधिक मायने रखते हैं, और अधिकांश एक्सटेंशन लेखकों ने अभी तक 2.0 पर माइग्रेट नहीं किया है।
Flarum 1.8 के लिए सर्वर पर आवश्यक चीजें
Flarum की आधिकारिक आवश्यकताओं के अनुसार PHP 7.3 या उससे नया, MySQL 5.6+ या MariaDB 10.0.5+, और nginx या Apache का होना आवश्यक है, जिसमें mod_rewrite का उपयोग किया गया हो। Ubuntu 24.04 में PHP 8.3 और MariaDB 10.11 उपलब्ध हैं, इसलिए ये डिस्ट्रीब्यूशन पैकेज किसी तीसरे पक्ष के रिपॉजिटरी के बिना ही सभी आवश्यकताओं को पूरा करते हैं। Flarum के लिए आवश्यक PHP एक्सटेंशन ये हैं: curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer और zip। आपको shell एक्सेस की भी आवश्यकता होगी, क्योंकि यहाँ Composer वैकल्पिक नहीं है: प्रत्येक Flarum एक्सटेंशन एक Composer पैकेज है, और Composer चलाए बिना इसे जोड़ने का कोई अन्य तरीका नहीं है।
Flarum एक सामान्य PHP एप्लिकेशन है। यदि आप पहले से ही Ubuntu 24.04 पर LAMP stack चला रहे हैं, तो अगले दो सेक्शन की अधिकांश चीजें पहले से इंस्टॉल होंगी और आप उन्हें सरसरी तौर पर देखकर सीधे डेटाबेस वाले भाग पर जा सकते हैं।
PHP और Flarum के लिए आवश्यक extensions इंस्टॉल करें
sudo apt update
sudo apt install -y nginx mariadb-server composer
sudo apt install -y php8.3-fpm php8.3-cli php8.3-curl php8.3-gd php8.3-mbstring php8.3-mysql php8.3-xml php8.3-zip
php -m | grep -E 'curl|dom|gd|mbstring|pdo_mysql|zip'
composer --versionPackage के नाम Flarum की सूची से पूरी तरह मेल नहीं खाते हैं। dom extension, php8.3-xml के भीतर मौजूद है, और fileinfo, json, openssl तथा tokenizer को Ubuntu पर PHP 8.3 में ही compile किया गया है, इसलिए इनके लिए अलग से कोई package इंस्टॉल करने की आवश्यकता नहीं है। grep को छह लाइनें प्रिंट करनी चाहिए और composer --version को 2.x release की रिपोर्ट देनी चाहिए। यदि कोई extension गायब है, तो उसे अभी ठीक करना उचित है, क्योंकि Composer उसके बिना Flarum को इंस्टॉल करने से मना कर देगा और error में उस extension का नाम स्पष्ट रूप से दिखाई देगा:
Problem 1
- flarum/core[v1.8.0, ..., v1.8.17] require ext-gd * -> it is missing from your system.
Install or enable PHP's gd extension.जाँचें कि command line PHP और FastCGI process manager (PHP-FPM) एक ही version के हैं। Composer, command line binary के अंतर्गत चलता है जबकि आपका forum FPM के अंतर्गत चलता है, इसलिए php -v और sudo php-fpm8.3 -v का version एक समान होना चाहिए। यदि किसी machine पर third-party repository से कई PHP versions जमा हो गए हों, तो उनमें अंतर आ सकता है, और ऐसी स्थिति में एक version के लिए इंस्टॉल की गई extension दूसरे version के लिए अदृश्य हो जाती है।
डेटाबेस और एक समर्पित डेटाबेस उपयोगकर्ता बनाएँ
sudo mariadb-secure-installation
sudo mariadbCREATE DATABASE flarum CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'flarum'@'localhost' IDENTIFIED BY 'use-a-long-random-password';
GRANT ALL PRIVILEGES ON flarum.* TO 'flarum'@'localhost';
FLUSH PRIVILEGES;
EXIT;root के बजाय Flarum को अपना स्वयं का डेटाबेस उपयोगकर्ता दें। यह grant केवल flarum.* तक ही सीमित है, इसलिए आपके द्वारा न लिखे गए किसी extension में SQL injection बग होने पर भी वह आपके अन्य डेटाबेस को नहीं पढ़ पाएगा। कैरेक्टर सेट भी महत्वपूर्ण है: utf8mb4 इमोजी और गैर-लैटिन लिपियों को सही ढंग से स्टोर करता है, जबकि MySQL का पुराना utf8 एक तीन-बाइट एनकोडिंग है जो पहले चार-बाइट कैरेक्टर पर ही पोस्ट को काट देता है। आगे बढ़ने से पहले पुष्टि करें कि उपयोगकर्ता काम कर रहा है।
mariadb -u flarum -p flarum -e 'SELECT DATABASE();'यह flarum प्रिंट करना चाहिए। ERROR 1045 (28000): Access denied for user 'flarum'@'localhost' का अर्थ है कि पासवर्ड मेल नहीं खाता है, या उपयोगकर्ता को localhost के अलावा किसी अन्य होस्ट के लिए बनाया गया था।
Composer का उपयोग करके VPS पर Flarum इंस्टॉल करें, 1.8 पर पिन करें
सबसे पहले एक सिस्टम यूजर बनाएँ जो कोड का स्वामी (owner) हो। root के रूप में Composer चलाने से vendor/ और storage/ में root-स्वामित्व वाली फाइलें रह जाती हैं, जिससे PHP बाद में अपना cache नहीं लिख पाता और forum हर request पर 500 error देता है।
sudo useradd --system --home-dir /srv/flarum --shell /bin/bash flarum
sudo install -d -o flarum -g flarum -m 755 /srv/flarum
sudo -iu flarumवह अंतिम कमांड आपको flarum यूजर के रूप में, /srv/flarum में एक shell में ले जाता है। इस गाइड के अंत तक हर कमांड वहीं से चलेगी, जब तक कि वह sudo से शुरू न हो।
composer create-project flarum/flarum:^1.8.0 .^1.8.0 constraint वर्जन पिन है। यह 1.8.x पैच releases को स्वीकार करता है और 2.0 को अस्वीकार करता है, जो कि आप तब चाहते हैं जब 2.0 एक release candidate हो। Composer skeleton को डाउनलोड करता है, flarum/core और उसकी dependencies को resolve करता है, और आपके पास public/, storage/, vendor/, composer.json और एक flarum कमांड लाइन स्क्रिप्ट छोड़ देता है।
एक छोटे VPS पर यह चरण वह जगह है जहाँ चीजें खराब हो जाती हैं, और दो अलग-अलग विफलताएं एक जैसी दिखती हैं। PHP Fatal error: Allowed memory size of 134217728 bytes exhausted PHP का अपना memory_limit है, और कमांड के सामने COMPOSER_MEMORY_LIMIT=-1 लगाने से एक रन के लिए वह सीमा हट जाती है। बिना किसी PHP error के एक खाली Killed का आना kernel का out-of-memory killer है, जिसकी पुष्टि आप dmesg | tail से कर सकते हैं। उस स्थिति का मतलब है कि मशीन की RAM वास्तव में समाप्त हो गई है, इसलिए swap जोड़ें: PHP limit बढ़ाने से स्थिति और खराब हो जाती है, क्योंकि kernel के हस्तक्षेप करने से पहले PHP और भी अधिक मेमोरी मांगता है।
केवल /public को वेब के सामने क्यों होना चाहिए
प्रोजेक्ट रूट में config.php होता है जिसमें आपका डेटाबेस पासवर्ड प्लेन टेक्स्ट में होता है, vendor/ में सभी डिपेंडेंसी होती हैं, और storage/ में लॉग और कैश की गई सेशन फाइलें होती हैं। इनमें से कोई भी चीज पब्लिक इंटरनेट पर नहीं होनी चाहिए। Flarum हर उस चीज को वेब एक्सेसिबल रखता है जो एक सबडायरेक्टरी, public/ में होती है, जिसमें index.php, एक assets/ फोल्डर और बहुत कम अन्य चीजें होती हैं। वेब सर्वर रूट को /srv/flarum/public पर पॉइंट करें, इससे बाकी का ट्री HTTP के माध्यम से पहुंच से बाहर हो जाता है, यह किसी ऐसे नियम पर निर्भर नहीं है जिसे आपको याद रखना पड़े।
इसके बजाय रूट को /srv/flarum पर पॉइंट करने से वास्तविक नुकसान हो सकता है। /config.php का अनुरोध करने पर कुछ भी उपयोगी नहीं मिलता, क्योंकि PHP फाइल को एक्जीक्यूट करता है और यह केवल एक ऐरे रिटर्न करता है। लेकिन /storage/logs/flarum.log किसी अजनबी को आपके स्टैक ट्रेसेस और डेटाबेस एरर दे देता है, और /composer.lock उन्हें आपके द्वारा चलाए जा रहे प्रत्येक पैकेज का सटीक वर्जन बता देता है, जो कि आज़माने के लिए ज्ञात कमजोरियों (vulnerabilities) की एक सूची है।
PHP-FPM को अपना अलग pool दें
Flarum को तीन paths पर write access की आवश्यकता होती है: project root, ताकि installer config.php बना सके; storage/, logs और cache के लिए; और assets/, upload किए गए avatars और logos के लिए। ये files flarum user की हैं, इसलिए सबसे सही तरीका एक ऐसा PHP-FPM pool बनाना है जो flarum के रूप में चले। nginx www-data के रूप में चलता रहता है और केवल files को read करता है।
/etc/php/8.3/fpm/pool.d/flarum.conf लिखें:
[flarum]
user = flarum
group = flarum
listen = /run/php/php8.3-fpm-flarum.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 30s
php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 16M
php_admin_value[post_max_size] = 17Msudo systemctl restart php8.3-fpm
ls -l /run/php/php8.3-fpm-flarum.sockSocket को srw-rw---- 1 www-data www-data के रूप में सूचीबद्ध होना चाहिए। Master process root के रूप में चलती है और socket बनाती है, इसीलिए यह ownership को www-data को सौंप सकती है जबकि workers flarum के रूप में चलते हैं। यदि socket मौजूद नहीं है, तो sudo journalctl -u php8.3-fpm -n 30 FPM rejected लाइन print करता है। pm = ondemand worker processes को केवल तभी start करता है जब कोई request आती है, इसलिए एक शांत forum पर visitors के बीच लगभग कोई memory खर्च नहीं होती है।
Nginx server block
Flarum प्रोजेक्ट रूट में .nginx.conf नाम का एक nginx स्निपेट प्रदान करता है। इसमें rewrite rule, cache headers और compression सेटिंग्स होती हैं। इसे कॉपी करने के बजाय include करें, ताकि Flarum के किसी भी अपडेट के साथ स्निपेट में होने वाले बदलाव बिना किसी मैन्युअल संपादन के आपके सर्वर तक पहुँच सकें।
server {
listen 80;
listen [::]:80;
server_name forum.example.com;
root /srv/flarum/public;
index index.php;
client_max_body_size 16M;
include /srv/flarum/.nginx.conf;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm-flarum.sock;
}
}इसे /etc/nginx/sites-available/flarum के रूप में सेव करें, और फिर इसे इनेबल करें।
sudo ln -s /etc/nginx/sites-available/flarum /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxnginx -t को syntax is ok और test is successful का उत्तर देना चाहिए। include लाइन वह है जिसे लोग अक्सर छोड़ देते हैं, और इसे छोड़ने पर एक बहुत ही विशिष्ट समस्या आती है: फ्रंट पेज पूरी तरह से लोड होता है, लेकिन हर डिस्कशन लिंक nginx से 404 एरर देता है। Flarum, /d/1-hello-world जैसे URL को PHP के भीतर रूट करता है। वह पाथ डिस्क पर कोई फाइल नहीं है, इसलिए स्निपेट के try_files $uri $uri/ /index.php?$query_string नियम के बिना nginx d नाम की एक डायरेक्टरी ढूंढता है, उसे नहीं पाता है, और PHP से पूछे जाने से पहले ही 404 एरर दे देता है। Apache को यही रूटिंग public/ में पहले से मौजूद .htaccess फाइल से मिलती है, जो केवल तभी प्रभावी होती है जब संबंधित <Directory> ब्लॉक में AllowOverride All सेट हो।
इंस्टॉलर चलाने से पहले TLS जोड़ें
सर्टिफिकेट का काम अभी करें, बाद में नहीं। Flarum इंस्टॉलेशन के दौरान अपनी base URL को config.php में लिखता है, और यह URL आपके ब्राउज़र के एड्रेस बार से ली जाती है। यदि आप http:// पर इंस्टॉल करते हैं, तो Flarum द्वारा जनरेट की गई हर asset URL http:// से शुरू होगी। इसलिए, एक बार TLS (transport layer security) जोड़ने के बाद, ब्राउज़र उन requests को mixed content मानकर ब्लॉक कर देगा और फोरम बिना किसी स्टाइल या JavaScript के केवल टेक्स्ट के रूप में लोड होगा। पहले nginx पर Let's Encrypt के लिए certbot सेटअप पूरा करें, पुष्टि करें कि https://forum.example.com एक पेज सर्व कर रहा है, और फिर वापस आएं।
यदि आपने पहले ही plain HTTP पर इंस्टॉल कर लिया है, तो इसे ठीक करने के लिए केवल एक लाइन की आवश्यकता है। /srv/flarum/config.php को एडिट करें ताकि url की key 'url' => 'https://forum.example.com', हो जाए, फिर flarum यूजर के रूप में php flarum cache:clear चलाएं।
Installer चलाएं और config.php को सुरक्षित करें
ब्राउज़र में https://forum.example.com खोलें। Flarum का वेब इंस्टॉलर आपसे डेटाबेस का नाम, आपके द्वारा बनाया गया डेटाबेस यूजर और पासवर्ड, फोरम का शीर्षक और आपका एडमिन अकाउंट मांगेगा। यह config.php लिखता है और टेबल्स बनाता है। जब यह पूरा हो जाए, तो उस फाइल को सुरक्षित करें जिसमें अब आपका डेटाबेस पासवर्ड है।
sudo chmod 640 /srv/flarum/config.phpयह फाइल flarum द्वारा पढ़ने और लिखने योग्य रहती है, जो कि वह यूजर है जिसके रूप में FPM चलता है, और बॉक्स पर मौजूद किसी भी अन्य अकाउंट के लिए यह अपठनीय रहती है। इसके बाद शेल से इंस्टॉलेशन की जांच करें।
php flarum infoयह कोर वर्जन, PHP वर्जन, इनेबल्ड एक्सटेंशन, मेल ड्राइवर और उपयोग में आने वाले पाथ को प्रिंट करता है। जब कुछ गलत होता है, तो यह सबसे पहले चलाई जाने वाली कमांड है, और आपकी मदद करने वाला कोई भी व्यक्ति सबसे पहले इसी की जानकारी मांगेगा।
साइनअप और पासवर्ड रीसेट ईमेल चुपचाप विफल क्यों हो जाते हैं
यह अनुभाग तय करता है कि आपका फोरम अपने पहले सप्ताह में टिक पाएगा या नहीं। किसी नए फोरम द्वारा भेजे जाने वाले पहले दो ईमेल साइनअप कन्फर्मेशन और पासवर्ड रीसेट होते हैं, और ये दोनों ठीक उसी समय भेजे जाते हैं जब कोई अजनबी यह तय कर रहा होता है कि आपका समुदाय वास्तविक है या नहीं। दोनों ही चुपचाप विफल हो जाते हैं। जिस व्यक्ति को मेल प्राप्त नहीं हुआ, वह आपको बता नहीं सकता, और आपके एडमिन डैशबोर्ड पर कुछ भी लाल नहीं होता।
Flarum में चार मेल ड्राइवर होते हैं, जिन्हें Administration के अंतर्गत Email में सेट किया जाता है: smtp, mail, mailgun और log। smtp चुनें और इसे एक ऐसी मेल सर्विस पर पॉइंट करें जो वास्तव में डिलीवरी करेगी। mail ड्राइवर संदेश को एक स्थानीय sendmail बाइनरी को सौंप देता है, जो एक नए Ubuntu VPS पर मौजूद नहीं होती है, इसलिए संदेश कहीं नहीं जाता और कोई त्रुटि (error) भी नहीं दिखाई देती है। log ड्राइवर संदेश बॉडी को storage/logs/ में लिखता है और कुछ भी नहीं भेजता है, क्योंकि यह केवल डेवलपमेंट के लिए मौजूद है।
सेटिंग्स को सेव करें, फिर उसी पेज पर Send Test Mail बटन दबाएं। यह बटन ही एकमात्र फीडबैक लूप है जो आपको मिलता है, इसलिए किसी को भी आमंत्रित करने से पहले इसका उपयोग करें। यदि संदेश प्राप्त नहीं होता है, तो लॉग पढ़ें।
tail -n 50 /srv/flarum/storage/logs/flarum.logकनेक्शन का अस्वीकार होना, लॉगिन का रिजेक्ट होना और TLS नेगोशिएशन की विफलता, ये सभी उस होस्ट और पोर्ट के साथ वहां दिखाई देते हैं जिन्हें आजमाया गया था। Connection could not be established with host smtp.example.com पढ़ने वाली एक लाइन का मतलब है कि पोर्ट ब्लॉक है या गलत है, और इसका सामान्य कारण यह है कि प्रदाता डिफ़ॉल्ट रूप से आउटबाउंड पोर्ट 25 को ब्लॉक करते हैं। एन्क्रिप्शन फील्ड को tls पर सेट करके पोर्ट 587 का उपयोग करना वह संयोजन है जो लगभग हर मेल सर्विस के साथ काम करता है।
जब मेल सिस्टम खराब होता है, तो साइन अप करने वाला विज़िटर Flarum का सामान्य विफलता बैनर, Oops! Something went wrong. Please reload the page and try again. देखता है, क्योंकि कन्फर्मेशन भेजते समय रिक्वेस्ट थ्रो (throw) हो जाती है। किसी भी स्थिति में वह व्यक्ति अंदर नहीं आ सकता है, और वे इस बारे में आपको नहीं लिखेंगे।
मेल का स्वीकार किया जाना, उसे भेजे जाने से एक अलग समस्या है। आपके डोमेन के लिए बिना SPF या DKIM रिकॉर्ड प्रकाशित किए VPS एड्रेस से भेजा गया मेल स्पैम फोल्डर में चला जाता है, या बिना किसी बाउंस संदेश के ड्रॉप कर दिया जाता है, इसलिए आपका लॉग सफल सेंड दिखाता है और प्राप्तकर्ता को फिर भी कुछ नहीं दिखता है। Self-hosted apps से विश्वसनीय रूप से मेल भेजना में बताया गया है कि कौन से DNS रिकॉर्ड प्रकाशित करने हैं और किन रिले सेवाओं का उपयोग करना उचित है।
Extensions Composer packages हैं, इसलिए अपग्रेड एक कमांड है
Flarum में एक extension एक Composer package होता है। इसमें कोई upload बटन नहीं होता और न ही किसी फोल्डर में डालने के लिए कोई zip फाइल होती है। यह एक सोच-समझकर लिया गया डिज़ाइन निर्णय है: वर्ज़न एक-दूसरे के साथ रिजॉल्व होते हैं, सटीक सेट composer.lock में रिकॉर्ड किया जाता है, और जो extension किसी PHP लाइब्रेरी पर निर्भर करता है, वह उस लाइब्रेरी को सही ढंग से इंस्टॉल कर लेता है। इसकी कीमत यह है कि एक extension जोड़ने का मतलब flarum यूजर के रूप में तीन कमांड चलाना है।
composer require 'fof/upload:*'
php flarum migrate
php flarum cache:clearइसके बाद इसे Administration के अंतर्गत Extensions में जाकर enable करें। प्रत्येक कमांड एक अलग काम करती है। composer require कोड को डिस्क पर डालता है। php flarum migrate उन सभी डेटाबेस माइग्रेशन को चलाता है जो extension के साथ आते हैं, इसी तरह यह अपनी टेबल बनाता है। php flarum cache:clear उन कंपाइल किए गए JavaScript और CSS बंडलों को फिर से बनाता है जिन्हें ब्राउज़र लोड करता है। आखिरी कमांड को छोड़ देने से अक्सर भ्रम पैदा होता है: extension लिस्ट में दिखता है, टॉगल ऑन होता है, लेकिन ब्राउज़र को कितनी भी बार रीलोड करने पर कुछ भी नहीं बदलता।
extension को हटाना इसके विपरीत प्रक्रिया है। पहले एडमिन पैनल में इसे disable करें, फिर package को हटा दें। Flarum जानबूझकर extension की टेबल को वहीं छोड़ देता है, ताकि बाद में फिर से enable करने पर डेटा का नुकसान न हो। यदि आप उन्हें भी हटाना चाहते हैं, तो कोड हटाने से पहले इसके माइग्रेशन को रोल बैक करें।
php flarum migrate:reset --extension fof-upload
composer remove fof/upload
php flarum cache:clearउस कमांड में extension id वह package नाम है जिसमें स्लैश (/) की जगह हाइफन (-) का उपयोग किया गया है। यदि आप टाइप करने के बजाय क्लिक करना पसंद करते हैं, तो composer require 'flarum/extension-manager:*' एक आधिकारिक एडमिन पेज जोड़ता है जो Composer को रैप करता है। यह वेब यूजर के समान ही ऑपरेशन चलाता है, इसे समान मेमोरी और समान राइट परमिशन की आवश्यकता होती है, और यह उन्हीं कारणों से विफल हो सकता है, इसलिए जब कुछ गलत हो जाए तो कमांड लाइन ही सबसे विश्वसनीय रास्ता बनी रहती है।
Composer update, Flarum को upgrade करने से मना क्यों करता है
Flarum और प्रत्येक extension को upgrade करने के लिए एक Composer command और उसके बाद दो Flarum commands का उपयोग किया जाता है। सबसे पहले database का backup लें।
composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies
php flarum migrate
php flarum cache:clearयह मान लेने के बजाय कि सब कुछ ठीक से हो गया है, output को ध्यान से पढ़ें, क्योंकि मुख्य समस्या तब होती है जब Composer कुछ भी करने से मना कर देता है:
Your requirements could not be resolved to an installable set of packages.इस संदेश का अर्थ है कि एक installed extension में ऐसा flarum/core constraint घोषित है जो उस release को बाहर रखता है जिस पर आप जाना चाहते हैं। Composer उस constraint का उल्लंघन नहीं करेगा, इसलिए वह पूरे install को पुराने version पर ही रखता है, बजाय इसके कि वह ऐसा संयोजन बनाए जिसके बारे में extension लेखक ने कहा है कि वह काम नहीं करेगा। उस package को खोजें जो इसके लिए जिम्मेदार है।
composer why-not flarum/core 1.8.17Output उन सभी packages की सूची देता है जो उस version को रोक रहे हैं और प्रत्येक द्वारा घोषित constraint को भी दिखाता है। इसके बाद आपके पास विकल्प यह है कि या तो लेखक द्वारा compatible release प्रकाशित करने का इंतज़ार करें, या फिर उस extension को हटा दें और उसके बिना काम चलाएं। यह Composer मॉडल की कीमत है, और किसी ऐसे forum पर पंद्रह extensions install करने से पहले इसे समझना ज़रूरी है जिस पर अन्य लोग निर्भर हैं। उन extensions को प्राथमिकता दें जिन्होंने हाल ही में कोई release जारी किया हो, और सूची को इतना छोटा रखें कि आप उसे आसानी से पढ़ सकें।
बैकअप क्या लें
डेटाबेस और प्रोजेक्ट डायरेक्टरी का बैकअप लें। बाकी सब कुछ दोबारा बनाया जा सकता है।
mariadb-dump -u flarum -p --single-transaction flarum > flarum-$(date +%F).sql
sudo tar czf flarum-files.tgz -C /srv flarumपुराने सिस्टम पर mariadb-dump को mysqldump कहा जाता है; Ubuntu 24.04 पर दोनों नाम काम करते हैं। डेटाबेस में हर पोस्ट, हर यूजर और हर सेटिंग सुरक्षित रहती है। प्रोजेक्ट डायरेक्टरी में config.php, composer.json (जो यह वास्तविक रिकॉर्ड है कि आप कौन से एक्सटेंशन चला रहे हैं) और अपलोड किए गए अवतार और लोगो के साथ assets/ शामिल होते हैं। आप vendor/ को छोड़ सकते हैं, क्योंकि composer install इसे composer.lock से दोबारा बना लेता है, और storage/ खुद को रीजेनरेट कर लेता है। दोनों फाइलों को सर्वर से बाहर कॉपी करें, क्योंकि जिस मशीन की सुरक्षा के लिए बैकअप लिया गया है, उसी पर रखा गया बैकअप वास्तव में बैकअप नहीं है। रिस्टोर करने का अर्थ है उसी वर्जन का एक नया Flarum इंस्टॉल करना, composer install, सेव की गई फाइलों को वापस अपनी जगह पर रखना और SQL फाइल को लोड करना।
FAQ
क्या Flarum 1 GB VPS पर चल सकता है?
हाँ, एक छोटे समुदाय के लिए यह संभव है। सामान्य संचालन में Flarum का मतलब है PHP-FPM द्वारा अनुरोधों का उत्तर देना और MariaDB का उपयोग करना। pm = ondemand के साथ, PHP workers केवल तभी सक्रिय होते हैं जब कोई पेज पढ़ रहा हो। सबसे अधिक संसाधन की आवश्यकता इंस्टॉलेशन के समय होती है: composer create-project पूरी dependency graph को मेमोरी में लोड करता है, और यही वह चरण है जहाँ out-of-memory killer द्वारा प्रक्रिया को रोके जाने की सबसे अधिक संभावना होती है। इंस्टॉलेशन से पहले एक swap file जोड़ें, या किसी बड़े मशीन पर Composer चलाकर पूरी डायरेक्टरी को कॉपी कर लें।
मुख्य पेज काम करने के बावजूद चर्चा (discussion) लिंक 404 क्यों दिखाते हैं?
आपके nginx server block में include /srv/flarum/.nginx.conf; गायब है। Flarum /d/1-hello-world जैसे URL को PHP के भीतर हैंडल करता है, और वह पाथ डिस्क पर कोई वास्तविक फाइल नहीं है। स्निपेट के try_files $uri $uri/ /index.php?$query_string नियम के बिना, nginx d नामक डायरेक्टरी को खोजता है, विफल हो जाता है, और PHP को कॉल किए बिना ही 404 त्रुटि दे देता है। Apache पर यही राउटिंग public/.htaccess से आती है, जिसे तब तक अनदेखा किया जाता है जब तक कि <Directory> ब्लॉक में AllowOverride All सेट न हो।
HTTPS सक्षम करने के बाद मेरे फोरम की स्टाइलिंग क्यों गायब हो गई?
Flarum अपना base URL config.php में स्टोर करता है, जिसे इंस्टॉलर चलाते समय आपके द्वारा उपयोग किए गए पते से कैप्चर किया जाता है। यदि आपने सादे HTTP पर इंस्टॉल किया था, तो Flarum अभी भी http:// एसेट URL जेनरेट करता रहेगा। ब्राउज़र इन्हें HTTPS पेज पर mixed content मानकर ब्लॉक कर देता है, जिससे बिना स्टाइल वाला टेक्स्ट दिखाई देता है। /srv/flarum/config.php में url कुंजी को https:// पते पर अपडेट करें और फाइलों के मालिक यूजर के रूप में php flarum cache:clear चलाएं।
साइनअप कन्फर्मेशन ईमेल किसी को क्यों नहीं मिल रहे हैं?
सबसे पहले mail driver की जाँच करें। mail ड्राइवर को एक लोकल sendmail बाइनरी की आवश्यकता होती है जो एक नए Ubuntu VPS में नहीं होती, और log ड्राइवर केवल storage/logs/ में लिखता है और कुछ भी नहीं भेजता। smtp पर स्विच करें, पोर्ट 587 का उपयोग करें और एन्क्रिप्शन को tls पर सेट करें क्योंकि अधिकांश प्रदाता आउटबाउंड पोर्ट 25 को ब्लॉक करते हैं। इसके बाद Send Test Mail दबाएं। यदि लॉग में सफल सेंड दिखाई देता है और ईमेल फिर भी नहीं पहुँचता, तो समस्या कॉन्फ़िगरेशन के बजाय deliverability की है। इसलिए अपने सेंडिंग डोमेन के लिए SPF और DKIM रिकॉर्ड प्रकाशित करें।
क्या मुझे Flarum 1.8 इंस्टॉल करना चाहिए या 2.0?
1.8 इंस्टॉल करें। अगस्त 2026 तक Flarum 2.0 एक release candidate है, और इससे भी महत्वपूर्ण बात यह है कि कई एक्सटेंशन अभी भी flarum/core बाधा घोषित करते हैं जो 1.x पर समाप्त हो जाती है। आज 2.0 इंस्टॉल करने का मतलब है एक ऐसा फोरम चलाना जिसके एक्सटेंशन एक साथ अपडेट नहीं हो सकते, जो कि वही विफलता है जिसे डायग्नोस करने के लिए composer why-not मौजूद है। flarum/flarum:^1.8.0 के साथ पिन करें और जब आपके द्वारा उपयोग किए जाने वाले एक्सटेंशन 2.0 रिलीज प्रकाशित कर दें, तब इसे फिर से देखें।