웹사이트 검색

Nginx로 NodeBB 포럼을 설치하고 FreeBSD 12에서 암호화하자


이 페이지에서

  1. 요구 사항\n
  2. 전제 조건
  3. 1단계: Node.js 및 npm 설치
  4. 2단계: MongoDB 설치 및 구성
  5. 3단계 - acme.sh 클라이언트 설치 및 Lets Encrypt 인증서 획득\n
  6. 4단계: Nginx 설치 및 구성
  7. 5단계: NodeBB 설치 및 설정
  8. 6단계: PM2를 통해 지속적으로 NodeBB 실행\n
  9. 링크

NodeBB는 최신 웹용으로 제작된 Node.js 기반 포럼 소프트웨어입니다. MongoDB 또는 Redis 데이터베이스를 기반으로 합니다. 즉각적인 상호 작용 및 실시간 알림을 위해 웹 소켓을 사용합니다. NodeBB에는 소셜 네트워크 통합 및 스트리밍 토론과 같은 즉시 사용할 수 있는 많은 최신 기능이 있습니다. 추가 기능은 타사 플러그인을 사용하여 활성화됩니다. NodeBB는 Github에서 찾을 수 있는 오픈 소스 프로젝트입니다. 이 가이드에서는 Nginx를 역방향 프록시로, MongoDB를 데이터베이스로, acme.sh 및 Lets Encrypt for HTTPS를 사용하여 FreeBSD 12 운영 체제에서 NodeBBB 설치 프로세스를 단계별로 안내합니다.

요구 사항

NodeBB를 사용하려면 다음 소프트웨어를 설치해야 합니다.

  • Node.js 버전 6 이상
  • MongoDB 버전 2.6 이상 또는 Redis 버전 2.8.9 이상
  • Nginx 버전 1.3.13 이상
  • 힘내\n

참고: NodeBB 종속성을 설치하려면 512MB 이상의 시스템 메모리가 필요할 수 있습니다. Linux 시스템의 메모리가 부족한 경우 이를 보상하기 위해 스왑 파티션을 사용하는 것이 좋습니다.

전제 조건

  • 최소 1GB의 RAM이 있는 실행 중인 FreeBSD 12 시스템.\n
  • A/AAAA 레코드가 설정된 도메인 이름.
  • sudo 권한이 있는 루트가 아닌 사용자.\n

초기 단계

FreeBSD 버전 확인:

uname -ro
# FreeBSD 12.0-RELEASE

시간대 설정:

tzsetup

운영 체제 패키지(소프트웨어)를 업데이트합니다. 이는 운영 체제 기본 소프트웨어 패키지에 대한 최신 업데이트 및 보안 수정 사항이 있는지 확인하기 때문에 중요한 첫 번째 단계입니다.

freebsd-update fetch install
pkg update && pkg upgrade -y

FreeBSD 12.0 운영 체제의 기본 관리에 필요한 몇 가지 필수 패키지를 설치합니다.

pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips

1단계: Node.js 및 npm 설치

NodeBB는 Node.js를 기반으로 합니다. 이 글을 쓰는 시점에 버전 10 인 NodeBB의 권장 버전을 설치하겠습니다.

Node.js 다운로드 및 설치:

sudo pkg install -y node10 npm-node10

참고: npm은 Node.js와 함께 배포됩니다. 즉, Node.js를 다운로드하면 자동으로 시스템에 npm이 설치됩니다.

Node.js 및 npm 버전을 확인합니다.

node -v && npm -v

Npm은 Node.js와 별개의 프로젝트이며 더 자주 업데이트되는 경향이 있습니다. 결과적으로 방금 Node.js(따라서 npm)를 다운로드했더라도 npm을 업데이트해야 할 것입니다. 운 좋게도 npm은 스스로 업데이트하는 방법을 알고 있습니다! npm을 업데이트하려면 터미널에 다음을 입력하세요.

sudo npm install -g 

이 명령은 npm을 최신 안정 버전으로 업데이트합니다.

다음을 사용하여 npm 버전을 다시 확인합니다.

npm -v

그리고 최신 버전 번호를 반환해야 합니다.

2단계: MongoDB 설치 및 구성

NodeBB는 데이터를 저장할 데이터베이스가 필요하며 MongoDB와 Redis를 지원합니다. 이 가이드에서는 MongoDB를 데이터 저장소 엔진으로 선택했습니다.

안정적인 버전의 MongoDB 패키지를 설치하려면 다음 명령을 실행하십시오.

sudo pkg install -y mongodb40

MongoDB 버전을 확인합니다.

mongo --version | head -n 1 && mongod --version | head -n 1

MongoDB 서비스를 시작하고 활성화합니다(재부팅 시 시작하도록 설정).

sudo sysrc mongod_enable=yes
sudo service mongod start

다음을 실행하여 MongoDB 데이터베이스 서버 상태를 확인합니다.

sudo service mongod status
# active (running)

다음으로 NodeBB용 MongoDB 데이터베이스 및 사용자를 생성합니다.

먼저 MongoDB 서버에 연결합니다.

mongo

기본 제공 admin 데이터베이스로 전환합니다.

> use admin

관리 사용자를 생성합니다.

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

참고: 자리 표시자 <보안 암호 입력>을 자신이 선택한 암호로 바꾸십시오.

nodebb라는 새 데이터베이스를 추가합니다.

> use nodebb

데이터베이스가 생성되고 컨텍스트가 nodebb로 전환됩니다. 다음으로 적절한 권한을 가진 nodebb 사용자를 생성합니다.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

참고: 자리 표시자를 자신이 선택한 암호로 바꾸십시오.

몽고 셸을 종료합니다.

> quit()

MongoDB를 다시 시작하고 이전에 만든 관리 사용자가 연결할 수 있는지 확인합니다.

sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin

모두 잘 되었다면 MongoDB를 설치하고 NodeBB를 준비해야 합니다.

3단계 - acme.sh 클라이언트 설치 및 Lets Encrypt 인증서 획득

이 단계는 선택 사항입니다. NodeBB 포럼을 HTTPS로 보호할 필요는 없지만 사이트 트래픽을 보호하는 것이 좋습니다. Lets Encrypt에서 TLS 인증서를 얻기 위해 acme.sh 클라이언트를 사용합니다. Acme.sh는 종속성이 없는 Lets Encrypt에서 TLS 인증서를 얻기 위한 순수 Unix 셸 소프트웨어입니다.

acme.sh를 다운로드하고 설치합니다.

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail
source ~/.bashrc
cd ~

acme.sh 버전 확인:

acme.sh --version
# v2.8.0

도메인/호스트 이름에 대한 RSA 및 ECC/ECDSA 인증서 받기:<br>

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

테스트를 위해 가짜 인증서를 원하는 경우 위 명령에 --staging 플래그를 추가할 수 있습니다.

위 명령어를 실행하면 인증서가 다음 위치에 있게 됩니다.

  • RSA의 경우: /home/username/example.com 디렉토리.
  • ECC/ECDSA의 경우: /home/username/example.com_ecc 디렉터리.

발급된 인증서를 나열하려면 다음을 실행할 수 있습니다.

acme.sh --list

인증서를 저장할 디렉터리를 만듭니다. /etc/letsencrypt 디렉토리를 사용합니다.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

인증서를 /etc/letsencrypt 디렉터리에 설치/복사합니다.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

모든 인증서는 60일마다 자동으로 갱신됩니다.

인증서를 얻은 후 루트 사용자에서 종료하고 일반 sudo 사용자로 돌아갑니다.

exit

4단계: Nginx 설치 및 구성

NodeBB는 많은 웹 서버에서 잘 작동할 수 있습니다. 이 튜토리얼에서는 Nginx를 선택했습니다.

다음 명령을 실행하여 Nginx 패키지를 설치합니다.

sudo pkg install -y nginx

설치 후 다음을 실행하여 Nginx 버전을 확인할 수 있습니다.

nginx -v

Nginx 서비스 시작 및 사용 설정(재부팅 시 시작되도록 설정):

sudo sysrc nginx_enable=yes
sudo service nginx start

다음을 실행하여 Nginx 웹 서버 상태를 확인합니다.

sudo service nginx status

NodeBB는 기본적으로 포트 4567에서 실행됩니다. http://example.com:4567 입력을 피하기 위해 Nginx를 NodeBB 애플리케이션의 리버스 프록시로 구성합니다. 포트 80 또는 443(SSL이 사용되는 경우)의 모든 요청은 포트 4567로 전달됩니다.

sudo vim /usr/local/etc/nginx/nodebb.conf를 실행하고 Nginx를 HTTPS 역방향 프록시로 구성합니다.

server {

listen [::]:443 ssl;
listen 443 ssl;
listen [::]:80;
listen 80;

server_name example.com;

client_max_body_size 50M;

# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

location / {
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 Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

}

sudo vim /usr/local/etc/nginx/nginx.conf를 실행하고 아래 줄을 http {} 블록에 추가하여 NodeBB 구성을 포함합니다.

include nodebb.conf;

구문 오류에 대한 Nginx 구성을 확인하십시오.

sudo nginx -t

Nginx 서비스 다시 로드:

sudo service nginx reload

5단계: NodeBB 설치 및 설정

NodeBB가 상주해야 하는 문서 루트 디렉터리를 만듭니다.

sudo mkdir -p /usr/local/www/nodebb

문서 루트 디렉토리로 이동합니다.

cd /usr/local/www/nodebb

/usr/local/www/nodebb 디렉토리의 소유권을 your_user로 변경합니다.

sudo chown -R your_user:your_user /usr/local/www/nodebb

참고: 위 명령에서 your_user를 이 자습서의 전제 조건으로 생성했어야 하는 루트가 아닌 사용자로 바꾸십시오.

최신 NodeBB 저장소를 문서 루트 폴더에 복제합니다.

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

setup 플래그로 앱을 실행하여 설정 스크립트를 시작합니다. 각 질문에 답하십시오.

./nodebb setup

NodeBB 설정이 완료되면 ./nodebb start를 실행하여 NodeBB 서버를 수동으로 시작합니다.

./nodebb start

이 명령을 실행한 후 웹 브라우저에서 새로운 포럼에 액세스할 수 있어야 합니다.

6단계: PM2를 통해 지속적으로 NodeBB 실행

./nodebb start를 통해 시작하면 시스템 재부팅 시 NodeBB가 자동으로 다시 시작되지 않습니다. 이를 방지하려면 NodeBB를 시스템 서비스로 설정해야 합니다.

실행 중인 경우 NodeBB를 중지합니다.

./nodebb stop

PM2를 전역적으로 설치합니다.

sudo npm install pm2 -g

PM2 버전 확인:

pm2 -v
# 3.5.0

NodeBB 문서 루트로 이동합니다.

cd /usr/local/www/nodebb

PM2를 통해 NodeBB를 시작합니다.

pm2 start app.js

NodeBB 프로세스 나열:

pm2 ls

다음을 사용하여 사용 가능한 초기화 시스템을 감지합니다.

pm2 startup

CLI에서 이 명령의 출력을 복사하여 붙여넣어 시작 후크를 설정합니다.

다음을 사용하여 프로세스 목록을 저장하십시오.

pm2 save

그게 다야. 이제 NodeBB 인스턴스가 실행 중입니다.

축하합니다! FreeBSD 12 시스템에 NodeBB 토론 플랫폼을 성공적으로 설치하고 배포했습니다. 도메인에서 포럼에 액세스하고 포럼과 상호 작용할 수 있어야 합니다.

연결

  • https://nodebb.org/
  • https://github.com/NodeBB/NodeBB