SSD Nodes Learn 🎉 VPS từ $5.50/tháng
Hướng dẫn Matt ConnorBởi Matt Connor

So sánh Discourse, Flarum, NodeBB và phpBB trên VPS

So sánh Discourse, Flarum, NodeBB và phpBB trên VPS: RAM thực tế, database đi kèm, chống spam, mail path và cách migration khi cần chuyển forum.

Nên chạy phần mềm forum tự host nào?

Phần mềm forum tự host hiện có 4 lựa chọn thực tế mà bạn có thể chạy trên VPS (virtual private server): Discourse, Flarum, NodeBB và phpBB. Discourse là lựa chọn mặc định phù hợp nếu bạn có thể cấp cho nó 4 GB RAM và có ít nhất 2 người sẵn sàng làm moderator. Với 1 GB RAM và 1 moderator, hãy chạy Flarum hoặc phpBB. Một forum ít hoạt động nhưng luôn được dọn sạch tốt hơn một forum tốt hơn nhưng bạn không thể quản lý.

Cài đặt là phần dễ nhất. Cả 4 phần mềm này đều có thể chạy trong một buổi chiều. Điều quyết định forum còn tồn tại sau 1 năm là hàng đợi báo cáo và mail path. Vì vậy, hãy đọc các phần về moderation và email trước khi đọc danh sách tính năng.

Một forum thực sự cần gì để chạy?

Một forum gồm 4 thành phần, không phải một thành phần: process của ứng dụng, database phải tồn tại độc lập với process đó, thư mục lưu avatar và file đính kèm đã upload, cùng một đường đi hoạt động được để gửi mail. Ứng dụng có thể thay thế. Database thì không, vì mọi bài viết, mọi account và mọi tin nhắn riêng đều nằm trong đó. Vì vậy, database mà mỗi project lựa chọn là dòng quan trọng nhất trong các phần bên dưới. Nó quyết định export của bạn sẽ có dạng gì vào ngày bạn muốn rời đi.

Chi phí thứ hai là công sức vận hành. Cho phép đăng ký và đăng bài công khai đồng nghĩa với việc sẽ có bot tạo account, thường trong tuần đầu tiên sau khi domain xuất hiện trong dữ liệu crawl. Có thể khóa chặt cả 4 thành phần. Chỉ 1 trong số đó có sẵn workflow này trong core.

Discourse: mặc định và chi phí thực tế

Discourse chạy trên Ruby on Rails, dùng PostgreSQL để lưu dữ liệu, Redis cho cache và hàng đợi job, còn Sidekiq xử lý công việc nền. Cách cài đặt được hỗ trợ sẽ đặt tất cả thành phần này trong một Docker container duy nhất, được build từ file cấu hình tại /var/discourse/containers/app.yml. Bạn không cần tự cài từng thành phần.

wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse | sudo bash

Script đó sẽ cài git và Docker nếu chúng chưa có, clone discourse_docker vào /var/discourse, rồi chuyển sang wizard tương tác discourse-setup. Wizard yêu cầu hostname, địa chỉ email admin và thông tin SMTP (simple mail transfer protocol), ghi cấu hình vào app.yml rồi build container. Cổng 80 và 443 phải đang trống vì container tự chạy nginx và tự yêu cầu chứng chỉ Let's Encrypt cho bạn.

Mức tối thiểu được công bố là 1 GB RAM kèm swap, cùng 10 GB dung lượng đĩa. Hãy hiểu đúng phần swap này. Khi wizard xác định máy cần swap, setup script sẽ tạo swapfile 2 GB bằng fallocate -l 2G /swapfile, và swap đó không phải phần phụ cho có. Mức dùng RAM cao nhất không xảy ra khi site đang chạy bình thường. Nó xảy ra ở ./launcher rebuild app, bước biên dịch lại asset JavaScript và CSS bên trong container sau mỗi lần upgrade. Trên máy 1 GB không có swap, bước này bị kill giữa chừng, quá trình rebuild kết thúc mà màn hình không hiện lỗi hữu ích, còn dmesg | tail sẽ hiển thị một dòng Out of memory: Killed process. Hãy dành 2 GB RAM để chạy ổn định, và 4 GB khi forum đã có nhiều người dùng.

Bạn có thể upgrade từ /admin/upgrade trong trình duyệt hoặc từ shell:

cd /var/discourse
./launcher rebuild app

rebuild hủy container đang chạy, bootstrap container mới từ app.yml rồi khởi động nó, nên site sẽ ngừng hoạt động trong vài phút cần để hoàn tất quá trình này. Với một container duy nhất thì không có cách tránh thời gian downtime đó. Tách thành 2 container bằng các sample data.ymlweb_only.yml sẽ giữ PostgreSQL tiếp tục chạy trong khi web container được rebuild. Cách này đáng dùng khi bạn đã có người dùng nhận biết downtime.

Moderation là phần khiến Discourse cần nhiều RAM. Tài khoản mới bắt đầu ở trust level 0, với giới hạn cứng về số lượng link được đăng và tốc độ đăng. Sau đó tài khoản tăng trust level khi người dùng đọc và tham gia. Các flag được đưa vào review queue, trong đó ghi lại ai đã xử lý nội dung nào. Akismet và StopForumSpam có plugin chính thức. Với 3 dịch vụ còn lại, bạn phải tự ghép chức năng này từ các add-on.

Migration vào Discourse là điểm mạnh nhất của nó. Thư mục script/import_scripts/ trong source tree có hơn 60 importer, gồm phpbb3.rb, vbulletin.rb, xenforo.rb, vanilla.rb, mybb.rb, flarum_import.rb, một thư mục nodebb và importer mbox dành cho archive của mailing list. Đây là các Ruby script được chạy bên trong container trên bản sao của database cũ. Chúng chạy chậm nhưng vẫn được maintain.

Migration ra là điểm yếu. ./launcher enter app rồi discourse backup sẽ ghi một .tar.gz chứa PostgreSQL dump cùng thư mục upload. Một Discourse khác có thể restore gói này. Không phần mềm nào khác đọc được nó, nên nếu rời Discourse, bạn phải tự viết SQL để xử lý dump đó. Hãy xác định rằng bạn chấp nhận hạn chế này trước khi import 50,000 bài viết.

Flarum: diễn đàn PHP nhẹ

Flarum là một ứng dụng PHP thông thường: php-fpm chạy phía sau nginx hoặc Apache, cơ sở dữ liệu MySQL hoặc MariaDB, và các file được lưu trên ổ đĩa. Yêu cầu được công bố là PHP 7.3 trở lên với các extension curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer và zip, cùng MySQL 5.6+ (hoặc 8.0.23+) hoặc MariaDB 10.0.5+. Ubuntu 24.04 đi kèm PHP 8.3, cao hơn mức tối thiểu này.

Hãy chú ý pdo_mysql trong danh sách đó. Flarum không hỗ trợ PostgreSQL và cũng không hỗ trợ SQLite. Nếu bạn muốn một cơ sở dữ liệu chỉ gồm một file, hãy dùng phpBB ở phần dưới.

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/flarum

Trỏ web server vào /srv/flarum/public, không phải /srv/flarum. Mã ứng dụng, file cấu hình và mật khẩu cơ sở dữ liệu đều nằm cao hơn public một cấp. Vì vậy, document root cao hơn một cấp sẽ cung cấp thông tin xác thực cho bất kỳ ai yêu cầu. Trên Apache, bạn cũng cần mod_rewriteAllowOverride All để .htaccess đi kèm được áp dụng. Trên nginx, include .nginx.conf đi kèm bên trong server block. Sau đó mở domain trong trình duyệt. Installer của Flarum sẽ yêu cầu thông tin cơ sở dữ liệu và tài khoản admin.

Phiên bản tính đến tháng 8 năm 2026: 1.8.17 là bản stable hiện tại, được phát hành vào tháng 6 năm 2026, còn 2.0 đang ở release candidate 5. Không nên tạo community mới trên release candidate. Khi 2.0 ra mắt, các extension phải được cập nhật thì mới load được. Đây là lần upgrade có thể khiến bạn mất cả một cuối tuần.

Flarum tiêu tốn ít tài nguyên. Chỉ cần vài worker php-fpm, MariaDB cần vài trăm MB và các file tĩnh. Một community mới có thể chạy trên 1 GB.

