Build a Retro CBBS for Your Shack

 






There is a special kind of magic in a blinking cursor.

Before social networks, web forums, Slack, Discord and group chats, there were bulletin board systems. You dialed in, waited for CONNECT, logged in with a handle, read the bulletins, checked your private mail, posted a message and logged off with the unmistakable finality of:

NO CARRIER

For radio amateurs, that world never really disappeared. Packet BBS systems, club bulletin boards, mailbox nodes, Winlink-style messaging, APRS bulletins, repeater status pages and remote station dashboards all come from the same basic idea: low-bandwidth, text-first, asynchronous communication.

That is the spirit behind CBBS_PI — a vintage CBBS-style BBS emulator built in Python for a modern Raspberry Pi, Mac, Linux box or Docker host.

It is part nostalgia project and part platform for experimentation.

What It Is


CBBS_PI is a text-mode bulletin board system that recreates the feel of early BBS systems.

It supports local terminal access, Telnet server mode, SSH access through OpenSSH, selectable baud-rate simulation, ANSI themes, public message boards, private mail, a file area, access levels, daily login bulletins, SYSOP logs and web dashboard administration.

It is intentionally simple. There is no database server. There are no third-party Python packages. The storage is JSON and plain text. The main program is cbbs_pi.py.

That makes it hackable, portable and very much in the amateur radio tradition.

Why a BBS Belongs in a Ham Shack?


A BBS may sound like retrocomputing for its own sake, but for hams it is also a useful pattern.

Imagine a Pi running at your club station. Members can SSH in and see daily bulletins, check a “Repeater Status” board, upload a frequency list or leave a note for the SYSOP. It is simple, resilient and readable over almost any terminal.

The Retro Touch: Real Speed Simulation


One of the fun parts of CBBS_PI is the speed simulation.

From the main menu, you can select:

300 baud
1200 baud
2400 baud
9600 baud
Instant
The simulation is implemented in the terminal I/O layer, so it affects the entire experience: banner, menus, bulletins, messages, mail, file listings and SYSOP screens.

At 300 baud, the system feels like a real slow terminal session. At 9600 baud, it feels like a later BBS. In instant mode, it behaves like a modern console app.

Message Boards


Out of the box, the project includes boards for general discussion, ham radio, computer/tech topics and SYSOP questions.

That maps naturally to ham use. You could add boards like:

Club Announcements
ARES / EmComm
Repeater Status
Field Day
Swapmeet
Digital Modes
Remote HF Station
AREDN Notes
Packet Experiments
Each board can have read and post access levels. That makes it possible to keep general discussion open while restricting control or administrative boards to trusted users.

Private Mail


The private mail feature gives each user a basic BBS mailbox.

That is useful for notes to the SYSOP, club coordination, station maintenance comments, messages between operators and testing mailbox-like workflows before experimenting with RF transport.

It also makes the system feel much more like a real BBS. A login feels different when there might be unread mail waiting.

File Area


The file area is terminal-friendly. Users can paste text files into the BBS and download files as Base64 blocks.

That is appropriate for a retro text environment and works well for small station files:

net scripts
repeater notes
AREDN settings
Node-RED snippets
radio configuration notes
antenna switch command references
Field Day checklists
Raspberry Pi service files
club meeting notes
Daily Login Bulletins
Daily login bulletins are one of the most useful ham-radio features.

A SYSOP can post a bulletin that every user sees after login:

Tonight: 2-meter net at 7:30 PM.
Field Day planning meeting moved to Zoom.
AREDN node maintenance Saturday morning.
Remote HF station offline during antenna work.
This gives the BBS a purpose beyond nostalgia. It becomes a low-bandwidth club announcement system.

SYSOP Logs


CBBS/PI logs key events such as registration, login, baud-rate changes, system-name edits, uploads, private mail and logoff.

For a club or shared station, that is practical. You can see what changed, who logged in and when.

Telnet for the Vintage Feel

Run the Telnet server:

python3 cbbs_pi.py --telnet --host 0.0.0.0 --port 2323
Then connect:

telnet 127.0.0.1 2323
Telnet is the most authentic BBS-like experience, but it is not encrypted. Use it on a trusted LAN, lab network or VPN.

SSH for Real Remote Access


For real remote use, SSH is the better choice.

CBBS/PI does not try to implement an SSH server in Python. OpenSSH already handles encryption, authentication, keys, terminal allocation, and security.

The recommended design is:

SSH client
   |
OpenSSH server
   |
forced cbbs-pi-shell.sh wrapper
   |
CBBS/PI login screen
A dedicated Linux user named cbbs can be forced into the BBS with an sshd_config block:

Match User cbbs
    ForceCommand /opt/cbbs-pi/cbbs-pi-shell.sh
    PermitTTY yes
    X11Forwarding no
    AllowTcpForwarding no
Then users connect with:

ssh cbbs@your-pi.local
They do not get a Linux shell. They get the BBS.

Web Dashboard for the SYSOP


The project also includes a lightweight web dashboard.

A SYSOP can review users, boards, messages, private mail, files, logs, daily bulletins and system configuration.

Run it with:

python3 cbbs_pi.py --web --host 127.0.0.1 --web-port 8080
Then open:

http://127.0.0.1:8080
Keep it behind localhost, VPN or a trusted reverse proxy.

Raspberry Pi Deployment
This project belongs on a Raspberry Pi.

Install it under:

/opt/cbbs-pi
Then run it with systemd so it starts automatically at boot:

sudo cp cbbs-pi.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now cbbs-pi
Now you have a little always-on BBS node in the shack.

Ideas for Ham Radio Extensions


Possible next hacks:

post solar and propagation data as a daily bulletin
bridge a board to MQTT
add Node-RED automation
generate a daily repeater status bulletin
add AREDN node status
create a packet-radio gateway experiment
bridge selected posts to APRS messages
add Winlink-inspired mailbox workflows
publish remote HF station status
add a “net control” board for weekly nets
add file drops for club scripts and configs
A remote station bulletin might look like:

Remote HF Station Status
FlexRadio: online
Antenna: 20m beam
Rotor: 145 degrees
Power: normal
Network: reachable
Last update: 07:32 local

Why This Is a Good Ham Hack?


The best ham projects are understandable.

CBBS_PI is not a black box. It is a Python script, some JSON files, a terminal interface, and a few deployment helpers. You can read it. You can modify it. You can break it and fix it.

It also connects several ham-adjacent worlds:

retrocomputing
packet-radio culture
Raspberry Pi deployment
terminal interfaces
club communication
remote station operation
lightweight services
local-first software
That makes it a perfect weekend project.

Final Thought


A BBS is not just a museum piece. It is a reminder that useful communication systems do not have to be complicated.

Put CBBS_PI on a Raspberry Pi. Give it your club name. Add a few boards. Turn on 300 baud for the full effect. Let your friends log in over SSH.

And when the session ends, make sure it says what every proper BBS should say:

NO CARRIER

You can get CBBS_PI from my Github page.

73

Comments

Popular posts from this blog

How To Get Precise Time Outside Your Shack

How to Put Your AllStar Node on 44Net Connect

How To Set Up Your Own Remote Station

Why You Might Want To Set Up Your Raspberry Pi Internet Web Server on 44Net

Build a Central N3FJP Field Day Log Server With Local DHCP and GPS Time

Building a Secure Web Portal on 44Net Without VPN Headaches

Getting WaveNode Power Meter Data Into Node-RED

A Non-Programmers Guide on How To Use AI to Write Your Own Custom Ham Radio Computer Applications

Why You Should Use SSH Keys Instead of Passwords on Your Raspberry Pi

Internet Remote Software Defined Radio (SDR) Receivers – A Starter Guide

Ham RSS News Feeds

Amateur Radio Daily

ARRL News

Zero Retries