Гид по технологиям

Установка EnigmaBBS на Linux: шаг за шагом и практическое руководство

• 10 min read • Linux • Обновлено 28 Nov 2025
Установка EnigmaBBS на Linux
Установка EnigmaBBS на Linux

Важно: все команды выполняйте с осторожностью и проверяйте пути / имена пользователей в своих системах.

Изображение: логотип/фото для статьи о установке EnigmaBBS

О чём эта статья

  • Что такое BBS и EnigmaBBS
  • Как установить EnigmaBBS на Linux
  • Генерация и правка конфигурации EnigmaBBS (config.hjson)
  • Подключение и использование BBS (telnet/SSH, создание sysop, сообщения)
  • Настройка общения с другими BBS (MRC) и веб‑портала контента
  • Частые ошибки и их исправление
  • Рекомендации по безопасности, чеклисты и план отката

Что такое BBS и EnigmaBBS?

BBS (Bulletin Board System) — это набор программ и служб, который позволяет пользователям подключаться к одному компьютеру по локальной сети или Интернету для обмена сообщениями, скачивания файлов и игр. В 1980–1990‑х годах BBS были локальными хабами общения; сегодня их можно эмулировать или восстановить с помощью инструментов вроде EnigmaBBS.

EnigmaBBS — современная реализация BBS, написанная с учётом современных языков и практик. Она воссоздаёт «чувство» 90‑х, но при этом поддерживает современные интерфейсы (WebSockets, SSH, веб‑портал), интеграцию с сетями обмена (например, FidoNET‑подобные возможности) и совместимость с Door‑играми через DoorParty, Exodus и CombatNet.

Пример: Old‑school door‑игра на EnigmaBBS

Ключевые свойства EnigmaBBS:

  • Совместимость с классическими «door» играми и dropfile‑форматом
  • Поддержка telnet/SSH и веб‑интерфейса для просмотра контента
  • Встроенные средства для мульти‑релэйного чата (MRC)
  • Конфигурация в человекочитаемом HJSON

Пример интерфейса EnigmaBBS: меню и сообщения

Подготовка перед установкой

Короткие определения:

  • Sysop — системный оператор, администратор BBS.
  • Dropfile — файл, передаваемый door‑игре с информацией о сессии.
  • MRC — Multi‑Relay Chat, механизм для обмена чат‑сообщениями между серверами.

Требования перед началом:

  • Рабочая Linux‑машина (Ubuntu/Debian‑производные или совместимые)
  • Подключение к Интернету для загрузки зависимостей
  • Права sudo для установки пакетов и создания пользователя

Советы по безопасности перед запуском:

  • Создавайте отдельного системного пользователя для BBS, чтобы ограничить права.
  • Не запускайте BBS под root.
  • Резервная копия config.hjson перед изменениями.

Установка EnigmaBBS (пошагово)

Ниже — рекомендуемые команды и порядок действий. Обратите внимание, что команды приведены для Debian/Ubuntu‑подобных систем; для других дистрибутивов пакеты и менеджер пакетов могут отличаться.

  1. Создаём отдельного пользователя для BBS:
sudo useradd -s /bin/bash -d /home/enigma -m -G sudo enigma
sudo passwd enigma

Пояснение: пользователь enigma будет владельцем файлов BBS и изолирует сервис от вашего личного аккаунта.

  1. Переключаемся на пользователя enigma:
su - enigma
  1. Устанавливаем необходимые зависимости и скачиваем скрипт установки EnigmaBBS (пример для Ubuntu/Debian):
sudo apt update && sudo apt install -y curl git make gcc g++ python p7zip lhasa arj lrzsz python-is-python3 wget
wget https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh
  1. Делаем скрипт исполняемым и запускаем установку:
chmod +x ./install.sh
./install.sh

Что делает install.sh: скачивает исходники Node.js (если требуется), необходимые библиотеки, компилирует локальные бинарники и устанавливает зависимости проекта. Процесс может занять несколько минут — в зависимости от скорости сети и мощности машины.

Процесс компиляции EnigmaBBS

Важная заметка: если инсталлятор завершится с ошибками, проверьте логи в терминале, а также наличие curl/git/компиляторов. Далее мы расскажем, как решать частые ошибки.

Генерация конфигурации EnigmaBBS

После установки откройте новый терминал (или новую вкладку), чтобы убедиться, что окружение обновлено и все зависимости в PATH видимы.

cd /home/$USER/enigma-bbs