Moderation là điểm yếu rõ ràng nhất. Core cung cấp report và quyền theo từng group. Hàng đợi phê duyệt và chặn spam do các extension cung cấp, chủ yếu từ collection FriendsOfFlarum. Bạn cài chúng bằng composer require rồi bật trong admin panel. Cách này hiện vẫn hoạt động. Tuy nhiên, bạn đang phụ thuộc vào một hệ sinh thái volunteer nhỏ hơn so với phpBB hoặc Discourse. Một extension không còn được maintain sẽ chặn lần core upgrade tiếp theo, vì composer không thể resolve extension đó với version mới.

Đưa dữ liệu ra ngoài khá dễ: mysqldump cơ sở dữ liệu rồi copy thư mục assets. Đưa dữ liệu vào khó hơn. Discourse cung cấp flarum_import.rb cho hướng chuyển từ Flarum sang Discourse. Điều đó cho thấy dữ liệu thường được chuyển theo hướng nào. Import phpBB vào Flarum phải dùng extension do community phát triển, không có công cụ first-party. Vì vậy, hãy test extension trên một bản copy trước khi giao cho nó bản copy duy nhất.

NodeBB: đăng bài theo thời gian thực và cái giá đi kèm

NodeBB chạy trên Node.js. Nó đẩy bài đăng mới đến các trình duyệt đang mở qua websockets, nên một thread đang hoạt động sẽ tự cập nhật mà không cần refresh. Đây là lý do nên chọn nó. README yêu cầu Node.js 22 trở lên và MongoDB 5+ hoặc Redis 7.2+, đồng thời source tree có sẵn PostgreSQL driver như một lựa chọn thứ ba.

Dùng Redis làm database chính là cái bẫy trong câu đó. Redis giữ dataset trong memory, nên nhu cầu RAM tăng theo quy mô forum thay vì giữ ổn định. MongoDB hoặc PostgreSQL lưu dữ liệu trên disk và cache phần đang được truy cập nhiều. Chỉ chọn Redis khi bạn giải thích được lý do.

Ubuntu 24.04 cung cấp Node.js 18, thấp hơn mức tối thiểu, nên trước hết hãy cài runtime hiện tại.

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 là giao diện tương tác. Nó hỏi bạn muốn dùng database nào và kết nối đến database ra sao, sau đó tạo admin account và chọn port, mặc định là 4567. NodeBB không khởi động bằng npm start. Script ./nodebb là interface, còn ./nodebb log là nơi output được ghi vào.

./nodebb start chạy dưới dạng daemon, không phù hợp với máy có thể reboot. Thay vào đó, hãy chạy loader dưới systemd ở foreground.

