VPS-এ Discourse, Flarum, NodeBB নাকি phpBB বেছে নেবেন?
Discourse, Flarum, NodeBB ও phpBB-এর VPS তুলনা দেখুন: বাস্তবে কত RAM লাগে, কোন database লাগে, spam সামলানো, mail path এবং migration-এর পথ কী।
কোন self-hosted forum software চালানো উচিত?
আজ একটি VPS (virtual private server)-এ চালানোর জন্য self-hosted forum software বাছাই মূলত চারটি বাস্তব বিকল্পে সীমাবদ্ধ: Discourse, Flarum, NodeBB এবং phpBB। আপনি যদি 4 GB RAM দিতে পারেন এবং moderation করার জন্য অন্তত দুইজন প্রস্তুত থাকেন, তাহলে Discourse-ই উপযুক্ত default। 1 GB RAM এবং একজন moderator থাকলে Flarum বা phpBB চালান। যে forum পরিষ্কার-পরিচ্ছন্ন রাখা যায়, সেটি এমন উন্নত forum-এর চেয়ে ভালো যা আপনি পরিচালনা করতে পারবেন না।
Install করাই সহজ অংশ। এগুলোর প্রতিটিই এক বিকেলে চালু করা যায়। এক বছর পরেও forum থাকবে কি না, তা নির্ধারণ করে flag queue এবং mail path। তাই feature list পড়ার আগে moderation এবং email section পড়ুন।
একটি ফোরাম চালাতে আসলে কী কী প্রয়োজন?
একটি ফোরাম একটি মাত্র উপাদান নয়; এতে চারটি পৃথক অংশ থাকে: একটি application process, এমন একটি database যার data application বন্ধ হলেও টিকে থাকতে হবে, আপলোড করা avatar ও attachment-এর একটি directory, এবং mail পাঠানোর জন্য একটি কার্যকর পথ। application পরিবর্তন করা যায়। database পরিবর্তন করা যায় না, কারণ প্রতিটি post, প্রতিটি account এবং প্রতিটি private message এর মধ্যেই সংরক্ষিত থাকে। তাই নিচের section-গুলোতে প্রতিটি project যে database বেছে নিয়েছে, সেটিই সবচেয়ে গুরুত্বপূর্ণ তথ্য। আপনি যেদিন platform পরিবর্তন করতে চাইবেন, সেদিন আপনার export কেমন হবে তা database-ই নির্ধারণ করে।
দ্বিতীয় খরচটি মানবসম্পদ-সংক্রান্ত। Public registration এবং public posting চালু থাকলে bot signup শুরু হবে, সাধারণত domain কোনো crawler-এর তালিকায় আসার প্রথম সপ্তাহের মধ্যেই। চারটি অংশই সীমাবদ্ধ করা যায়। তবে core-এ এই workflow সরবরাহ করে মাত্র একটি।
Discourse: ডিফল্ট পছন্দ এবং এর প্রকৃত খরচ
Discourse হলো Ruby on Rails-ভিত্তিক একটি অ্যাপ্লিকেশন। এটি ডেটার জন্য PostgreSQL, cache ও job queue-এর জন্য Redis এবং background কাজ চালানোর জন্য Sidekiq ব্যবহার করে। সমর্থিত ইনস্টলেশনে এসব উপাদান একটি Docker container-এর মধ্যে রাখা হয়। container-টি /var/discourse/containers/app.yml-এ থাকা config file থেকে তৈরি হয়। আপনাকে উপাদানগুলো আলাদাভাবে ইনস্টল করতে হয় না।
wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse | sudo bashএই script-টি অনুপস্থিত থাকলে git ও Docker ইনস্টল করে। এরপর discourse_docker-কে /var/discourse-এ clone করে এবং interactive discourse-setup wizard চালায়। wizard আপনার hostname, admin email address এবং SMTP (simple mail transfer protocol)-এর তথ্য চায়। তারপর এটি app.yml লেখে এবং container তৈরি করে। Port 80 ও 443 অবশ্যই খালি থাকতে হবে, কারণ container নিজস্ব nginx চালায় এবং আপনার জন্য Let's Encrypt certificate-এর অনুরোধ করে।
প্রকাশিত ন্যূনতম প্রয়োজনীয়তা হলো swap-সহ 1 GB RAM এবং 10 GB disk। swap-এর বিষয়টি আক্ষরিক অর্থেই ধরুন। wizard যখন মনে করে সার্ভারে swap দরকার, তখন setup script fallocate -l 2G /swapfile ব্যবহার করে 2 GB-এর একটি swapfile তৈরি করে। এই swap কেবল আনুষ্ঠানিকতা নয়। চলমান site-এর জন্য যত memory লাগে, memory peak তার চেয়ে বেশি। এই peak হলো ./launcher rebuild app, যা প্রতিটি upgrade-এর সময় container-এর ভেতরে JavaScript ও CSS asset পুনরায় compile করে। swap ছাড়া 1 GB-এর সার্ভারে এই ধাপটি মাঝপথে বন্ধ হয়ে যায়। rebuild শেষ হলেও screen-এ কার্যকর error দেখা যায় না। dmesg | tail-এ একটি Out of memory: Killed process line দেখা যায়। বাস্তব ব্যবহারের জন্য 2 GB RAM বরাদ্দ করুন। Forum ব্যস্ত হলে 4 GB ব্যবহার করুন।
Browser-এ /admin/upgrade থেকে upgrade চালানো যায়। Shell থেকেও চালানো যায়:
cd /var/discourse
./launcher rebuild apprebuild চলমান container ধ্বংস করে। এরপর app.yml থেকে নতুন container তৈরি ও bootstrap করে সেটি চালু করে। তাই এই কাজ চলার কয়েক মিনিট site বন্ধ থাকে। একটি container ব্যবহার করলে এটি এড়ানোর উপায় নেই। data.yml এবং web_only.yml sample ব্যবহার করে দুটি container-এ বিভক্ত করলে web container rebuild হওয়ার সময় PostgreSQL চালু রাখা যায়। ব্যবহারকারীরা downtime লক্ষ্য করতে শুরু করলে এই ব্যবস্থা নেওয়া উপযোগী হয়।
Discourse-এর বেশি RAM প্রয়োজন হওয়ার প্রধান কারণ moderation ব্যবস্থা। নতুন account trust level 0 দিয়ে শুরু করে। তারা কতগুলো link এবং কত দ্রুত post করতে পারবে, তার ওপর কঠোর সীমা থাকে। পড়া ও অংশগ্রহণের মাধ্যমে trust level ধীরে ধীরে বাড়ে। Flag review queue-তে জমা হয় এবং কে কোন flag পরিচালনা করেছে, তা নথিভুক্ত থাকে। Akismet ও StopForumSpam integration সরকারি plugin হিসেবে পাওয়া যায়। অন্য তিনটির ক্ষেত্রে আপনাকে add-on ব্যবহার করে একই ব্যবস্থা তৈরি করতে হবে।
Discourse-এ into migration সবচেয়ে শক্তিশালী বৈশিষ্ট্য। Source tree-এর script/import_scripts/ directory-তে ষাটটির বেশি importer আছে। এর মধ্যে phpbb3.rb, vbulletin.rb, xenforo.rb, vanilla.rb, mybb.rb, flarum_import.rb, একটি nodebb directory এবং mailing list archive-এর জন্য একটি mbox importer রয়েছে। এগুলো Ruby script। পুরোনো database-এর একটি copy-এর বিরুদ্ধে container-এর ভেতর থেকে এগুলো চালাতে হয়। এগুলো ধীর, তবে রক্ষণাবেক্ষণ করা হয়।
Out migration-এর দিকটি দুর্বল। ./launcher enter app-এর পরে discourse backup চালালে একটি .tar.gz তৈরি হয়। এতে PostgreSQL dump এবং uploads directory থাকে। অন্য একটি Discourse এটি restore করতে পারে। অন্য কোনো software এটি পড়তে পারে না। তাই Discourse ছেড়ে যেতে হলে আপনাকেই ওই dump-এর বিরুদ্ধে SQL লিখতে হবে। 50,000 post import করার আগে এই সীমাবদ্ধতা মেনে নিতে পারবেন কি না, তা নির্ধারণ করুন।
Flarum: হালকা PHP ফোরাম
Flarum একটি সাধারণ PHP অ্যাপ্লিকেশন: nginx বা Apache-এর পেছনে php-fpm, একটি MySQL বা MariaDB database এবং disk-এ থাকা file। নথিভুক্ত requirements হলো PHP 7.3 বা পরের সংস্করণ, সঙ্গে curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer এবং zip extension; এছাড়া MySQL 5.6+ (অথবা 8.0.23+) কিংবা MariaDB 10.0.5+ প্রয়োজন। Ubuntu 24.04-এ PHP 8.3 রয়েছে, যা এই minimum version-এর চেয়ে নতুন।
ওই তালিকায় pdo_mysql লক্ষ্য করুন। Flarum PostgreSQL সমর্থন করে না এবং SQLite-ও সমর্থন করে না। আপনি যদি single-file database চান, নিচে phpBB দেওয়া আছে।
sudo apt update
sudo apt install -y nginx mariadb-server composer php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
sudo install -d -m 755 /srv/flarum
cd /srv/flarum
sudo COMPOSER_ALLOW_SUPERUSER=1 composer create-project flarum/flarum:^1.8.0 .
sudo chown -R www-data:www-data /srv/flarumWeb server-কে /srv/flarum/public-এর দিকে নির্দেশ করুন, /srv/flarum-এর দিকে নয়। Application code, config file এবং database password—সবই public-এর এক directory ওপরে থাকে। তাই document root এক স্তর বেশি ওপরে দিলে যে কেউ চাইলে আপনার credentials পেয়ে যাবে। Apache-এ mod_rewrite এবং AllowOverride All-ও প্রয়োজন, যাতে সরবরাহ করা .htaccess কার্যকর হয়। nginx-এ আপনার server block-এর ভেতরে সরবরাহ করা .nginx.conf include করুন। এরপর domain-এ browse করুন। Flarum-এর নিজস্ব installer তখন database এবং admin account-এর তথ্য চাইবে।
August 2026 অনুযায়ী version-এর অবস্থা: 1.8.17 বর্তমান stable release, যা June 2026-এ প্রকাশিত হয়েছে, এবং 2.0 release candidate 5 পর্যায়ে রয়েছে। Release candidate ব্যবহার করে নতুন community শুরু করবেন না। 2.0 প্রকাশিত হলে extension load করার আগে সেগুলো update করতে হবে। এই upgrade-এই আপনার পুরো weekend খরচ হতে পারে।
এর footprint ছোট। কয়েকটি php-fpm worker, MariaDB-এর জন্য কয়েকশ MB এবং static file—এটাই যথেষ্ট। নতুন একটি community 1 GB-তে চলবে।
Moderation-এর দিকটি বাস্তব দুর্বলতা। Core আপনাকে report এবং per-group permission দেয়। Approval queue এবং spam blocking extension থেকে আসে। এগুলো মূলত FriendsOfFlarum collection-এর extension, composer require দিয়ে install করে admin panel-এ চালু করা যায়। বর্তমানে এটি কাজ করে। তবে phpBB বা Discourse-এর তুলনায় আপনি ছোট একটি volunteer ecosystem-এর ওপর বেশি নির্ভর করছেন। কোনো extension রক্ষণাবেক্ষণ না পেলে পরবর্তী core upgrade আটকে যায়, কারণ নতুন version-এর সঙ্গে Composer সেটি resolve করতে পারে না।
Data export করা সহজ: mysqldump database এবং assets directory copy করুন। Data import করা কঠিন। Flarum থেকে Discourse-এ যাওয়ার জন্য Discourse-এর সঙ্গে flarum_import.rb রয়েছে। এতে বোঝা যায়, সাধারণত network traffic কোন দিকে যায়। phpBB থেকে Flarum-এ import করতে first-party কোনো ব্যবস্থা নেই; community extension ব্যবহার করতে হয়। তাই একমাত্র copy-র ওপর ভরসা করার আগে একটি copy-তে extension পরীক্ষা করুন।
NodeBB: realtime posting এবং এর সঙ্গে যুক্ত খরচ
NodeBB হলো Node.js-ভিত্তিক সফটওয়্যার। এটি websockets-এর মাধ্যমে খোলা browser-এ নতুন post পাঠায়, তাই refresh ছাড়াই সক্রিয় thread আপডেট হয়। NodeBB বেছে নেওয়ার এটাই কারণ। README-তে Node.js 22 বা তার পরের সংস্করণ এবং MongoDB 5+ অথবা Redis 7.2+ চাওয়া হয়েছে। এছাড়া source tree-তে তৃতীয় বিকল্প হিসেবে PostgreSQL driver রয়েছে।
এই বাক্যে Redis-কে primary database হিসেবে ব্যবহারের বিষয়টিই ঝুঁকির। Redis dataset memory-তে রাখে। তাই forum বড় হওয়ার সঙ্গে RAM-এর প্রয়োজনও বাড়ে; এটি স্থির থাকে না। MongoDB বা PostgreSQL data disk-এ রাখে এবং বেশি ব্যবহৃত data cache করে। কেন Redis বেছে নিচ্ছেন, তা স্পষ্টভাবে ব্যাখ্যা করতে না পারলে Redis ব্যবহার করবেন না।
Ubuntu 24.04-এ Node.js 18 package করা আছে, যা প্রয়োজনীয় ন্যূনতম সংস্করণের নিচে। তাই প্রথমে একটি বর্তমান runtime install করুন।
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs git build-essential
sudo adduser --system --group --home /srv/nodebb nodebb
sudo -u nodebb git clone -b v4.x https://github.com/NodeBB/NodeBB.git /srv/nodebb
cd /srv/nodebb
sudo -u nodebb ./nodebb setup./nodebb setup interactive। এটি কোন database ব্যবহার করবেন এবং সেটিতে কীভাবে সংযোগ করবে তা জানতে চায়। এরপর এটি admin account তৈরি করে এবং একটি port নির্ধারণ করে। port-এর default মান 4567। NodeBB npm start দিয়ে start হয় না। ./nodebb script-টিই interface, আর output ./nodebb log-এ যায়।
./nodebb start daemon হিসেবে background-এ চলে। reboot হওয়া machine-এর জন্য এটি সঠিক নয়। এর পরিবর্তে foreground-এ systemd-এর অধীনে loader চালান।
[Unit]
Description=NodeBB
After=network.target
[Service]
Type=simple
User=nodebb
WorkingDirectory=/srv/nodebb
ExecStart=/usr/bin/env node loader.js --no-daemon
Restart=on-failure
[Install]
WantedBy=multi-user.target--no-daemon হলো যে অংশটি অনেকে বাদ দেন। এটি না থাকলে loader fork করে এবং parent process বন্ধ হয়ে যায়। ফলে systemctl status nodebb unit-টিকে dead হিসেবে report করে, যদিও curl localhost:4567 তখনও response দেয়, এবং systemctl stop nodebb পরে কোনো process বন্ধ করতে পারে না। reverse proxy-এর পেছনে থাকলে websocket upgrade header pass through করতে হবে। nginx block-এ proxy_set_header Upgrade $http_upgrade; এবং proxy_set_header Connection "upgrade"; না থাকলে forum load হবে, browser console-এ failed socket.io request জমতে থাকবে, এবং reader refresh না করা পর্যন্ত নতুন post দেখা যাবে না।
Moderation-এর সুবিধা Flarum এবং Discourse-এর মাঝামাঝি। Admin panel-এ flag queue, category-ভিত্তিক privilege এবং reputation system রয়েছে। nodebb-plugin-spam-be-gone-এর মতো community plugin-এর মাধ্যমে anti-spam সুবিধা পাওয়া যায়। এটি Akismet এবং StopForumSpam সংযুক্ত করে।
Backup manual, কিন্তু backup দরকার না হওয়া পর্যন্ত কেউ বিষয়টি উল্লেখ করে না। ./nodebb CLI-তে backup command নেই। আপনাকেই mongodump অথবা pg_dump দিয়ে database dump করতে হবে। পাশাপাশি public/uploads directory এবং config.json-ও copy করতে হবে। config.json-এ database credential এবং site URL থাকে। তাই এটি ছাড়া restore করলে সেটি কেবল নতুন install হবে। First-party importer-ও নেই। nodebb-plugin-import একটি community project, যা সময়ের সঙ্গে সামঞ্জস্য রেখে update হয়নি। অন্যদিকে Discourse-এর সঙ্গে NodeBB importer ship করে। তাই নিশ্চিতভাবে কাজ করে এমন migration পথটি Discourse-এর দিকে যায়।
phpBB: ছোট, সাধারণ, কিন্তু এখনও কার্যকর
phpBB পুরোনো, আর সেটিই এর পক্ষে সবচেয়ে বড় যুক্তি। 3.3 সিরিজটি PHP 7.2.0 থেকে PHP 8.3 পর্যন্ত, PHP 8.3-সহ, চলে। এটি MySQL 4.1.3+, MariaDB 5.1+, PostgreSQL 8.3+, SQLite 3.6.15+, MS SQL Server এবং Oracle সমর্থন করে। এর জন্য json, mbstring, XML support এবং getimagesize() function সক্রিয় থাকতে হয়।
এই তালিকায় phpBB থাকার মূল কারণ SQLite। SQLite ব্যবহার করলে forum-টি হয় PHP file-এর একটি directory এবং একটি database file। কোনো database server নেই, tune করার কিছু নেই, backup করার অতিরিক্ত কিছু নেই। এমন একটি 1 GB VPS-এ, যেখানে ইতিমধ্যে অন্য কিছু চলছে, এই পার্থক্য বাস্তব। ছোট community-এর জন্য SQLite ব্যবহার করুন। Concurrent posting বেড়ে গেলে MySQL-এ চলে যান, কারণ SQLite write operation serialise করে এবং post একটির পর একটি queue-তে অপেক্ষা করতে শুরু করে।
Composer step বা container কোনোটিই নেই। PHP-সহ একটি web server install করুন, archive unpack করুন এবং browser installer চালান। সম্পূর্ণ stack setup Ubuntu 24.04-এ একটি standard LAMP stack-এ দেখানো হয়েছে।
sudo apt update
sudo apt install -y apache2 php libapache2-mod-php php-mysql php-mbstring php-xml php-gd unzipphpbb.com থেকে বর্তমান 3.3 release download করুন। এটি আপনার vhost যে directory serve করে সেখানে unpack করুন। এরপর installer যে path-গুলোতে লিখবে, সেগুলো web server user-এর জন্য writable করুন।
sudo chown -R www-data:www-data /srv/phpbb
sudo chmod 660 /srv/phpbb/config.php
sudo chmod -R 770 /srv/phpbb/store /srv/phpbb/cache /srv/phpbb/files /srv/phpbb/images/avatars/uploadOfficial instruction-এ 666 এবং 777 permission দেওয়ার কথা বলা আছে। Shared hosting-এর জন্য এই সংখ্যাগুলো প্রাসঙ্গিক, কারণ সেখানে PHP কোন user হিসেবে চলে তা আপনি নিয়ন্ত্রণ করেন না। নিজের VPS-এ আপনি সেটি নিয়ন্ত্রণ করেন। তাই ownership www-data-কে দিন এবং অন্য সবার access বন্ধ রাখুন। Apache-এর একটি বিষয় অনেকের নজর এড়ায়: Ubuntu-এর configuration কেবল তার নিজস্ব default document root-এর অধীনে access অনুমোদন করে। তাই /srv/phpbb-কে নির্দেশ করা vhost-এ Require all granted-সহ একটি মিল থাকা <Directory> block-ও প্রয়োজন। তা না হলে phpBB-তে পৌঁছানোর আগেই প্রতিটি request 403 Forbidden ফেরত দেবে। Browser-এ /install/index.php-এ setup শেষ করুন। এরপর config.php আবার 640 করুন এবং install/ directory মুছে ফেলুন। directory-টি না মুছলে phpBB এটি নিয়ে বারবার warning দেখাতে থাকবে।
Spam phpBB-এর পরিচিত সমস্যা, তবে এটি সমাধান করা যায়। Registration form-টি একটি অনুমানযোগ্য URL-এ থাকে (ucp.php?mode=register)। তাই domain crawl হওয়ার কয়েক দিনের মধ্যেই bot-গুলো এটি খুঁজে পায়। কার্যকর সমাধানটি admin panel-এর Spambot countermeasures অংশে আছে: anti-spam method হিসেবে Question and Answer নির্বাচন করুন এবং এমন একটি প্রশ্ন লিখুন যার উত্তর শুধু আপনার community-এর সদস্যরা জানে। Image CAPTCHA (completely automated public Turing test) প্রতি হাজারে মূল্য নেওয়া service-গুলো অল্প খরচে solve করে দেয়। আপনার নিজের subject নিয়ে করা একটি প্রশ্ন এভাবে solve করা যায় না।
Migration-এর জন্যও phpBB সবচেয়ে ভালোভাবে সমর্থিত source। Discourse-এর phpbb3.rb এই পুরো article-এর সবচেয়ে বেশি ব্যবহৃত importer। phpBB support forum-এ বিশ বছরের সমাধানও পাওয়া যায়। এখান থেকে বের হওয়া হলো mysqldump, অথবা SQLite file copy করা। তবে আপনার style এবং extension স্থানান্তরিত হবে না।
ফোরাম নিবন্ধনের ইমেল কেন কখনও পৌঁছায় না?
এই চারটির প্রতিটিতে নিবন্ধন নিশ্চিতকরণ ইমেলের ওপর নির্ভরশীল। সেই ইমেল না পৌঁছালে account কখনও সক্রিয় হয় না, এবং log-এ এমন একটি signup দেখা যায় যা আর এগোয়নি। Outbound mail deliverability ফোরাম আদৌ কাজ করবে কি না তা নির্ধারণ করে। তাই এটিকে installation-এর অংশ হিসেবে বিবেচনা করুন।
- বেশিরভাগ VPS provider ডিফল্টভাবে outbound port 25 block করে। তাই সরাসরি mail deliver করার চেষ্টা করা local Postfix কোথাও পৌঁছাতে পারে না। mail log-এ
connect to gmail-smtp-in.l.google.com[...]:25: Connection timed outদেখা যায়। - একেবারে নতুন IP address-এর কোনো sending reputation থাকে না। তাই delivery সফল হলেও message spam folder-এ যেতে পারে। Confirmation link-এর ক্ষেত্রে এর ফল message না পৌঁছানোর সমান।
- DNS-এ SPF (sender policy framework) এবং DKIM (domainkeys identified mail) record publish না করলে বড় provider-গুলো message সরাসরি reject করে। Google's rejection-এ
550 5.7.26 Unauthenticated email from example.com is not accepted due to domain's DMARC policyদেখা যায়। এখন volume-এ mail পাঠানো প্রত্যেকের কাছ থেকেই DMARC (domain-based message authentication, reporting and conformance) প্রত্যাশিত।
বাস্তবসম্মত সমাধান হলো একটি relay ব্যবহার করা। ফোরামের SMTP settings-এ port 587 ব্যবহারকারী একটি transactional mail provider নির্ধারণ করুন। সেই provider দেওয়া SPF, DKIM এবং DMARC record publish করুন। Mail পাঠানোর জন্য mail.example.com-এর মতো একটি subdomain ব্যবহার করুন, যাতে ফোরামের reputation আপনার personal mail থেকে আলাদা থাকে। নিজে mail server চালানো সম্ভব, এবং VPS-এ সম্পূর্ণ self-hosted mail server-এ এর বিস্তারিত আছে। তবে forum launch-এর সপ্তাহ deliverability শেখার উপযুক্ত সময় নয়।
ফোরাম ঘোষণা করার আগে পরীক্ষা করুন। Discourse-এ container-এর ভেতর থেকে:
cd /var/discourse
./launcher enter app
rake emails:test[you@example.com]এই task SMTP connection পরীক্ষা করে এবং একটি message পাঠায়। Credentials ভুল হলে এটি সাধারণত Net::SMTPAuthenticationError হিসেবে failure-এর কারণ জানায়। phpBB-তে admin panel-এর Client communication অংশে এর সমতুল্য test আছে। Flarum এবং NodeBB-এর ক্ষেত্রে বড় provider-এর real mailbox ব্যবহার করে একটি অস্থায়ী account নিবন্ধন করুন এবং যে message পৌঁছায় তার raw headers পড়ুন। Authentication-Results header-এ spf=pass এবং dkim=pass থাকাই আপনি খুঁজছেন এমন ফল।
Discourse-এর ক্ষেত্রে একটি বিষয় মনে রাখুন। August 2026 অনুযায়ী setup wizard আপনাকে SMTP বাদ দিয়ে Discourse ID ব্যবহার করার সুযোগ দেয়। এতে emailed link-এর পরিবর্তে external account দিয়ে sign in করা যায়। Relay ছাড়াই এতে launch করা সম্ভব। তবে notification mail বা password reset এতে পাওয়া যায় না। তাই community বড় হওয়ার আগেই SMTP configure করুন।
কীভাবে forum-কে TLS-এর পেছনে রাখবেন?
Flarum এবং phpBB সাধারণ virtual host হিসেবে চলে। তাই আপনি ইতিমধ্যে চালু রেখেছেন এমন web server-এ certbot ব্যবহার করলেই যথেষ্ট। NodeBB এবং Discourse ভিন্ন। এগুলো local port-এ listening করা application, তাই সামনে এমন একটি স্তর থাকতে হবে যা TLS (transport layer security) termination করবে এবং hostname অনুযায়ী routing করবে। একই server-এ forum-এর সঙ্গে অন্য service থাকলে সবার সামনে একটি reverse proxy রাখুন। একাধিক Docker Compose app-এর সামনে Traefik এই কাজের জন্য ব্যবহৃত হয়।
Discourse ডিফল্টভাবে port 80 এবং 443 নিজেই দখল করে। এটি নিজের nginx এবং নিজের Let's Encrypt template ব্যবহার করে। বিদ্যমান proxy-এর পেছনে রাখতে চাইলে app.yml সম্পাদনা করুন, templates/web.letsencrypt.ssl.template.yml line মুছে ফেলুন, exposed port এমনভাবে পরিবর্তন করুন যাতে container শুধু একটি local address-এ listening করে, তারপর ./launcher rebuild app চালান। পরে এই পরিবর্তন করলে rebuild এবং কয়েক মিনিট downtime প্রয়োজন হবে। তাই install করার আগে সিদ্ধান্ত নিন, পরে নয়।
কোন forum আপনার community-এর আকারের জন্য উপযুক্ত?
সিদ্ধান্ত নেওয়ার নিয়মটি feature নিয়ে নয়, মানুষের সংখ্যা নিয়ে।
- কয়েকশোর কম member, একজন moderator এবং 1 GB RAM হলে: SQLite-এ phpBB ব্যবহার করুন। আধুনিক interface চান এবং MariaDB চালাতে পারেন, তাহলে Flarum ব্যবহার করুন। দুটিই একটি করে PHP application, যেগুলোর patch আপডেট রাখা সহজ।
- Community বাড়ছে, moderator দুইজন বা তার বেশি এবং 4 GB RAM থাকলে: Discourse ব্যবহার করুন। একজনের পক্ষে moderation সামলানো কঠিন হয়ে গেলেই trust level এবং review queue-এর সুবিধা অতিরিক্ত resource ব্যবহারের মূল্য দেয়।
- স্থায়ী thread-এর চেয়ে live conversation বেশি গুরুত্বপূর্ণ হলে: NodeBB ব্যবহার করুন। অথবা এটি chat হিসেবে গ্রহণ করে Docker Compose-এ Rocket.Chat চালান। যে forum-এর কোনো বিষয় এক সপ্তাহ পর পড়ার মতো থাকে না, সেটি chat server হওয়াই উচিত ছিল।
- আপনার প্রকৃত প্রয়োজন discussion নয়, documentation হলে: এগুলোর কোনোটিই নয়। BookStack, Wiki.js বা Outline এই প্রয়োজন ভালোভাবে পূরণ করে। একই প্রশ্ন বারবার থাকা forum সাধারণত একটি অনুপস্থিত wiki-এর লক্ষণ।
- কোন service আদৌ এই server-এ রাখা উচিত, তা এখনও নির্ধারণ না করে থাকলে: 2026 সালের বিস্তৃত self-hosting shortlist দিয়ে শুরু করা ভালো। self-hosted Notion alternatives guide forum এবং shared workspace-এর মধ্যকার মিল থাকা ব্যবহারক্ষেত্রগুলো ব্যাখ্যা করে।
আপনি যেটিই বেছে নিন, forum-এর স্থায়িত্ব তার সর্বশেষ সফলভাবে restore করা backup পর্যন্তই। নির্ধারিত সময়সূচি অনুযায়ী database dump করুন, একই job-এ uploads directory-ও copy করুন, এবং dump ব্যবহারযোগ্য কি না নিশ্চিত করতে একবার অন্য কোথাও restore করুন। VPS-এ নির্ধারিত restic backup এই অংশটি ব্যাখ্যা করে। এই setup-এর এটিই একমাত্র অংশ, যেখানে দ্বিতীয়বার চেষ্টা করার সুযোগ নেই।
FAQ
একটি self-hosted forum-এর জন্য ন্যূনতম server requirement কী?
অন্য service-এর পাশাপাশি phpBB with SQLite চালাতে 1 GB RAM যথেষ্ট, কারণ আলাদা database server প্রয়োজন হয় না। Flarum-এর জন্য 1 GB RAM-এর সঙ্গে MariaDB দরকার। MongoDB-এর সঙ্গে NodeBB 2 GB RAM-এ স্বচ্ছন্দে চলে। Discourse swap-সহ 1 GB RAM এবং 10 GB disk-কে ন্যূনতম requirement হিসেবে উল্লেখ করে। তবে বাস্তবে 2 GB হলো গ্রহণযোগ্য সর্বনিম্ন সীমা, আর ব্যস্ত forum-এর জন্য 4 GB উপযুক্ত। কারণ ./launcher rebuild app প্রতিটি upgrade-এর সময় memory-তে asset পুনরায় compile করে। তখন ছোট server-টি kernel-এর out-of-memory handler-এর কারণে বন্ধ হয়ে যেতে পারে।
আমি কি আমার phpBB forum Discourse-এ স্থানান্তর করতে পারি?
হ্যাঁ। এখানে এটিই সবচেয়ে ভালোভাবে সমর্থিত migration path। Discourse script/import_scripts/phpbb3.rb সরবরাহ করে। এটি live database-এর বিরুদ্ধে নয়, phpBB database-এর একটি copy-এর বিরুদ্ধে container-এর ভিতরে চালাবেন। User, category, topic, post এবং attachment স্থানান্তরিত হয়। Style এবং extension স্থানান্তরিত হয় না। পুরোনো topic URL-ও পরিবর্তিত হয়। তাই DNS পরিবর্তনের আগে phpBB path থেকে redirect পরিকল্পনা করুন। বড় board-এ কয়েক ঘণ্টা লাগতে পারে। তাই একটি পরীক্ষামূলক server-এ একবার import চালিয়ে অনুশীলন করুন এবং সময় মেপে নিন।
নতুন user-রা activation email কখনো পায় না কেন?
বেশিরভাগ VPS provider outbound port 25 block করে। ফলে local mail server একেবারেই mail deliver করতে পারে না, এবং log-এ recipient-এর mail exchanger-এর বিরুদ্ধে Connection timed out দেখা যায়। Delivery কাজ করলেও SPF বা DKIM record না থাকা নতুন IP reject বা filter করা হয়। তখন Google 550 5.7.26 Unauthenticated email ... is not accepted due to domain's DMARC policy দিয়ে উত্তর দেয়। Port 587 ব্যবহার করে একটি relay-এর মাধ্যমে mail পাঠান। Relay যে SPF, DKIM এবং DMARC record দেয়, সেগুলো publish করুন। এরপর একটি test registration করে নিশ্চিত হন এবং পাওয়া message-এর Authentication-Results header পড়ুন।
কোন self-hosted forum software-এ moderation-এর কাজ সবচেয়ে কম?
Discourse, কারণ moderation workflow core-এর মধ্যেই থাকে; পরে আলাদা করে যুক্ত করতে হয় না। নতুন account-গুলো পর্যাপ্ত content না পড়া পর্যন্ত rate limited থাকে। Flag একটি queue-তে জমা হয় এবং কে সেগুলোর ওপর কাজ করেছে তা record করা হয়। Akismet plugin-টিও official। Question and Answer anti-spam method enable করলে phpBB-ও কাছাকাছি ফল দেয়। এটি নিজে থেকেই অধিকাংশ bot registration বন্ধ করে। একই কাজের জন্য Flarum এবং NodeBB community extension-এর ওপর নির্ভর করে। তবে মূল বিষয়টি বদলে যায় না: moderation load নির্ভর করে কতজন post করে তার ওপর, কোন software-এ post করে তার ওপর নয়।