如何在 Ubuntu 22.04 上安装 NodeBB 论坛

如何在 Ubuntu 22.04 上安装 NodeBB 论坛

NodeBB 是一款由 Node.js 框架提供支持的现代论坛软件。 它使用 MongoDB、PostgreSQL 或 Redis 数据库来存储数据。 它利用网络套接字进行实时通知和即时交互。 它具有社交网络集成、插件支持、移动响应能力和完整的 REST 读/写 API 等现代功能。

NodeBB 可作为开源自托管项目和云服务使用。 在本教程中,您将学习如何在 Ubuntu 22.04 服务器上使用 Nginx 安装 NodeBB 论坛。 Ubuntu 22.04 并未正式支持 MongoDB; 因此,我们将使用PostgreSQL来存储数据。

先决条件

  • 运行 Ubuntu 22.04 且 RAM 至少为 1GB 的服务器。

  • 具有 sudo 权限的非 root 用户。

  • 简单的防火墙(UFW)已启用并正在运行。

  • 指向服务器的完全限定域名 (FQDN),例如: forum.example.com

  • 一切都更新了。

    $sudo apt update && sudo apt upgrade
    

第 1 步 – 配置防火墙

在安装任何软件包之前,第一步是将防火墙配置为允许 HTTP 和 HTTPS 连接。

检查防火墙的状态。

$sudo ufw status

您应该会看到类似以下内容的内容。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

允许 HTTP 和 HTTPs 端口。

$sudo ufw allow http
$sudo ufw allow https

再次检查状态以确认。

$sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

第 2 步 – 安装 PostgreSQL

安装 PostgreSQL 的第一步是添加其 GPG 密钥。

$curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

将 APT 存储库添加到您的源列表中。

$sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

更新系统存储库。

$sudo apt update

现在,您可以安装 PostgreSQL。

$sudo apt install postgresql postgresql-contrib

检查 PostgreSQL 服务的状态。

$sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2022-09-10 06:25:11 UTC; 13s ago
    Process: 12083 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 12083 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Sep 10 06:25:11 nodebb systemd[1]: Starting PostgreSQL RDBMS...
Sep 10 06:25:11 nodebb systemd[1]: Finished PostgreSQL RDBMS.

步骤 3 – 配置 PostgreSQL

我们需要为 Postgres 默认管理用户设置密码 postgres。 首先,登录 Postgres Shell。

$sudo -u postgres psql

输入以下命令更改密码。

postgres=# \password postgres

系统将提示您输入新密码。

Enter new password for user "postgres":
Enter it again:

为 NodeBB 创建一个新用户。

postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';

为 NodeBB 创建一个新数据库。

postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;

类型 \q 退出外壳程序。

postgres=# \q

第 4 步 – 安装 Node.js

由于Nodebb论坛是使用Node.js框架编写的,因此我们需要安装它才能运行。

发出以下命令来安装 Nodejs 的 LTS(v16.x) 版本。

$curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
$sudo apt install nodejs

验证 Node.js 和 NPM 的安装。

$node -v
v16.17.0
$npm -v
8.15.0

第 5 步 – 安装 Git

在继续安装 NodeBB 之前,我们需要安装 Git。 运行以下命令来安装 Git。

$sudo apt install git

执行以下命令,完成Git的初始配置。

$git config --global user.name "Your Name"
$git config --global user.email "[email protected]"

第 6 步 – 安装 NodeBB

不建议以 root 用户身份运行 NodeBB。 创建一个没有密码的非特权系统用户。

$sudo adduser nodebb --disabled-password

跳过所有其他选项。

创建 NodeBB 论坛所在的目录。

$sudo mkdir /var/www/html/nodebb -p

将文件夹的所有权更改为新创建的用户。

$sudo chown -R nodebb:nodebb /var/www/html/nodebb

登录新创建的用户。

$sudo su - nodebb

切换到NodeBB安装目录。

$cd /var/www/html/nodebb

要安装 NodeBB,首先,我们需要克隆其 GitHub 存储库。

将 NodeBB 克隆到 /var/www/nodebb 目录。 命令末尾的点表示当前目录。

$git clone -b v2.x https://github.com/NodeBB/NodeBB.git .

在这里,我们克隆了 NodeBB 的 v2.x 分支,其中包含 NodeBB 的最新稳定版本。 您可以从 NodeBB 的最新分支页面找到最新的稳定分支。

NodeBB 附带了一个命令行实用程序。 使用以下命令安装 NodeBB。

$./nodebb setup

您可以按 Enter 键选择默认值。

2022-09-10T10:10:27.957Z [2633] - info: NodeBB Setup Triggered via Command Line

Welcome to NodeBB v2.5.2!

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).
URL used to access this NodeBB (http://localhost:4567) https://forum.example.com
Please enter a NodeBB secret (44fd62bc-5047-4414-a4ca-83105740b624)
Would you like to submit anonymous plugin usage to nbbpm? (yes) no
Which database to use (mongo) postgres
2022-09-10T10:10:43.237Z [2633] - info:
Now configuring postgres database:
Host IP or address of your PostgreSQL instance (127.0.0.1)
Host port of your PostgreSQL instance (5432)
PostgreSQL username nbbuser
Password of your PostgreSQL database
PostgreSQL database name (nodebb) nodebbdb
Enable SSL for PostgreSQL database access (false)
........

对于用于访问此 NodeBB 的 URL 的值,请选择您要访问论坛的最终 URL。 如果您将通过服务器 IP 访问论坛,请输入该 IP 或输入论坛的完整域名。 这里我们将输入 https://forum.example.com。 选择 no 作为有关提交匿名插件使用情况的问题的答案。 类型 postgres 作为数据库类型。

然后按 Enter 键选择默认主机 IP 和端口,并输入您的 PostgreSQL 用户名(即输入 nbbuser 时的用户名)以及您之前在配置 MongoDB 时为该用户名选择的密码。 应选择您的数据库nodebbdb。

您还将被要求创建管理员用户及其详细信息。

.....
2022-09-10T10:11:14.121Z [2633] - warn: No administrators have been detected, running initial user setup

Administrator username navjot
Administrator email address [email protected]
Password
Confirm Password
.....
....
2022-09-10T10:14:28.160Z [2633] - info: [build] Asset compilation successful. Completed in 118.777sec.

     =================================================================================================================================================================

NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.

设置完成后,运行以下命令启动 NodeBB。

$./nodebb start
Starting NodeBB
  "./nodebb stop" to stop the NodeBB server
  "./nodebb log" to view server output
  "./nodebb help" for more commands

退出NodeBB用户。

$exit

第 7 步 – 将 NodeBB 作为系统服务运行

系统重新启动后,NodeBB 服务将不会运行。 为了避免每次都启动 NodeBB,我们需要将其安装为系统服务。

首先停止NodeBB服务。 切换到NodeBB目录,然后直接运行命令 sudo -u 命令。

$cd /var/www/html/nodebb
$sudo -u nodebb ./nodebb stop

运行以下命令创建并编辑 nodebb.service systemd 单元配置文件。

$sudo nano /etc/systemd/system/nodebb.service

将以下代码粘贴到编辑器中。

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target postgresql.service

[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/html/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

这里我们选择的用户名是 nodebb 我们在步骤 6 中创建了它,并选择了在其中安装 NodeBB 的路径。

启用NodeBB服务。

$sudo systemctl enable nodebb

启动NodeBB服务。

$sudo systemctl start nodebb

检查服务的状态。

$sudo systemctl status nodebb
? nodebb.service - NodeBB
     Loaded: loaded (/etc/systemd/system/nodebb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-09-11 21:41:07 UTC; 2s ago
       Docs: https://docs.nodebb.org
   Main PID: 26844 (node)
      Tasks: 18 (limit: 2237)
     Memory: 94.1M
        CPU: 2.114s
     CGroup: /system.slice/nodebb.service
             ??26844 node loader.js --no-silent --no-daemon
             ??26855 /usr/bin/node /var/www/html/nodebb/app.js

Sep 11 21:41:07 forum systemd[1]: Started NodeBB.
Sep 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc.
Sep 11 21:41:07 forum nodebb[26844]: This program comes with ABSOLUTELY NO WARRANTY.
Sep 11 21:41:07 forum nodebb[26844]: This is free software, and you are welcome to redistribute it under certain conditions.
Sep 11 21:41:07 forum nodebb[26844]: For the full license, please visit: http://www.gnu.org/copyleft/gpl.html
Sep 11 21:41:07 forum nodebb[26844]: Clustering enabled: Spinning up 1 process(es).
Sep 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Initializing NodeBB v2.5.2 https://forum.example.com

第 8 步 – 安装 Nginx

Ubuntu 22.04 附带旧版本的 Nginx。 要安装最新版本,您需要下载官方 Nginx 存储库。

导入 Nginx 的签名密钥。

$curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

添加 Nginx 稳定版本的存储库。

$echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

更新系统存储库。

$sudo apt update

安装 Nginx。

$sudo apt install nginx

验证安装。

$nginx -v
nginx version: nginx/1.22.0

启动 Nginx 服务器。

$sudo systemctl start nginx

第 9 步 – 安装 SSL

我们需要安装 Certbot 来生成 SSL 证书。 您可以使用 Ubuntu 的存储库安装 Certbot,也可以使用 Snapd 工具获取最新版本。 我们将使用 Snapd 版本。

Ubuntu 22.04 默认安装了 Snapd。 运行以下命令以确保您的 Snapd 版本是最新的。

$sudo snap install core
$sudo snap refresh core

安装证书机器人。

$sudo snap install --classic certbot

使用以下命令确保 Certbot 命令可以通过创建指向该命令的符号链接来运行 /usr/bin 目录。

$sudo ln -s /snap/bin/certbot /usr/bin/certbot

运行以下命令生成 SSL 证书。

$sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com

上述命令将下载证书到 /etc/letsencrypt/live/forum.example.com 您服务器上的目录。

生成 Diffie-Hellman 组证书。

$sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

要检查 SSL 续订是否正常工作,请试运行该过程。

$sudo certbot renew --dry-run

如果没有看到任何错误,则一切都已准备就绪。 您的证书将自动更新。

第10步-配置Nginx

打开文件 /etc/nginx/nginx.conf 进行编辑。

$sudo nano /etc/nginx/nginx.conf

在该行之前添加以下行 include /etc/nginx/conf.d/*.conf;

server_names_hash_bucket_size  64;

按 Ctrl + X 并在出现提示时输入 Y 保存文件。

创建并打开文件 /etc/nginx/conf.d/nodebb.conf 进行编辑。

$sudo nano /etc/nginx/conf.d/nodebb.conf

将以下代码粘贴到其中。 代替 forum.example.com 与您的域名。 确保的值 client_max_body_size 设置为25MB来设置论坛的上传大小。

server {
  listen 80 default_server;
  server_name forum.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name forum.example.com;

   http2_push_preload on; # Enable HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
   # prevent replay attacks.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;

   # OCSP Stapling ---
   # fetch OCSP records from URL in ssl_certificate and cache them
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;
   client_max_body_size 25M;

   gzip            on;
   gzip_min_length 1000;
   gzip_proxied    off;
   gzip_types      text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json;

   add_header X-Early-Data $tls1_3_early_data;

   location / {       
       # Socket.IO Support
       proxy_set_header Connection "upgrade";
       proxy_set_header Upgrade $http_upgrade;
       proxy_http_version 1.1;

       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-NginX-Proxy true;
       proxy_set_header X-Frame-Options SAMEORIGIN;

       proxy_pass http://127.0.0.1:4567;  # no trailing slash
       proxy_redirect off;
   }

   location @nodebb {
       proxy_pass http://127.0.0.1:4567;
   }

   location ~ ^/assets/(.*) {
       root /var/www/html/nodebb/;
       try_files /build/public/$1 /public/$1 @nodebb;
   }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

按 Ctrl + X 并在出现提示时输入 Y 保存文件。

验证您的 Nginx 配置。

$sudo nginx -t

重新启动 Nginx 服务器。

$sudo systemctl restart nginx

第 11 步 – 访问和配置论坛

您可以通过访问URL访问论坛 https://forum.example.com 在您的浏览器中。 您将看到以下页面。

NodeBB论坛主页

单击登录页面并输入您在步骤 6 中创建的管理员凭据。

NodeBB 登录页面

您将登录。接下来,单击菜单栏顶部最右侧的图标以访问管理面板。

NodeBB 论坛管理面板链接

从这里开始,您可以管理论坛。 通过安装主题和插件来扩展它。

NodeBB 论坛管理仪表板

安装任何主题和插件后,您必须使用管理仪表板右上角的按钮重建并重新启动论坛,如下所示。

NodeBB 论坛重建和重新启动按钮

确保通过转到仪表板>>设置>>电子邮件来配置您的电子邮件服务,以便您的论坛用户可以接收电子邮件。 选择以下设置以确保设置最佳的电子邮件传送设置。

NodeBB 论坛电子邮件设置

向下滚动到该页面,然后从下拉列表中选择自定义邮件程序,或者如果您的 SMTP 服务不在列表中,则使用自定义邮件程序。 在我们的教程中,我们使用 SES 服务。

NodeBB 论坛 SMTP 设置

单击右下角的软盘保存图标以保存设置。

向下滚动到页面底部以发送测试电子邮件。 默认情况下,它将发送禁止的电子邮件模板。 您可以选择任何其他邮件模板进行测试。 我们将发送欢迎邮件。

NodeBB 论坛电子邮件测试

您将收到如下所示的测试电子邮件,确认设置。

NodeBB 论坛测试电子邮件

结论

关于在 Ubuntu 22.04 服务器上使用 PostgreSQL 数据库和 Nginx 安装 NodeBB 论坛的教程到此结束。 如果您有任何疑问,请在下面的评测中发表。

资讯来源:由0x资讯编译自HOWTOFORGE,版权归作者所有,未经许可,不得转载

资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载

上一篇 2024年 5月 31日
下一篇 2024年 5月 31日

相关推荐