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

О чём эта статья
- Что такое 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.

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

Подготовка перед установкой
Короткие определения:
- Sysop — системный оператор, администратор BBS.
- Dropfile — файл, передаваемый door‑игре с информацией о сессии.
- MRC — Multi‑Relay Chat, механизм для обмена чат‑сообщениями между серверами.
Требования перед началом:
- Рабочая Linux‑машина (Ubuntu/Debian‑производные или совместимые)
- Подключение к Интернету для загрузки зависимостей
- Права sudo для установки пакетов и создания пользователя
Советы по безопасности перед запуском:
- Создавайте отдельного системного пользователя для BBS, чтобы ограничить права.
- Не запускайте BBS под root.
- Резервная копия config.hjson перед изменениями.
Установка EnigmaBBS (пошагово)
Ниже — рекомендуемые команды и порядок действий. Обратите внимание, что команды приведены для Debian/Ubuntu‑подобных систем; для других дистрибутивов пакеты и менеджер пакетов могут отличаться.
- Создаём отдельного пользователя для BBS:
sudo useradd -s /bin/bash -d /home/enigma -m -G sudo enigma
sudo passwd enigmaПояснение: пользователь enigma будет владельцем файлов BBS и изолирует сервис от вашего личного аккаунта.
- Переключаемся на пользователя enigma:
su - enigma- Устанавливаем необходимые зависимости и скачиваем скрипт установки 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- Делаем скрипт исполняемым и запускаем установку:
chmod +x ./install.sh
./install.shЧто делает install.sh: скачивает исходники Node.js (если требуется), необходимые библиотеки, компилирует локальные бинарники и устанавливает зависимости проекта. Процесс может занять несколько минут — в зависимости от скорости сети и мощности машины.

Важная заметка: если инсталлятор завершится с ошибками, проверьте логи в терминале, а также наличие curl/git/компиляторов. Далее мы расскажем, как решать частые ошибки.
Генерация конфигурации EnigmaBBS
После установки откройте новый терминал (или новую вкладку), чтобы убедиться, что окружение обновлено и все зависимости в PATH видимы.
cd /home/$USER/enigma-bbsСоздание нового файла конфигурации
./oputil.js config newoputil.js предложит путь для сохранения конфигурации (обычно — в папке config). Для большинства случаев можно нажать Enter, чтобы принять значения по умолчанию.
Процесс создания: вам предложат имя инстанса (например, “Hello, world!”), имя конференции сообщений (по умолчанию “Local”) и имя области сообщений. Также будет предложено выбрать уровень логирования (Debug/Info/Warning/Error). Для запуска на домашнем сервере рекомендован уровень Info.

Рассмотрите структуру конфигурации 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
- Запуск сервера из корня проекта:
./main.jsmain.js поднимает сервер и слушает порты, указанные в config.hjson (по умолчанию telnet‑порт 8888).
- Подключение к локальному инстансу через telnet:
telnet localhost 8888(Альтернатива: подключение через SSH, если вы настроили ssh‑сервер в конфигурации.)
После подключения вы увидите сплэш‑скрин с тремя опциями: Login, Apply и Logout.

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

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

Настройка связи с другими BBS (Multi‑Relay Chat)
Чтобы EnigmaBBS могла соединяться с другими серверами в режиме MRC:
- Остановите текущий процесс EnigmaBBS (Ctrl+C или закройте терминал).
- Откройте конфигурацию для правки:
nano /home/$USER/enigma-bbs/config/config.hjson- Найдите блок chatServers и измените enabled: false → true. Сохраните и перезапустите EnigmaBBS.
После этого в главном меню доступен пункт MRC — при выборе ваш сервер попытается подключиться к чат‑руму.

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

Частые вопросы и решение проблем
Установка скрипта завершилась с ошибкой
Если install.sh не отрабатывает корректно, возможно, ваш текущий shell — не Bash и скрипт использует bash‑специфичные конструкции. Запустите:
/bin/bash
./install.shи посмотрите вывод на предмет ошибок компиляции.
Ошибка MODULE_NOT_FOUND
Возникает при несовместимости версий Node.js/пакетов. Рекомендованные шаги:
- Удалите локальные node_modules и сборки:
rm -rf /home/$USER/enigma-bbs/node_modules- Добавьте официальный NodeSource и установите подходящую версию Node.js (пример для Node 14):
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install -y nodejs- При использовании 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.jsSOP: стандартный рабочий процесс установки (короткий план)
- Подготовка системы: обновление пакетов, установка зависимостей.
- Создание пользователя enigma.
- Скачивание install.sh и запуск (под Bash).
- Генерация config.hjson через
./oputil.js config new. - Настройка основных блоков: loginServers, contentServer, chatServers, doorServers.
- Запуск
./main.jsи проверка подключения telnet/HTTP. - Настройка reverse proxy и TLS (при внешнем доступе).
- Регулярные резервные копии и мониторинг логов.
План отката при проблемах (шаблон)
- Остановить процесс EnigmaBBS (Ctrl+C или pkill).
- Восстановить config.hjson из резервной копии.
- Вернуть предыдущие версии node_modules (если есть резервная копия) или переустановить зависимости.
- Перезапустить 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 и следите за политикой паролей.
Краткая методология развертывания для команды (мини‑метод)
- Разверните тестовую среду (VM/Docker).
- Протестируйте install.sh и запустите полный цикл создания аккаунта/сообщения/MRC/веб‑портала.
- Задокументируйте изменения в config.hjson.
- Подготовьте чеклист для продакшн‑развёртывания.
Шаблон конфигурации: блоки на которые стоит обратить внимание
- 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 (алгоритм)
- Удалить node_modules
- Убедиться в корректной версии Node.js
- npm install && npm rebuild
- Если используется 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. Укажите любой свободный порт.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента