| |

Retro: Setting up a BBS Using Raspberry Pi Zero 2 and Mystic

In the mid to late 90s, I ran a BBS on a Commodore Amiga 1200.  It started with 2 disk drives, and I eventually saved enough cash to get an IDE hard drive with a massive 520MB of storage.

People from around the world would connect to that BBS on a single 36k modem.  About 80 registered users would dial into that BBS on a dedicated phoneline.

I ran a Fidonet node that let user of the BBS send electronic messages globally.  This was before email and widespread internet access was available. Users would upload games, utilities, and public domain software.

 

There were no adverts.

User data was not sold or analysed.

There was no manufactured outrage.

No algorithm to game.

No Likes. Thumbs Up. Impressions or other vanity metrics.

It ran on an isolated machine.

 

 

Screens were designed using ANSI graphics and menu navigation was simple.

In this blog post, I document how to setup a BBS in 2024.  You will see how to use a budget Raspberry Pi, free software and services to host your own BBS at home for less the £50.

 

Retro.

 

Topics covered include, but are not limited to:

  • Selecting the kit
  • Improving Pi Performance
  • Connecting to your Pi using SSH
  • Connecting to your Pi using VNC Viewer
  • Mystic BBS software
  • Using Telnet
  • Putting your BBS online
  • Setting up dynamic DNS service to give your BBS a predictable domain online
  • Refreshing your online BBS domain and IP using script automation
  • Testing dynamic DNS using telnet

 

I don’t drop into *nix much these days and this was a blast from the past.  It only took a few hours to get a basic BBS online.

Let’s dive in.

~

Starter Kit

My main requirement was the kit must be low cost.  The Raspberry Pi Zero 2 looked like the tool for the job so I order this from PiHut.

The total for this kit was £51 including postage.

The kit arrives with everything you need to run a computer.  It’s tiny.

You just need to connect a keyboard, mouse, and monitor.  All cables are provided.  There are a few other things that are included that you don’t need.

I think you could shave a little money off the total cost buy ordering each of the components separately, but these additions are good to have should you wish to experiment with different projects.

Get the Pi Zero 2 Starter kit here.

~

Testing Your Pi

The Starter Kit ships with an SDCARD with the Raspian OS installed.  When you connect the Pi to your screen and power it on, you’re guided through an installation wizard that asks you to supply basic configuration settings.

Super easy.

~

Improving Pi Performance

I tried browsing the web using Chrome on the Pi. The performance was terrible.  Turns out the swap file isn’t sufficient.

Do this to increase the swap file:

  1. Close all open applications, open a terminal. Run the following commands to temporarily disable swap and edit the swap configuration file:sudo dphys-swapfile swapoff

    sudo nano /etc/dphys-swapfile

  2. Look for the line which says CONF_SWAPSIZE=100. Change it to the desired swap size. Set it to 2048 to increase to 2 GB (or change to any other MB value you want):CONF_SWAPSIZE=2048
  3. Now run the following commands to initialize the swap file on your Zero 2, and to start the swap again:sudo dphys-swapfile setup

    sudo dphys-swapfile swapon

~

Connecting to the Pi Using SSH

It can be convenient to use Secure Shell to send CLI commands quickly to the Pi from another machine.

A quick test of this is performed using the following:

ssh admin@192.168.1.100

 

Now that are connected, it’s easier to adjust the Pi or check things without going through the GUI.

~

Connecting to the Pi Using VNC Viewer

Sometimes, it’s just quicker to use the GUI.  This is where VNC View comes into play.  The Pi and OS comes installed with VNC but you need to enable this.

From the menu in the GUI browse to:  Preferences -> Raspberry Pi Configuration

In the Interfaces tab, enable VNC.

Next, install VNC Viewer on your client machine.  Add the Pi IP address:

Connect to the Pi from your client machine. You should be able to access it.

~

Mystic BBS

The Mystic BBS is available from here.  You can find instructions for the download and different versions are available.

Installing Mystic

Installation is quite easily. I wanted to install it to the root directory but for some reason the installer was not happy so had to install it onto the logged in user folder:

/home/admin/mystic

Testing Mystic

After the installation is completed, Mystic can be tested using local mode.  You do this by moving to the directly you installed Mystic in and by running the following command:

./mystic - l

The following is displayed:

The ANSI graphics are a mess due to the character encoding between Windows and Unix.  This can be amended the configuration settings.

More on that later.   For now, we can prove the software is running.

Create an account for yourself.  This will be the sysop account but needs special permissions.

~

Creating the Sysop Account

The sysop account needs elevated access. This can be done by opening the user editor in the Mystic Configuration app.

Open this by running the following command:

./mystic -cfg

 

Press CTRL-U to open the Security Levels screen.  When in there, selection the option that has Lvl 255 (Systems Operator) :

 

Tap Escape twice and save the changes:

 

Now, login again locally using the command ./mystic – l from the command prompt.  The system menu and some other options are available:

~

Configuring Mystic to Allow Telnet Connections

With access to the Pi available via SSH and VNC setup and having proved we can login to the BBS locally on the Pi, we need a way accept connections from remote machines.  We also need the BBS to handle this 24×7.

This is made possible by running Mystic in server mode.

This is another executable that is run from the command prompt.  Mystic server must be configured to allow telnet connections.

To enable telnet connections, open the configuration tool again.

Within the Servers menu, select Configure Servers:

 

In the following screen, ensure that Terminal (TELNET) is active.  I set the port to 2323 as port 23 is often reserved by the host system and avoids any potential conflicts:

~

Running Mystic Server

With telnet enabled, we can run the server.  Do this by running the following command in the CLI:

./mis SERVER

The Mystic server is activated and can accept telnet connections:

It can now be tested.

~

Telnet

Before testing the BBS, we’ll double check to see which ports the Pi has open and is listening on.

Running the following command provides this information:

sudo netstat -tuln | grep 23

We can see the Pi will accept connections on port 2323

~

Testing Telnet

It’s time to test the BBS using telnet on another machine on the local network.  Using my Windows machine, I open telnet from the command prompt by typing telnet and hitting return.

In the telnet prompt, we supply:  open 192.168.1.100 2323

 

All going well, the BBS login screen should be displayed:

 

The ANSI graphics aren’t displayed properly connecting via Windows but adjusting the character set in Mystic or using a different terminal client can resolve this.

~

Dynamic DNS

The BBS is running on the Pi and we can telnet onto the BBS using the local network IP address.

This is only useful if you are on the local network but as most people connect to the internet from home using residential broadband providers, the public IP address is often dynamic and changes regularly.

We need a way to allow users to use a predictable DNS / IP address when connecting over the internet via telnet to the BBS.

This is where a dynamic DNS service comes into play.

There are several out there. I chose a free one called Dynu DNS.

The way this works you create a free DNS name with the service. They host that free name, and you write a script to periodically ping Dynu DNS with your IP address.

Users of the BBS can connect to your Mystic instance on the Pi using the DNS name which maps to your current IP address.

To do this, login to Dynu DNS and access the DDNS Services menu:

 

Select one of their host names and add it:

 

It appears in your list:

 

I opted for forumbbs.ddnsfree.com.

~

Automating Dynamic IP Address Refresh to Dynu Using a Script

We need a way to automatically update the refresh of the IP address the BBS is using on the web.

This is where the script comes into play.

So, back onto the Pi terminal.

Whilst logged in over SSH, enter the following to the command prompt: Nano updateIP.sh

 

It will load the editor Nano:

 

Supply the following

echo url="https://api.dynu.com/nic/update?username=YOUR_DYNU_NAME&password=YOUR_HASHED_PASSWORD" | curl -k -o ~/dynuds/dynu.log -K -

 

Make dynu.sh executable:

chmod 700 dynu.sh

 

Use a cron job to make the script run every 5 minutes. Type

crontab -e

 

Add the following to the bottom of the crontab:

*/5 * * * * ~/dynudns/dynu.sh >/dev/null 2>&1

 

Test the script by manually running the command in the CLI.  The last updated datetime will reflect the current datetime:

 

You can read more about DNS in Dynu here: Raspberry Pi | Free Dynamic DNS Service | Dynu

~

Verify Dynamic DNS

Verify the dynamic dns entry resolves to an IP by running the following command:

nslookup forumbbs.ddnsfree.com

~

Adjusting Router Port Forwarding Settings

This tripped me up. I forgot to adjust the port forwarding settings in my home router. You can do this by browsing to http://192.168.1.1/.  Your router settings may be on a different IP address.

 

After logging in, you locate the port forwarding / mapping settings for your router, then add a new rule.  Here we can see I am forwarding the public port 2323 to the local port 2323 on the router:

 

At this point, all ports, software, and services have now been activated and we can test the BBS using telnet over the web with the DDNS.

~

Testing Dynamic DNS Using Telnet

We take the DDNS from Dynu that was setup from earlier (forumbbs.ddnsfree.com) then use this to telnet onto the BBS.

Open a command prompt from any machine.

Supply the following command : telnet forumbbs.ddnsfree.com 2323

We are connected to the login screen for the BBS:

 

We can browse the main menu and explore all of the features and tools that are available:

 

The ANSI graphics don’t fully display properly on the Windows CLI.

When accessing Mystic by logging directly onto the Pi however, they render ok:

I’ll leave that for another time.

~

Summary

In this guide, we’ve seen how to setup an old school BBS using a Raspberry Pi and Mystic BBS.

We saw how to make it available online over the web via telnet.

This demo BBS is currently online at forumbbs.ddnsfree.com 2323.

JOIN MY EXCLUSIVE EMAIL LIST
Get the latest content and code from the blog posts!
I respect your privacy. No spam. Ever.

Similar Posts

Leave a Reply