Создание нового файла конфигурации

./oputil.js config new

oputil.js предложит путь для сохранения конфигурации (обычно — в папке config). Для большинства случаев можно нажать Enter, чтобы принять значения по умолчанию.

Процесс создания: вам предложат имя инстанса (например, “Hello, world!”), имя конференции сообщений (по умолчанию “Local”) и имя области сообщений. Также будет предложено выбрать уровень логирования (Debug/Info/Warning/Error). Для запуска на домашнем сервере рекомендован уровень Info.

Создание новой конфигурации EnigmaBBS

Рассмотрите структуру конфигурации config.hjson: в ней содержатся блоки loginServers, chatServers, contentServer, doorServers и другие. Далее — пример структурных мест, на которые стоит обратить внимание (пояснения, не точный полный файл):

{
  "instance": {
    "name": "Hello, world!",
    "logLevel": "info"
  },
  "loginServers": [
    {
      "protocol": "telnet",
      "port": 8888
    }
  ],
  "chatServers": {
    "enabled": false
  },
  "contentServer": {
    "http": {
      "enabled": false,
      "port": 8080,
      "fqdn": "localhost"
    }
  }
}

Запуск и подключение к EnigmaBBS

  1. Запуск сервера из корня проекта:
./main.js

main.js поднимает сервер и слушает порты, указанные в config.hjson (по умолчанию telnet‑порт 8888).

  1. Подключение к локальному инстансу через telnet:
telnet localhost 8888

(Альтернатива: подключение через SSH, если вы настроили ssh‑сервер в конфигурации.)

После подключения вы увидите сплэш‑скрин с тремя опциями: Login, Apply и Logout.

Главное меню EnigmaBBS после запуска

Создание аккаунта sysop (администратора)

Первый созданный аккаунт по умолчанию становится sysop. Для этого в сплэше выберите Apply и заполните форму. Поля не обязательно содержат реальные личные данные — можно указать фиктивный email.

Форма регистрации нового пользователя в EnigmaBBS

После регистрации вы попадёте в главное меню аккаунта.

Отправка и чтение сообщений

  • Создать новое сообщение: нажмите M → P, введите тему и текст, затем Esc → Save.
  • Просмотреть сообщения: M → L — список новых сообщений в текущей конференции.

Пример: создание и сохранение сообщения

Настройка связи с другими BBS (Multi‑Relay Chat)

Чтобы EnigmaBBS могла соединяться с другими серверами в режиме MRC:

  1. Остановите текущий процесс EnigmaBBS (Ctrl+C или закройте терминал).
  2. Откройте конфигурацию для правки:
nano /home/$USER/enigma-bbs/config/config.hjson
  1. Найдите блок chatServers и измените enabled: false → true. Сохраните и перезапустите EnigmaBBS.

После этого в главном меню доступен пункт MRC — при выборе ваш сервер попытается подключиться к чат‑руму.

Пример окна MRC в EnigmaBBS

Создание веб‑портала контента

EnigmaBBS может служить как источник контента через HTTP, отображая сообщения и файлы через веб‑интерфейс.

  1. Откройте config.hjson и найдите блок contentServer.
  2. Внутри http включите сервер и укажите fqdn/порт:
"contentServer": {
  "http": {
    "enabled": true,
    "port": 8080,
    "fqdn": "localhost"
  }
}
  1. Сохраните файл и перезапустите EnigmaBBS. Затем посетите http://localhost:8080

Пример фрагмента файла config.hjson

Частые вопросы и решение проблем

Установка скрипта завершилась с ошибкой

Если install.sh не отрабатывает корректно, возможно, ваш текущий shell — не Bash и скрипт использует bash‑специфичные конструкции. Запустите:

/bin/bash
./install.sh

и посмотрите вывод на предмет ошибок компиляции.

Ошибка MODULE_NOT_FOUND

Возникает при несовместимости версий Node.js/пакетов. Рекомендованные шаги:

  1. Удалите локальные node_modules и сборки:
rm -rf /home/$USER/enigma-bbs/node_modules
  1. Добавьте официальный NodeSource и установите подходящую версию Node.js (пример для Node 14):
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install -y nodejs
  1. При использовании nvm установите требуемую версию и пересоберите пакеты:
nvm install v14.19.3
npm install && npm rebuild

Важно: nvm обычно устанавливается для интерактивного пользователя; убедитесь, что используете тот же пользователь (enigma), под которым запускали install.sh.

