Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

  1. Главная
  2. NodeBB
  3. NodeBB - установка на Debian 12, и настройка

NodeBB - установка на Debian 12, и настройка

Запланировано Прикреплена Закрыта Перенесена NodeBB
8 Сообщения 1 Posters 3 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • A Не в сети
    A Не в сети
    Admin
    написал отредактировано
    #1

    Содержание

    1 ответ Последний ответ
    0
    • A Не в сети
      A Не в сети
      Admin
      написал отредактировано Admin
      #2

      Подразумевается, что установка форума происходит в Incus-контейнере


      1. Настраиваем систему в контейнере


      Заходим в контейнер

      incus exec incus-forum -- bash     # Имя контейнера incus-forum, но можете задать другое имя
      
      1. Обновляем пакеты и устанавливаем утилиты:
      apt update
      apt install mc nano curl wget htop lynx lsof openssh-server
      
      1. Задаём пароль для суперпользователя (root)
      passwd root
      

      И два раза вводим придуманный пароль

      1. Создаём нового пользователя и включаем его в группу sudo
      sudo adduser forumuser  # Вместо newuser можете задать другое имя пользователя
      

      Система попросит вас:

      • Ввести пароль (символы при вводе не отображаются).
      • Повторить пароль.
      • Ввести данные пользователя (ФИО, номер комнаты и т.д.) — это можно пропустить, просто нажимая Enter.
      • Далее будет предложено подтвердить настройки, выбираем Y и жмём Enter

      Добавляем пользователя в группу sudo

      sudo usermod -aG sudo forumuser
      
      -a (append) — добавить.
      -G (groups) — в группу.
      

      Чтобы убедиться, что всё прошло успешно, переключитесь на нового пользователя:

      su - forumuser
      

      Затем попробуйте выполнить любую команду с sudo, например, обновить список пакетов:

      sudo apt update
      

      Если система приняла пароль и начала обновление — пользователь успешно настроен.

      Выходим из режима пользователя

      exit
      

      Выходим из контейнера

      exit
      
      1 ответ Последний ответ
      0
      • A Не в сети
        A Не в сети
        Admin
        написал отредактировано Admin
        #3

        2. Устанавливаем компоненты форума


        Заходим в контейнер

        incus exec incus-forum -- bash
        

        Заходим под созданным ранее пользователем

        su - forumuser
        

        Установка Node.js (версия 22 LTS)

        NodeBB требует Node.js 22.x (LTS на ноябрь 2025 года). Устанавливаем из репозитория NodeSource.

        1. Импорт GPG-ключа NodeSource

        sudo apt-get install -y ca-certificates curl gnupg
        sudo mkdir -p /etc/apt/keyrings
        curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
        

        2. Добавление репозитория Node.js 22.x

        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
        

        3. Установка

        sudo apt update
        sudo apt install nodejs -y
        

        Проверка

        node -v    # должно быть v22.x.x
        npm -v     # должно быть 10.x.x
        

        Установка MongoDB 8.0

        MongoDB 8.0 — официально поддерживаемая версия. Используем репозиторий MongoDB для Debian 12 (bookworm).

        1. Импорт GPG-ключа MongoDB

        sudo apt-get install -y gnupg curl
        curl -fsSL https://pgp.mongodb.com/server-8.0.asc | \
           sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
        

        2. Добавление репозитория

        echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
        

        3. Установка

        sudo apt update
        sudo apt install -y mongodb-org
        

        Проверка

        mongod --version
        # db version v8.0.x
        

        Запуск и проверка службы

        sudo systemctl start mongod
        sudo systemctl enable mongod
        sudo systemctl status mongod
        

        Установка NodeBB

        1. Установка Git

        sudo apt install -y git
        

        Важно: Для следующей операции НЕ используйте sudo!

        2. Клонирование репозитория (ветка v4.x — стабильная)

        git clone -b v4.x https://github.com/NodeBB/NodeBB.git nodebb
        

        3. Переходим в каталог nodebb и копируем туда файл package.json

        cd nodebb
        cp install/package.json ./     # Тоже без sudo
        

        Или:

        • Заходим через файловый менеджер mc
        • Выбираем каталог install (получится nodebb/install)
        • Копируем оттуда файл package.json на уровень выше, то есть в каталог nodebb
        • Выходим из mc
        1 ответ Последний ответ
        0
        • A Не в сети
          A Не в сети
          Admin
          написал отредактировано
          #4

          3. Настраиваем базу данных


          Настройка MongoDB (с авторизацией)

          1. Подключение к MongoDB Shell

          mongosh
          

          2. Создание администратора (в базе admin)

          use admin
          db.createUser({
            user: "admin",
            pwd: "ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ",
            roles: [ { role: "root", db: "admin" } ]
          })
          

          Замените ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ на сложный пароль (без <>).

          3. Создание базы и пользователя для NodeBB

          use nodebb
          db.createUser({
            user: "nodebb",
            pwd: "ВАШ_ПАРОЛЬ_NODEBB",
            roles: [
              { role: "readWrite", db: "nodebb" },
              { role: "clusterMonitor", db: "admin" }
            ]
          })
          

          4. Выход

          quit()
          

          5. Включение авторизации

          Отредактируйте конфигурацию:

          sudo nano /etc/mongod.conf
          

          Добавьте в конец:

          security:
            authorization: enabled
          

          6. Перезапуск MongoDB

          sudo systemctl restart mongod
          

          7. Проверка подключения с авторизацией

          mongosh "mongodb://localhost:27017" --username admin --authenticationDatabase admin
          

          (Вас попросят ввести пароль admin. Выйдите через quit().)

          1 ответ Последний ответ
          0
          • A Не в сети
            A Не в сети
            Admin
            написал отредактировано Admin
            #5

            4. Настройка и запуск NodeBB


            Внимание!
            Операции по настройке и запуску форума NodeBB осуществляем без входа в режим sudo


            cd nodebb
            

            1. Запуск настройки

            • Заходим через файловый менеджер mc
            • Выбираем каталог install (получится nodebb/install)
            • Копируем оттуда файл package.json на уровень выше, то есть в каталог nodebb
            • Выходим из mc

            2. Запуск настройки

            ./nodebb setup
            

            Ответы на вопросы:

            • URL сайта: http://ваш-домен.ру (точно так, как будете открывать)
            • Порт: 4567 (по умолчанию)
            • База данных: mongo
            • Хост MongoDB: localhost
            • Порт MongoDB: 27017
            • Имя пользователя: nodebb
            • Пароль: ВАШ_ПАРОЛЬ_NODEBB (из шага выше)
            • Создание администратора: заполните логин, email, пароль

            ПРИМЕР


            Welcome to NodeBB v4.7.0!
            
            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://pixelfed.nbics.net
            Please enter a NodeBB secret (90a569b2-f42b-4be2-b36b-35606094bfea) 
            Would you like to submit anonymous plugin usage to nbbpm? (yes) no
            Which database to use (mongo) 
            2025-12-05T20:15:09.594Z [5423] - 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) 
            Host port of your MongoDB instance (27017) 
            MongoDB username nodebb
            Password of your MongoDB database 
            MongoDB database name (nodebb) nodebb
            2025-12-05T20:16:31.596Z [5423] - info: [database] Checking database indices.
            2025-12-05T20:16:32.210Z [5423] - info: [database] Checking database indices done!
            2025-12-05T20:16:33.290Z [5423] - verbose: [minifier] utilizing a maximum of 7 additional threads
            Configuration Saved OK
            Populating database with default configs, if not already set...
            2025-12-05T20:16:33.348Z [5423] - warn: [cache-buster] could not read cache buster ENOENT: no such file or directory, open '/nodebb/build/cache-buster' {"code":"ENOENT","errno":-2,"path":"/nodebb/build/cache-buster","stack":"Error: ENOENT: no such file or directory, open '/nodebb/build/cache-buster'\n    at async open (node:internal/fs/promises:641:25)\n    at async Object.readFile (node:internal/fs/promises:1245:14)\n    at async read (/nodebb/src/meta/cacheBuster.js:31:18)\n    at async Configs.init (/nodebb/src/meta/configs.js:90:17)\n    at async setupDefaultConfigs (/nodebb/src/install.js:249:2)\n    at async install.setup (/nodebb/src/install.js:617:3)\n    at async Object.setup (/nodebb/src/cli/setup.js:30:15)","syscall":"open"}
            Enabling default theme: nodebb-theme-harmony
            No categories found, populating instance with default categories
            2025-12-05T20:16:33.760Z [5423] - warn: No administrators have been detected, running initial user setup
            
            Administrator username Admin
            Administrator email address oleg75@mail.nbics.net
            Password 
            Confirm Password 
            
            

            После завершения появится: NodeBB Setup Completed.

            3. Запуск NodeBB

            ./nodebb start
            

            Проверьте: http://ваш-ip:4567 — должен открыться форум.


            Управление NodeBB

            Команда Описание
            ./nodebb start Запуск
            ./nodebb stop Остановка
            ./nodebb restart Перезапуск
            ./nodebb log Просмотр логов в реальном времени
            1 ответ Последний ответ
            0
            • A Не в сети
              A Не в сети
              Admin
              написал отредактировано Admin
              #6

              5. Создание конфига для NGINX и сертификата


              Внимание!
              Работа с Nginx производится вне контейнера, на хостовой системе


              1. Создаём простой стандартный конфиг для нужного домена
              cd /etc/nginx/sites-available
              sudo touch nodebb.conf
              sudo nano nodebb.conf
              
              1. Вписываем в конфиг примитив, сохраняем
              server {
                  listen 80;
                  server_name my_domain.tld;  # Замените на ваш домен
              
                  location / {
                      root /var/www/html;
                  }
              }
              
              1. Создаём линк
              sudo ln -s /etc/nginx/sites-available/nodebb.conf /etc/nginx/sites-enabled/
              
              1. Устанавливаем certbot, если ещё не установлен
              sudo apt install certbot python3-certbot-nginx -y
              
              1. Создаём сертификат для домена
              sudo certbot --nginx -d my_domain.tld
              
              1. Заходим сюда /etc/nginx/sites-available/nodebb.conf и меняем текст конфига таком образом:
              server {
              
                  server_name my_domain.tld; # Подставляем свой домен
              
                  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://10.0.3.180:4567;  # Меняем на айпи своего контейнера с форумом
                      proxy_redirect off;
              
                      # Socket.IO Support
                      proxy_http_version 1.1;
                      proxy_set_header Upgrade $http_upgrade;
                      proxy_set_header Connection "upgrade";
                  }
              
                  listen 443 ssl; # managed by Certbot
                  ssl_certificate /etc/letsencrypt/live/my_domain.tld/fullchain.pem; # Сюда тоже свой домен
                  ssl_certificate_key /etc/letsencrypt/live/my_domain.tld/privkey.pem; # И сюда свой домен                                                                                                                
                  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot                                                                                                                                         
                  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot                                                                                                                                           
              
              }server {
                  if ($host = my_domain.tld) {    # Ещё раз прописываем свой домен
                      return 301 https://$host$request_uri;
                  } # managed by Certbot
              
              
                  listen 80;
              
                  server_name my_domain.tld;   #  И снова свой домен вписываем
                  return 404; # managed by Certbot
              }
              
              1. Проверка и перезагрузка
              sudo nginx -t
              sudo systemctl reload nginx
              
              1 ответ Последний ответ
              0
              • A Admin переместил эту тему из Разное
              • A Не в сети
                A Не в сети
                Admin
                написал отредактировано
                #7

                Управление NodeBB


                ⚙️ Основные команды NodeBB

                Команда Описание
                ./nodebb start Запуск экземпляра NodeBB (в фоновом режиме).
                ./nodebb stop Остановка запущенного экземпляра NodeBB.
                ./nodebb restart Перезапуск экземпляра NodeBB.
                ./nodebb log Просмотр логов в реальном времени (с использованием tail -f).
                ./nodebb status Проверка статуса запущенного процесса NodeBB.

                🛠️ Команды для разработки и обслуживания

                Команда Описание
                ./nodebb dev Запуск NodeBB в режиме разработки. Включает горячую перезагрузку шаблонов и логов.
                ./nodebb setup Настройка NodeBB (первоначальная установка или изменение конфигурации).
                ./nodebb upgrade Выполнение обновления базы данных и файлов NodeBB до последней версии.
                ./nodebb reset Сброс конфигурации NodeBB (не рекомендуется без необходимости).
                ./nodebb build Пересборка клиентских скриптов и стилей (обычно требуется после обновления или установки плагинов).
                ./nodebb activate plugin-name Активация указанного плагина.
                ./nodebb deactivate plugin-name Деактивация указанного плагина.

                📂 Команды для базы данных

                Команда Описание
                ./nodebb backup Создание резервной копии базы данных (требует дополнительной настройки или внешних утилит в зависимости от используемой БД).
                ./nodebb restore Восстановление базы данных из резервной копии.

                Примечание: Все эти команды должны выполняться из корневой директории установки NodeBB.

                1 ответ Последний ответ
                0
                • A Не в сети
                  A Не в сети
                  Admin
                  написал отредактировано
                  #8

                  Создаём и запускаем службу NodeBB в SystemD


                  1. Создаём пользователя

                  NodeBB (как и любой Node.js-сервис) никогда не должен работать от root. Поэтому нужно создать непривелегированного пользователя.

                  adduser --disabled-password --gecos "" nodebb
                  
                  

                  Эта команда создает минимальную, непривилегированную и неинтерактивную учетную запись с именем nodebb, которая идеально подходит для безопасного запуска веб-приложений.


                  2. Меняем владельца каталога nodebb

                  Допустим, вы работаете в LXC-контейнере, и каталог nodebb находится в корневом каталоге виртуальной системы.
                  Заходим туда, и сначала останавливаем форум:

                  cd /nodebb
                  ./nodebb stop
                  

                  Далее меняем владельца каталога

                  chown -R nodebb:nodebb /nodebb
                  
                  
                  • chown: Изменить владельца.
                  • -R: Рекурсивно (применить ко всем файлам и подкаталогам внутри /nodebb).
                  • nodebb:nodebb: Новый владелец (пользователь:группа).
                  • /nodebb: Директория форума NodeBB.

                  После этого пользователь nodebb сможет безопасно запускать приложение, и вы сможете правильно указать его в вашем файле Systemd-службы (например, в директивах User=nodebb и Group=nodebb).


                  3. Создание файла для systemd

                  Заходим в каталог

                  cd /etc/systemd/system/
                  

                  Создаём файл

                  touch nodebb.service
                  

                  Вносим в этот файл следующий текст:

                  # /etc/systemd/system/nodebb.service
                  [Unit]
                  Description=NodeBB Forum
                  Documentation=https://docs.nodebb.org
                  After=network.target mongod.service
                  Wants=mongod.service
                  
                  [Service]
                  Type=simple
                  User=nodebb
                  Group=nodebb
                  WorkingDirectory=/nodebb
                  Environment=NODE_ENV=production
                  
                  # Это самый важный момент — запускаем напрямую loader.js
                  ExecStart=/usr/bin/node /nodebb/loader.js --no-silent --no-daemon
                  ExecStop=/usr/bin/node /nodebb/app.js --stop   # или просто kill, но так аккуратнее
                  
                  Restart=always
                  RestartSec=10
                  
                  # Логи
                  StandardOutput=journal
                  StandardError=journal
                  
                  # Ограничения (по желанию)
                  MemoryMax=600M
                  CPUQuota=90%
                  
                  [Install]
                  WantedBy=multi-user.target
                  
                  

                  4. Запуск сервиса

                  sudo systemctl daemon-reload
                  sudo systemctl enable nodebb
                  sudo systemctl start nodebb
                  
                  
                  1 ответ Последний ответ
                  0
                  Ответить
                  • Ответить, создав новую тему
                  Авторизуйтесь, чтобы ответить
                  • Сначала старые
                  • Сначала новые
                  • По количеству голосов


                  • Войти

                  • Login or register to search.
                  Powered by NodeBB Contributors
                  • Первое сообщение
                    Последнее сообщение
                  0
                  • Категории
                  • Последние
                  • Метки
                  • Популярные
                  • World
                  • Пользователи
                  • Группы