[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 là phần nhiều người bỏ sót. Nếu thiếu nó, loader sẽ fork rồi tiến trình cha thoát, nên systemctl status nodebb báo unit đã chết trong khi curl localhost:4567 vẫn trả lời, còn systemctl stop nodebb không dừng được gì. Khi chạy sau reverse proxy, phải chuyển tiếp các websocket upgrade headers. Nếu thiếu proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade"; trong nginx block, forum vẫn tải được, nhưng console của trình duyệt liên tục ghi nhận các request socket.io thất bại và bài đăng mới không xuất hiện cho đến khi người đọc refresh.

Moderation của NodeBB nằm giữa Flarum và Discourse. Admin panel có hàng đợi flag, quyền theo từng category và hệ thống reputation. Anti-spam đến từ các community plugin như nodebb-plugin-spam-be-gone, tích hợp Akismet và StopForumSpam.

Backup phải thực hiện thủ công và thường chỉ được nhắc đến khi bạn cần khôi phục. CLI ./nodebb không có lệnh backup. Bạn phải tự dump database bằng mongodump hoặc pg_dump, đồng thời copy thư mục public/uploadsconfig.json cùng với dump đó. config.json chứa database credentials và site URL, nên restore mà thiếu file này chỉ tạo ra một bản cài đặt mới. NodeBB cũng không có importer chính thức. nodebb-plugin-import là một community project chưa được cập nhật kịp thời, còn Discourse có sẵn NodeBB importer, nên lối chuyển đổi chắc chắn hoạt động là sang Discourse.

phpBB: lựa chọn nhỏ, đơn giản nhưng vẫn hoạt động tốt

phpBB đã cũ, và đó chính là lý do nên chọn nó. Nhánh 3.3 chạy trên PHP 7.2.0 đến PHP 8.3, bao gồm cả PHP 8.3, đồng thời hỗ trợ MySQL 4.1.3+, MariaDB 5.1+, PostgreSQL 8.3+, SQLite 3.6.15+, MS SQL Server và Oracle. Nó cần hỗ trợ json, mbstring, XML và phải bật hàm getimagesize().

SQLite là lý do phpBB có mặt trong danh sách này. Với SQLite, forum chỉ gồm một thư mục chứa các file PHP và một file database. Không cần database server, không có gì phải tinh chỉnh, cũng không có thành phần bổ sung cần backup. Trên một VPS 1 GB đã chạy sẵn dịch vụ khác, khác biệt này rất đáng kể. Dùng SQLite cho cộng đồng nhỏ và chuyển sang MySQL khi số bài đăng đồng thời tăng lên, vì SQLite tuần tự hóa thao tác ghi và các bài đăng sẽ phải xếp hàng chờ nhau.

Không có bước composer và không cần container. Cài web server kèm PHP, giải nén archive rồi chạy trình cài đặt trong browser. Phần thiết lập đầy đủ được trình bày trong stack LAMP tiêu chuẩn trên Ubuntu 24.04.

sudo apt update
sudo apt install -y apache2 php libapache2-mod-php php-mysql php-mbstring php-xml php-gd unzip

Tải release 3.3 hiện tại từ phpbb.com, giải nén vào thư mục mà vhost phục vụ, sau đó cấp quyền ghi cho user web server trên các đường dẫn mà trình cài đặt cần ghi.

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/upload

Tài liệu chính thức yêu cầu dùng quyền 666 và 777. Các con số đó dành cho shared hosting, nơi bạn không kiểm soát user mà PHP chạy dưới quyền user đó. Trên VPS riêng, bạn kiểm soát được user này, vì vậy hãy gán quyền sở hữu cho www-data và không cho các user khác truy cập. Có một chi tiết về Apache thường gây lỗi: cấu hình của Ubuntu chỉ cấp quyền truy cập bên dưới document root mặc định của nó. Vì vậy, vhost trỏ đến /srv/phpbb cũng cần một block <Directory> tương ứng với Require all granted, nếu không mọi request sẽ trả về 403 Forbidden trước khi tới được phpBB. Hoàn tất cài đặt trong browser tại /install/index.php, sau đó đặt config.php về 640 và xóa thư mục install/. phpBB sẽ tiếp tục cảnh báo về thư mục đó cho đến khi nó bị xóa.

Spam là vấn đề nổi tiếng của phpBB, nhưng có thể xử lý được. Form đăng ký nằm tại một URL dễ đoán (ucp.php?mode=register), nên bot sẽ tìm thấy nó trong vài ngày sau khi domain được crawl. Cách xử lý hiệu quả nằm trong admin panel, tại Spambot countermeasures: đặt phương thức chống spam thành Question and Answer, rồi viết một câu hỏi chỉ người trong cộng đồng của bạn mới trả lời được. Image CAPTCHA (completely automated public Turing tests) có thể bị các dịch vụ tính phí theo mỗi nghìn lượt giải với chi phí thấp. Một câu hỏi liên quan đến chủ đề riêng của bạn thì không dễ bị xử lý như vậy.

phpBB cũng là nguồn được hỗ trợ tốt nhất cho việc migration. phpbb3.rb của Discourse là importer được sử dụng nhiều nhất trong toàn bộ bài viết này, và các forum hỗ trợ phpBB có sẵn câu trả lời cho những vấn đề phát sinh trong suốt hai mươi năm. Việc chuyển khỏi phpBB là mysqldump, hoặc bạn có thể sao chép file SQLite. Những thành phần không được chuyển theo là styles và extensions của bạn.

Vì sao email đăng ký forum không bao giờ đến?

Đăng ký trên cả 4 nền tảng này đều yêu cầu xác nhận qua email. Nếu email không đến, account không bao giờ được kích hoạt và log chỉ cho thấy một lần đăng ký đã dừng giữa chừng. Khả năng gửi mail ra ngoài quyết định forum có hoạt động được hay không, vì vậy hãy xem đây là một phần của quá trình cài đặt.

  • Hầu hết nhà cung cấp VPS mặc định chặn port 25, nên Postfix cục bộ cố gắng gửi trực tiếp sẽ không đi đến đâu. Mail log sẽ hiển thị connect to gmail-smtp-in.l.google.com[...]:25: Connection timed out.
  • Một địa chỉ IP hoàn toàn mới chưa có reputation gửi mail, nên ngay cả khi gửi thành công, email vẫn có thể vào thư mục spam. Với email chứa confirmation link, kết quả này cũng giống như email không đến.
  • Nếu chưa publish các record SPF (sender policy framework) và DKIM (domainkeys identified mail) trong DNS, các nhà cung cấp lớn có thể từ chối thẳng message. Thông báo từ chối của Google là 550 5.7.26 Unauthenticated email from example.com is not accepted due to domain's DMARC policy. DMARC (domain-based message authentication, reporting and conformance) hiện cũng được yêu cầu đối với mọi bên gửi mail với số lượng lớn.

Cách thực tế là dùng relay. Trỏ cấu hình SMTP của forum đến một transactional mail provider trên port 587, publish các record SPF, DKIM và DMARC do provider cấp, rồi gửi từ một subdomain như mail.example.com để reputation của forum tách biệt với mail cá nhân. Bạn vẫn có thể tự chạy mail server; một mail server self-host hoàn chỉnh trên VPS trình bày cách thực hiện, nhưng tuần ra mắt forum không phải thời điểm phù hợp để học về deliverability.

Hãy test trước khi công bố forum. Trên Discourse, chạy lệnh sau từ bên trong container:

cd /var/discourse
./launcher enter app
rake emails:test[you@example.com]

Task này kiểm tra kết nối SMTP và gửi một message. Khi credentials sai, nó sẽ nêu rõ lỗi, thường là Net::SMTPAuthenticationError. phpBB có chức năng test tương đương trong admin panel, tại mục Client communication. Với Flarum và NodeBB, hãy đăng ký một account dùng một lần bằng mailbox thật của một nhà cung cấp lớn, rồi đọc raw headers của email nhận được. spf=passdkim=pass trong header Authentication-Results là kết quả cần kiểm tra.

Có một điểm riêng với Discourse. Từ tháng 08/2026, setup wizard cho phép bỏ qua SMTP và chuyển sang Discourse ID, dùng account bên ngoài để đăng nhập thay vì link gửi qua email. Cách này giúp bạn đưa forum vào hoạt động mà không cần relay. Tuy nhiên, nó không cung cấp notification mail hoặc password reset, nên vẫn hãy cấu hình SMTP trước khi community phát triển.

Làm thế nào để đưa forum chạy sau TLS?

Flarum và phpBB là các virtual host thông thường, nên chỉ cần chạy certbot trên web server hiện có là đủ. NodeBB và Discourse khác nhau: chúng là các ứng dụng lắng nghe trên cổng nội bộ, và cần có một thành phần phía trước để thực hiện TLS termination (transport layer security) và định tuyến theo hostname. Nếu forum dùng chung máy chủ với các dịch vụ khác, hãy đặt một reverse proxy phía trước tất cả dịch vụ. Đây là mục đích của Traefik phía trước nhiều ứng dụng Docker Compose.

Mặc định, Discourse tự chiếm các cổng 80 và 443 bằng nginx riêng và template Let’s Encrypt riêng. Để đặt Discourse phía sau proxy hiện có, bạn chỉnh sửa app.yml, xóa dòng templates/web.letsencrypt.ssl.template.yml, thay đổi các cổng được expose để container chỉ lắng nghe trên một địa chỉ nội bộ, rồi chạy ./launcher rebuild app. Nếu thực hiện sau khi cài đặt, bạn sẽ phải rebuild và chấp nhận vài phút downtime. Vì vậy, hãy quyết định trước khi cài đặt, không phải sau đó.

Diễn đàn nào phù hợp với quy mô cộng đồng của bạn?

Quy tắc quyết định dựa trên số người, không phải tính năng.

  • Dưới vài trăm thành viên, một moderator, 1 GB RAM: dùng phpBB trên SQLite, hoặc Flarum nếu bạn muốn giao diện hiện đại và có thể chạy MariaDB. Mỗi lựa chọn chỉ là một ứng dụng PHP cần duy trì bản vá.
  • Cộng đồng đang phát triển, có từ hai moderator trở lên, 4 GB RAM: dùng Discourse. Trust level và hàng đợi review đáng với mức tài nguyên cần dùng ngay khi việc moderation không còn nằm trong khả năng của một người.
  • Bạn cần trò chuyện trực tiếp hơn là các thread lâu dài: dùng NodeBB, hoặc chấp nhận đó là chat và chạy Rocket.Chat trên Docker Compose thay thế. Một diễn đàn mà sau một tuần không còn bài nào đáng đọc thì đáng lẽ nên là chat server.
  • Thứ bạn thực sự cần là tài liệu thay vì thảo luận: không lựa chọn nào trong số này phù hợp. BookStack, Wiki.js hoặc Outline trả lời nhu cầu đó tốt hơn, và một diễn đàn đầy các câu hỏi lặp lại thường cho thấy bạn đang thiếu một wiki.
  • Bạn vẫn chưa xác định nên đưa những gì lên máy chủ: danh sách rút gọn rộng hơn về các phần mềm self-hosting cho năm 2026 là điểm bắt đầu tốt hơn, còn hướng dẫn về các lựa chọn thay thế Notion tự host bao quát phần giao nhau giữa diễn đàn và workspace dùng chung.

Dù chọn phương án nào, độ bền của diễn đàn chỉ bằng bản backup được restore gần nhất. Dump database theo lịch, copy thư mục uploads trong cùng job, rồi restore kết quả ở một nơi khác một lần để xác nhận dump có thể sử dụng. Backup restic theo lịch trên VPS trình bày phần này, và đây là thành phần duy nhất trong thiết lập này không có cơ hội thứ hai.

FAQ

Yêu cầu máy chủ tối thiểu để tự host một forum là gì?

phpBB dùng SQLite có thể chạy với 1 GB RAM cùng các service khác vì không cần database server. Flarum cần 1 GB RAM và MariaDB. NodeBB chạy ổn với 2 GB RAM và MongoDB. Discourse công bố mức tối thiểu là 1 GB RAM kèm swap và 10 GB dung lượng đĩa, nhưng mức thực tế tối thiểu là 2 GB; 4 GB phù hợp hơn với forum có nhiều hoạt động, vì ./launcher rebuild app biên dịch lại asset trong memory sau mỗi lần upgrade và đó là lúc một máy cấu hình nhỏ dễ bị kernel OOM handler kill.

Tôi có thể chuyển forum phpBB sang Discourse không?

Có. Đây là hướng migration được hỗ trợ tốt nhất trong các lựa chọn này. Discourse cung cấp script/import_scripts/phpbb3.rb. Bạn chạy công cụ này trong container trên một bản sao của database phpBB, không bao giờ chạy trên database đang hoạt động. User, category, topic, post và attachment được chuyển sang. Style và extension không được chuyển, đồng thời URL của topic cũ sẽ thay đổi. Vì vậy, hãy chuẩn bị redirect từ các path của phpBB trước khi chuyển DNS. Board lớn có thể mất vài giờ. Hãy chạy thử import một lần trên server tạm và đo thời gian.

Vì sao user mới không bao giờ nhận được email kích hoạt?

Hầu hết nhà cung cấp VPS chặn port outbound 25. Vì vậy, mail server local hoàn toàn không thể gửi thư và log hiển thị Connection timed out đối với mail exchanger của bên nhận. Khi gửi được, một IP mới không có record SPF hoặc DKIM thường bị từ chối hoặc đưa vào bộ lọc, còn Google trả về 550 5.7.26 Unauthenticated email ... is not accepted due to domain's DMARC policy. Hãy gửi qua relay trên port 587 và publish các record SPF, DKIM và DMARC do relay cung cấp. Sau đó, xác nhận bằng một lần đăng ký thử và đọc header Authentication-Results của email bạn nhận được.

Phần mềm forum tự host nào cần ít công việc moderation nhất?

Discourse, vì workflow moderation được tích hợp trong core thay vì phải bổ sung bằng plugin. Account mới bị rate limit cho đến khi đã đọc đủ nội dung. Các flag được gom vào một queue có ghi lại người đã xử lý. Plugin Akismet cũng là plugin chính thức. phpBB cũng gần tương đương sau khi bật phương thức chống spam Question and Answer. Phương thức này tự chặn phần lớn bot đăng ký. Flarum và NodeBB dựa vào extension cộng đồng cho các tác vụ tương tự. Tuy nhiên, yếu tố quyết định vẫn là khối lượng moderation phụ thuộc vào số người đăng bài, không phải phần mềm mà họ sử dụng.