掲示板システム(BBS)は、90年代の情報ハブの真骨頂でした。これは、ユーザーが情報へのアクセス、ファイルの取得、さらには他のBBSユーザーとのコミュニケーションの手段として接続することができる地理的にローカルなマシンであった。しかし、BBSに接続するためのノウハウが必要なため、一般ユーザーがBBSに参加するのは難しく、よりグローバルなWebに取って代わられ、その輝きを失ってしまった。

それでも、Linuxを使ってBBSサーバを自作することは可能です。EnigmaBBS のように、現代の言語と技術を使って 90 年代の BBS 体験を再現するプロジェクトが数多く存在します。

BBS と EnigmaBBS とは?

BBS とは、複数のユーザが遠隔地のネットワークからコンピュータにアクセスするためのプログラム群です。これらのコンピュータには、しばしば、システムオペレータが自分のBBSの特徴を強調するために作ったプログラムが入っています。例えば、1990年代のほとんどのBBSマシンは、そのサーバー独自のゲームを提供していた。

EnigmaBBS は、伝統的な BBS ソフトウェアを現代的にアレンジしたものです。90年代のBBSの経験を、現代のコーディング標準と技術で再現することを目的としています。また、EnigmaBBS は WebSocket や SSH など、BBS を簡単にホストして利用するための機能を多数備えています。

EnigmaBBS は、従来の BBS とは異なり、FidoNET を介して他の同様のサービスと容易にコミュニケーションできるプラットフォームを提供します。このアプローチにより、他のサーバと明示的に接続することなく、シームレスに対話することができます。

最後に、EnigmaBBS は DoorParty, Exodus, CombatNet を通じてサードパーティ製のドアゲームを完全にサポートしていますので、ゲームのロードはその特定のゲーム用のドロップファイルを提供するのと同じくらい簡単です。EnigmaBBS を友人や家族のための専用の BBS ゲームサーバーにすることも可能です。

EnigmaBBS のインストール

  1. BBS サーバー用に別のユーザーアカウントを作成し、個人的なファイルへのアクセスができないようにします。まずは、以下のコマンドを実行してください。
sudo useradd -s /bin/bash -d /home/enigma -m -G sudo enigma
sudo passwd enigma
    1. su enigma を実行して、新しいユーザアカウントに切り替えます。
    1. EnigmaBBS インストールスクリプトをダウンロードする: BBS のコピーを作成するために必要なすべてのツールを取得し、コンパイルし、インストールするオールインワンスクリプトです。以下のコマンドを実行します。
sudo apt install curl git make gcc g++ python p7zip lhasa arj lrzsz python-is-python3
wget https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh
  1. ターミナルで以下のコマンドを実行し、スクリプトの実行ビットを有効にして、シェルから実行します。
chmod +x ./install.sh
./install.sh
  1. EnigmaBBS はまず、NodeJS をコンパイルするために必要なすべてのパッケージをダウンロードします。そこから、BBSのソフトウェアをインストールするために必要なパッケージをすべてダウンロードします。

EnigmaBBS の設定を生成する

次に、新しいターミナルウィンドウを開いて、今インストールしたすべてのプログラムをマシンが検出することを確認します。

  1. Ubuntu を使用しているので、現在のターミナルウィンドウで “New Tab” ボタンを押しました。

2. EnigmaBBS のルートディレクトリに移動します。このフォルダには、BBSサーバーのすべてのファイルや詳細が格納されています。以下のコマンドを実行してアクセスします。

cd /home/$USER/enigma-bbs

設定ファイルの新規作成

  1. この中に入ったら、今度はこのコマンドで BBS サーバの設定ファイルを作成します。
./oputil.js config new

2. EnigmaBBS は設定ファイルをどこに置くか尋ねてきます。ほとんどの場合、ここで Enter を押すだけで、すべての設定ファイルがデフォルトのディレクトリにあることが確認できます。

3. 新しい EnigmaBBS インスタンスに名前を付けるように指示されます。私たちは “Hello, world!” と名付けました。

4. 最初のメッセージ会議には、フォーラムサイトのカテゴリに似た名前をつけます。ここでは、Enterを2回押して、デフォルトの “Local “という名前を使用しました。

5. スクリプトは、最初のメッセージエリアの名前を尋ねるでしょう。メッセージ会議と同様に、これはあなたのBBSのメッセージをさらに分類するためのものです。もう一度、Enterを2回押して、デフォルトの値を使用します。

6. プログラムが実行中に残すべきログの量を設定します。デフォルトでは、EnigmaBBS は診断情報のみをサーバに残すことを推奨しています。にもかかわらず、サーバーに残すログの量を増やすか減らすかを選択することができます。これは、問題を診断する場合に特に有用です。私たちのサーバでは、デフォルトの「情報」レベルを選んでいます。

新しい BBS の接続と使用

基本的な設定が終わったら、EnigmaBBS のサーバーを立ち上げることができます。他のウェブサーバーと違って、BBSのインスタンスを動かすのは信じられないほど簡単です。

    1. 次のコマンドを実行します。
./main.js
  1. これで EnigmaBBS が起動し、あなたのローカルネットワークに公開されます。しかし、接続するには telnet クライアントか SSH を使う必要があります。私たちは前者を使いました。

3. EnigmaBBS の起動と同様に、telnet による接続も非常に簡単です。Ubuntu には BBS と互換性のある telnet クライアントが最初から入っているからです。ローカルなインスタンスに接続するためには、たった一つのコマンドを実行するだけです。

telnet ローカルホスト 8888
  1. 接続が完了すると、EnigmaBBS は3つのオプションとともにスプラッシュスクリーンを表示します。「ログイン” “適用” “ログアウト” の3つのオプションとともにスプラッシュスクリーンが表示されます。

