

























NodeBB 是一款拥有 10 多年历史的开源论坛应用,拥有出色的运行性能与流畅的交互体验,是搭建小型社区的理想方案。
本文使用 Netcup VPS 500 (4vCPU/4GB RAM),基于 Debian GNU/Linux 13 进行演示。
cat <<EOF | sudo tee /etc/sysctl.d/99-nodebb.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 1000000
EOF
使内核配置立即生效:
NodeBB 使用 MongoDB 数据库时,官方建议禁用 Transparent Huge Pages (THP),以避免高并发压力下内存碎片化及严重的锁竞争问题。
创建一个 systemd 服务以实现持久化配置:
cat <<EOF | sudo tee /etc/systemd/system/disable-thp.service
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null'
[Install]
WantedBy=basic.target
EOF
设置开机自启:
sudo systemctl daemon-reload \
&& sudo systemctl enable --now disable-thp.service \
&& sudo systemctl status disable-thp.service
降低系统使用 Swap 交换分区的倾向,尽可能优先使用物理内存:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo apt update \
&& sudo apt install -y ca-certificates \
git \
curl \
gnupg \
git \
build-essential
使用 Nodesource 存储库安装 Nodejs 指定版本:
sudo mkdir -p /etc/apt/keyrings
# 导入 GPG 密钥
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
# 添加软件源
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list \
# 安装 Nodejs
sudo apt update && sudo apt install -y nodejs
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
# 添加软件源
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
# 安装 MongoDB 8.0
sudo apt update && sudo apt install -y mongodb-org
在生产环境中,建议锁定数据库版本,避免意外升级导致的兼容性问题:
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
# 或者使用 apt-mark hold(只需要这一条)
sudo apt-mark hold mongodb-org mongodb-org-database mongodb-org-server mongodb-mongosh mongodb-org-mongos mongodb-org-tools
检查安装:
启动 MongoDB 服务:
sudo systemctl enable --now mongod
sudo systemctl status mongod
进入 MongoDB Shell:
创建管理员账号:
use admin
/* 替换为一个强大的密码 */
db.createUser( { user: "admin", pwd: "<strongPassWord>", roles: [ { role: "root", db: "admin" } ] } )
为 NodeBB 创建专用数据库及用户:
赋予
readWrite权限用于日常数据存取,clusterMonitor权限以便在 NodeBB 管理后台(ACP)查看数据库统计信息。
use nodebb
/* 替换为一个强大的密码 */
db.createUser( { user: "nodebb", pwd: "<strongPassWord>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
/* OK 后退出 MongoDB Shell */
quit()
修改 MongoDB 配置文件 /etc/mongod.conf 启用鉴权:
security:
authorization: enabled
重启 MongoDB 使新配置生效:
sudo systemctl restart mongod
准备一个专门的 nodebb 用户,并配置合理的权限:
# NodeBB 工作目录
sudo mkdir -p /opt/nodebb
sudo adduser --system --group --home /opt/nodebb --shell /bin/bash nodebb
sudo chown -R nodebb:nodebb /opt/nodebb
# 切换到 nodebb 用户
sudo su - nodebb
# 确保在 /opt/nodebb 目录下
cd /opt/nodebb
# 拉取最新的 v4.x 稳定版分支
git clone -b v4.x https://github.com/NodeBB/NodeBB.git .
# 启动安装向导
./nodebb setup
启动后等待 node 模块安装完成:
Dependencies outdated or not yet installed.
Installing them now...
完成后会进入配置向导:
2026-03-08T12:20:08.655Z [8304] - info: NodeBB Setup Triggered via Command Line
Welcome to NodeBB v4.9.1!
This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed.
Press enter to accept the default setting (shown in brackets).
# 输入你打算访问 NodeBB 的完整 URL(不带末尾斜杠)
URL used to access this NodeBB (http://localhost:4567) https://bbs.your.domain
# 随机机密
Please enter a NodeBB secret (<一串随机 uuid>)
# 是否提交匿名插件统计信息
Would you like to submit anonymous plugin usage to nbbpm? (yes) no
# 使用什么数据库?
Which database to use (mongo)
2026-03-08T12:21:10.690Z [8304] - info:
Now configuring mongo database:
MongoDB connection URI: (leave blank if you wish to specify host, port, username/password and database individually)
Format: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
# 数据库主机名
Host IP or address of your MongoDB instance (127.0.0.1)
# 数据库端口,MongoDB 默认 27017
Host port of your MongoDB instance (27017)
# 数据库用户名
MongoDB username nodebb
# 数据库密码
Password of your MongoDB database
# 数据库名称
MongoDB database name (nodebb) nodebb
Configuration Saved OK
Populating database with default configs, if not already set...
Enabling default theme: nodebb-theme-harmony
No categories found, populating instance with default categories
2026-03-08T12:23:01.264Z [8304] - warn: No administrators have been detected, running initial user setup
# 管理员用户名
Administrator username dejavu
# 管理员邮箱
Administrator email address [email protected]
# 管理员密码
Password
Confirm Password
Schema update complete!
NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.
初始安装完成,在 NodeBB 服务启动前,修改服务监听地址:
sudo vim /opt/nodebb/config.json
# 监听地址修改为 127.0.0.1
{
"url": "https://bbs.zsh.moe",
"secret": "uuid",
"database": "mongo",
"port": 4567,
"bind_address": "127.0.0.1",
"mongo": {
"host": "127.0.0.1",
"port": "27017",
"username": "nodebb",
"password": "",
"database": "nodebb",
"uri": ""
}
}
cat <<EOF | sudo tee /etc/systemd/system/nodebb.service
[Unit]
Description=NodeBB Forum Daemon
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=forking
User=nodebb
Group=nodebb
WorkingDirectory=/opt/nodebb
PIDFile=/opt/nodebb/pidfile
ExecStart=/usr/bin/env node /opt/nodebb/loader.js --no-silent
ExecStop=/usr/bin/env node /opt/nodebb/nodebb stop
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
启动 NodeBB 服务:
sudo systemctl daemon-reload \
&& sudo systemctl enable --now nodebb.service \
&& sudo systemctl status nodebb.service
# 检查运行日志
sudo journalctl -u nodebb -f
下面是一个适用于 NodeBB 的示例虚拟主机配置:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name bbs.your.domain;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name bbs.your.domain;
ssl_certificate /etc/nginx/cert/bbs.your.domain.pem;
ssl_certificate_key /etc/nginx/cert/bbs.your.domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:P-256:P-384;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE+AES128:RSA+AES128:ECDHE+AES256:RSA+AES256';
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
access_log /var/log/nginx/bbs.your.domain.access.log;
error_log /var/log/nginx/bbs.your.domain.error.log;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline' 'unsafe-eval' " always;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:27017;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重载 Nginx 配置:
sudo nginx -t && sudo nginx -s reload
后续日常维护需要进行版本升级,下面以 v4.9.1 升级到 v4.9.2 为例。
在进行任何升级操作前,务必备份好数据:
# 停止 NodeBB 服务
sudo systemctl stop nodebb.service
# 备份数据库
mongodump --db=nodebb --archive=nodebb_backup_v4.9.1.gz --gzip
# 备份配置和附件
sudo tar -czvf nodebb_files_backup_v4.9.1.tar.gz -C /opt/nodebb config.json public/uploads
# 切换到 nodebb 用户
sudo su - nodebb
# 进入工作目录
cd /opt/nodebb
# 获取远程仓库的最新变更
git fetch
# 合并最新代码
git checkout v4.x
git merge origin/v4.x
# 开始升级
./nodebb upgrade
升级完成后重新启动服务:
# 退出 nodebb 用户
exit
# 启动服务
sudo systemctl start nodebb.service
# 检查实时日志,确定运行正常
sudo journalctl -u nodebb -f
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。