Смена порта telnet

По умолчанию telnet порт 8888. Изменить порт можно в config.hjson, найдите loginServers → port и укажите желаемый порт, который не конфликтует с другими службами.

Безопасность и жёсткая конфигурация (hardening)

  • Не запускайте enigma под root. Используйте отдельного пользователя без лишних прав.
  • Ограничьте доступ по файерволу: разрешите входящие только с доверенных IP (если требуется), закройте публичный telnet, используйте SSH‑туннелирование или VPN.
  • Обновляйте зависимости и Node.js, отслеживайте CVE для используемых пакетов.
  • Если включаете веб‑портал, применяйте HTTPS через reverse proxy (nginx + Let’s Encrypt) перед тем, как выставлять сайт в публичный доступ.

Пример простой схемы с nginx (reverse proxy + TLS):

server {
  listen 80;
  server_name example.com;
  location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

Далее подключаете certbot для получения сертификата и включаете HTTPS.

Резервное копирование и откат изменений

Рекомендуемая базовая стратегия:

  • До любых изменений в config.hjson делайте резервную копию:
cp /home/$USER/enigma-bbs/config/config.hjson /home/$USER/enigma-bbs/config/config.hjson.bak-$(date +%F)
  • Для отката — восстановите файл и перезапустите сервис.
cp /home/$USER/enigma-bbs/config/config.hjson.bak-2022-01-01 /home/$USER/enigma-bbs/config/config.hjson
# затем перезапуск
pkill -f main.js || true
./main.js

SOP: стандартный рабочий процесс установки (короткий план)

  1. Подготовка системы: обновление пакетов, установка зависимостей.
  2. Создание пользователя enigma.
  3. Скачивание install.sh и запуск (под Bash).
  4. Генерация config.hjson через ./oputil.js config new.
  5. Настройка основных блоков: loginServers, contentServer, chatServers, doorServers.
  6. Запуск ./main.js и проверка подключения telnet/HTTP.
  7. Настройка reverse proxy и TLS (при внешнем доступе).
  8. Регулярные резервные копии и мониторинг логов.

План отката при проблемах (шаблон)

  1. Остановить процесс EnigmaBBS (Ctrl+C или pkill).
  2. Восстановить config.hjson из резервной копии.
  3. Вернуть предыдущие версии node_modules (если есть резервная копия) или переустановить зависимости.
  4. Перезапустить EnigmaBBS и проверить соединение.

Ролевые чеклисты

Sysop / администратор:

  • Создать пользователя enigma и назначить права
  • Настроить и сохранить config.hjson
  • Сконфигурировать firewall / reverse proxy
  • Настроить резервное копирование
  • Проверить работу MRC и contentServer

Пользователь / член сообщества:

  • Зарегистрировать аккаунт через Apply
  • Создать первое сообщение (тест)
  • Подключиться к MRC (при доступе)

Тесты и критерии приёмки

Критерии приёмки для успешного развертывания:

  • Сервер успешно стартует командой ./main.js без фатальных ошибок
  • Подключение по telnet к порту (например, 8888) возвращает сплэш‑скрин
  • Создание первого аккаунта (sysop) проходит без ошибок
  • Создание и отображение сообщений работает (создать → сохранить → прочитать)
  • Если включён contentServer, веб‑портал доступен по http://:

Минимальные тесты:

  • Unit: npm install && npm test (если присутствуют тесты в проекте)
  • Интеграция: создание сообщения и чтение через веб‑портал

Альтернативные подходы

Если вы не хотите разворачивать EnigmaBBS локально:

  • Использовать контейнеризацию: Docker‑образ EnigmaBBS (если доступен) для изоляции и быстрого развёртывания.
  • Использовать виртуальную машину (VM) с заранее подготовленным образом.
  • Использовать эмуляторы BBS, если вам нужен только интерфейс «для ностальгии», а не сетевые функции.

Плюс Docker/VM: легче откатывать изменения и изолировать среду.

Совместимость и миграция

  • Основная сложность — версия Node.js. EnigmaBBS обычно документирует поддерживаемые версии; если возникает MODULE_NOT_FOUND, обратитесь к разделу установки Node.js соответствующей версии.
  • Door‑игры часто ожидают конкретный dropfile; проверьте требования каждой игры при миграции.

Когда BBS не лучший выбор

  • Для большого количества пользователей в масштабе Интернета — лучше использовать современные веб‑форумы и мессенджеры с горизонтальным масштабированием.
  • Если требуется высокая степень аутентификации/управления правами — возможно, современная CMS/форум предоставляет больше инструментов безопасности и управления.

Контрпример: для приватного хобби‑проекта, локальной ретро‑комьюнити и тестирования сетевых протоколов EnigmaBBS — отличное решение.

Полезная шпаргалка (cheat sheet)

Быстрый набор команд:

  • Установка зависимостей: sudo apt install …
  • Запуск установки: ./install.sh
  • Генерация конфига: ./oputil.js config new
  • Запуск сервера: ./main.js
  • Подключение: telnet localhost 8888
  • Откат: cp config.hjson.bak config.hjson && restart

Совместимость с локальными правилами и GDPR‑заметки

Если вы планируете предоставлять публичный доступ и хранить персональные данные:

  • Соблюдайте принципы минимума данных — не сохраняйте лишнюю личную информацию пользователей.
  • Обеспечьте механизм удаления данных по запросу (если сервис доступен гражданам ЕС, это требование GDPR для персональных данных).
  • В публичном доступе применяйте HTTPS и следите за политикой паролей.

Краткая методология развертывания для команды (мини‑метод)

  1. Разверните тестовую среду (VM/Docker).
  2. Протестируйте install.sh и запустите полный цикл создания аккаунта/сообщения/MRC/веб‑портала.
  3. Задокументируйте изменения в config.hjson.
  4. Подготовьте чеклист для продакшн‑развёртывания.

Шаблон конфигурации: блоки на которые стоит обратить внимание

  • instance.name — имя BBS
  • instance.logLevel — уровень логирования (debug/info/warn/error)
  • loginServers[].port — порт для telnet/ssh
  • chatServers.enabled — включение MRC
  • contentServer.http.enabled — включение веб‑портала

Модель зрелости проекта (простой фреймворк)

  • Уровень 0 (Proof of Concept): локальный инстанс, single‑user, без внешнего доступа.
  • Уровень 1 (Home server): стационарный локальный сервер, доступ в локальной сети.
  • Уровень 2 (Community): публичный доступ через reverse proxy, TLS, резервные копии.
  • Уровень 3 (Production hobby): мониторинг, бэкапы, отказоустойчивость, модерация пользователей.

Примеры проблем и быстрые решения

  • Telnet не соединяется: проверьте, слушает ли порт ss -tulpn | grep 8888 и не блокирует ли iptables/ufw.
  • Ошибки node‑modulen: удалите node_modules и выполните npm install в директории проекта.
  • Неправильный путь в конфиге: проверьте fqdn/port в contentServer перед перезапуском.

Полезная команда для отладки логов

# Просмотр логов в реальном времени (если l og выводится в файл)
tail -f /home/$USER/enigma-bbs/logs/enigma.log

Пример решения частой ошибки: MODULE_NOT_FOUND (алгоритм)

  1. Удалить node_modules
  2. Убедиться в корректной версии Node.js
  3. npm install && npm rebuild
  4. Если используется nvm — загрузиться в окружение nvm перед npm install

Короткая ремарка от эксперта

“EnigmaBBS — интересный пример, как ретро‑идеи можно актуализировать с помощью современных инструментов; важна дисциплина в управлении зависимостями и безопасности при выводе проекта в сеть.”

Заключение

EnigmaBBS даёт возможность вернуть атмосферу локальных BBS в современные системы. С помощью отдельного пользователя, корректной конфигурации config.hjson и базовой практики безопасности вы сможете развернуть локальный или публичный BBS для друзей, сообщества или тестирования сетевых протоколов. При возникновении проблем используйте выделенные шаги отладки, резервные копии и осторожно подходите к открытию портов в сеть.

Короткая инструкция по старту: создайте пользователя → запустите install.sh → сгенерируйте конфиг → запустите ./main.js → подключитесь telnet → зарегистрируйте sysop.


Image credit: Unsplash

All screenshots by Ramces Red

Часто задаваемые вопросы

Скрипт установки не работает

Чаще всего причина — shell, отличный от Bash. Запустите /bin/bash, затем ./install.sh.

EnigmaBBS выдаёт MODULE_NOT_FOUND

Последовательность действий: удалить node_modules, установить подходящую версию Node.js через NodeSource или nvm, затем npm install && npm rebuild.

Можно ли изменить порт по умолчанию?

Да. Параметр port под loginServers в config.hjson задаёт порт для telnet. Укажите любой свободный порт.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро