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)

administrators

Закрытая

Сообщения


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

    Создаём и запускаем службу 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
    
    
    NodeBB

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

    Управление 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.

    NodeBB

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

    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
    
    NodeBB

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

    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 Просмотр логов в реальном времени
    NodeBB

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

    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().)

    NodeBB

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

    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
    NodeBB

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

    Подразумевается, что установка форума происходит в 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
    
    NodeBB

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

    Содержание

    NodeBB

  • Bash - работа с системой
    A Admin

    Увеличение размера файла подкачки (виртуальная память, Swap)


    # Пример создания swap-файла 2 ГБ (если нет раздела)
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    
    Команды BASH

  • Jitsi - архитектура
    A Admin

    Теория JWT-аутентификации


    JWT (JSON Web Token) — это безопасный и удобный способ передачи данных между разными системами. JWT часто используется для аутентификации пользователей или передачи информации о правах доступа.

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

    Создание токена

    Когда вы или ваше приложение авторизуетесь, сервер создаёт токен (то есть «пропуск»), в котором хранится информация, например:

    - Кто вы (имя пользователя или ID).
    - Какие у вас права (например, "может записывать звонки").
    - Когда истекает срок действия этого токена (чтобы нельзя было использовать его вечно).

    Эта информация кодируется в виде строки (набора символов) и подписывается с помощью специального "секретного ключа". Подпись нужна, чтобы никто не мог подделать токен.

    Использование токена

    Когда вы хотите что-то сделать на сервере (например, войти в конференцию в Jitsi), ваше приложение отправляет этот токен серверу. Сервер проверяет токен:

    - Не изменён ли он.
    - Действителен ли он.
    - Есть ли у вас право делать то, что вы хотите.

    Почему JWT удобен?

    Не нужно хранить сессии на сервере. Всё, что нужно, — это проверить подпись токена. Это облегчает работу сервера.
    Токен — это всего лишь текстовая строка, которую можно легко передавать через Интернет.

    Как выглядит JWT?

    JWT состоит из трёх частей, разделённых точками (.):

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImpvaG4iLCJyb2xlIjoiYWRtaW4iLCJleHBpcmUiOjE2MzAxMzc2MDB9.N9RXgZG8ghJDU4Zfbl9h7syNDcKXoZVgCkKb-Pouhyo

    1. Заголовок (Header): Указывает тип токена и метод шифрования.
    {
      "alg": "HS256",
      "typ": "JWT"
    }
    
    1. Полезная нагрузка (Payload): Содержит данные, например имя пользователя, роль и срок действия.
    {
      "username": "sidorov",
      "role": "admin",
      "expire": 1630137600
    }
    
    1. Подпись (Signature): Гарантирует, что токен не был изменён.
    Как это используется в Jitsi?

    Создание токена: Система управления, например Jitsi Admin, создаёт токен, когда пользователь пытается подключиться. В токене прописываются его права: например, кто он и может ли он создавать конференции.

    ​

    Проверка токена: Jitsi Meet сервер проверяет токен, прежде чем впустить пользователя или разрешить ему выполнять действия.

    Jitsi

Список участников

A Admin
  • Войти

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