Sysop ユーザーの作成

EnigmaBBS はデフォルトで、サーバーの最初のユーザーアカウントを Sysop ユーザーとして予約します。

  1. 管理者アカウントを作成するには、スプラッシュ画面で “Apply “を選択します。

2. ユーザー名など、自分に関する情報を入力します。ユーザー名は “ramcesr “を使用しました。

3. 注意すべき点は、このページのほとんどのフィールドに実際の情報を入力する必要がないことで す。例えば、存在しない電子メールを入力しても、EnigmaBBS はアカウントを作成します。これは、BBS に連絡先を残したくない場合に役立ちます。

最初のメッセージを送る、読む

EnigmaBBS はすぐにあなたのアカウントのメインメニューにリダイレクトします。

ここで、あなたの BBS インスタンスの様々な機能を利用することができます。

  1. Mを押し、次にP` を押して、EnigmaBBS に新しいメッセージポストを作成することを伝えます。
    1. 次の画面で Enter を押し、メッセージの件名を書きます。ここでは “Hello world!” と書きました。

3. 3. もう一度Enterを押して、メッセージの本文を書きます。 4. 4. Esc を押し、“Save “を押して、BBSにメッセージを送信します。

5. EnigmaBBS でのメッセージの閲覧も比較的簡単です。メインメニューで M を押し、次に L を押すと、現在のメッセージ会議にあるすべての新着メッセージがリストアップされます。

別の BBS と通信する

上で述べたように、EnigmaBBS は他の BBS サーバーとシームレスに通信することも可能です。これは特に、BBS インスタンスに付加的な活動を導入したい場合に便利です。

  1. EnigmaBBS のインスタンスを Ctrl + C を押すか、ターミナルウィンドウを閉じるかして、電源を切ります。
    1. サーバーの設定ファイルを編集します。この HJSON ファイルは、EnigmaBBS のルートディレクトリの “config” フォルダの下にあります。
nano /home/$USER/enigma-bbs/config/config.hjson
  1. chatServers” オプションを見つけます。これは EnigmaBBS のマルチリレーチャット機能を制御するものです。このオプションは / を押しながら “chatServers” とタイプして探してください。

を参照してください。 4. enabled” の値を “false” から “true” に変更します。

を実行します。 5. 5. このファイルを保存して、EnigmaBBS を再起動します。

    1. メインメニューで MRC と入力し、Enter を押して、マルチリレーチャットにアクセスします。
    1. EnigmaBBS が他の BBS サーバーとのチャットルームに接続するための新しいウィンドウがロードされます。

ウェブコンテンツサーバの作成

EnigmaBBS はメッセージを送る以外にも、非常に柔軟なソフトウェアであり、拡張することでやりたいことが何でもできます。たとえば、BBS にあるすべてのメッセージやファイルを表示するコンテンツサーバを作ることができます。

  1. サーバーの “config.hjson “ファイルを開いてください。

2. contentServer “関数を探します。このブロックには、Webベースのコンテンツポータルを作成するために必要なすべての設定が含まれています。Vim で / を押し、“contentServer” と入力すると、そのセクションにジャンプします。

3. 作成するWebサーバーのドメイン名を記入します。このサーバーはローカルネットワーク内でのみ動作させるつもりなので、「localhost」と書きました。

4. http” の “enabled” の値を “true” に変更し、EnigmaBBS の Web サーバを有効にすることを伝えます。

5. 5. config.hjson ファイルを保存し、BBS サーバーを再起動すると、新しい設定が適用されます。 6. 6. 設定完了後、ブラウザで localhost:8080 と入力すると、BBS のウェブポータルにアクセスできるようになります。

よくある質問

EnigmaBBS のインストールスクリプトが動作しません。

これは、あなたのシステムで別のシェルを使っていることが原因である可能性が高いです。EnigmaBBS のインストールスクリプトは、デフォルトでは Bash を使って必要なプログラムをコンパイルしています。このスクリプトは、インストールを正しく行うために Bash 固有の関数に依存しています。この問題を解決する一つの方法は、現在のターミナルから /bin/bash を実行して、Bashシェルを実行することです。これを実行すると、画面のプロンプトが変わり、現在Bashを使用していることがわかります。そこから、インストールスクリプトを再度実行することができます。

EnigmaBBS は MODULE_NOT_FOUND エラーを報告します。

これは、EnigmaBBSが期待するライブラリのバージョンと、あなたのコンピュータで見つけられるライブラリのバージョンに差がある場合に起こります。

これを修正するには、3つのことをする必要があります。まず、rm -rf /home/$USER/enigma-bbs/node-modules を実行して、EnigmaBBS がコンパイルしたばかりのオブジェクトを全て削除してください。

次に、UbuntuのパッケージマネージャにNodeJSの公式リポジトリを追加するコマンドを実行します。

curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -`.

適切なバージョンの NodeJS をインストールし、EnigmaBBS 用のオブジェクトをすべて再構築します。

sudo apt install nodejs && nvm install v14.19.3 && npm install && npm rebuild`.

EnigmaBBS のデフォルトポートを変更することはできますか?

多くの Linux ディストリビューションでは、デフォルトの telnet ポートを無効にして、そのポート経由のトラフィックを許可しないため、BBS サーバは telnet 接続に 8888 ポートを使用します。それでも、“config.hjson” ファイル中のいくつかの設定を変更することで、EnigmaBBS が使用するポートを変更することができます。

loginServers” の下にある port: 変数を探し、あなたのシステムで実行中のサービスと衝突しない任意の数値に変更します。

Image credit**:** Unsplash All screenshots by Ramces Red

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。