Excalibur's Sheath

Cyber Sword BBS: Building a Modern Linux BBS Inspired by the Dial-Up Era

May 18, 2026 By: Jordan McGilvraybbs,synchronet,mystic,linux,retrocomputing,ftn,dovenet,automation,bash,perl,dos,doorparty,telnet,sysop,networking,terminal

Introduction

Bulletin board systems are often remembered through aesthetics first: ANSI graphics, terminal menus, door games, shareware libraries, and the sound of a modem connecting somewhere late at night. But the deeper I got into building Cyber Sword BBS, the more I realized those visible pieces were only the surface layer of something much larger. Underneath every BBS was an entire operational ecosystem made up of message routing, scheduled networking, automation, moderation, maintenance, and constant improvisation by individual sysops trying to keep their systems stable and connected.

I was too young to run a BBS during the dial-up era, but I grew up fascinated by them. What interested me was not only the nostalgia surrounding BBS culture, but the independence of it. Individual systems existed as their own small worlds. Sysops built communities, maintained file libraries, exchanged network packets across regions, and connected users together long before modern centralized social platforms became dominant. Years later, Cyber Sword BBS became my attempt to finally build one of those systems myself — not as a museum piece, but as a living Linux-based system inspired by the same operational philosophy.

Very early on, I decided I did not want the project constrained entirely by 1980s and 1990s technology. The goal was never strict historical reenactment. I wanted the experience and structure of a classic BBS, but I also wanted the practical advantages of modern Linux infrastructure, scripting, automation, and virtualization. That decision shaped almost every later architectural choice. The project slowly evolved into a hybrid system where classic terminal interaction sits on top of modern operational tooling, Bash scripting, Perl automation, scheduled networking, and layered infrastructure management running quietly underneath the visible interface.

Over time, the project changed from “getting a BBS running” into something much more reflective. It became an exercise in understanding how these systems actually worked, what made them stable, where complexity accumulated, and how much invisible infrastructure existed behind even small hobbyist systems during the dial-up era. Cyber Sword BBS eventually reached a point where the architecture stopped changing shape and entered a kind of operational equilibrium. This article is a retrospective on how the project reached that state, what failed along the way, what had to be rebuilt, and what lessons emerged from operating a modern Linux BBS inspired by an older computing culture.


Overview

“At some point I stopped searching for the perfect BBS and started maintaining my own.”

Cyber Sword BBS runs on a small VPS and is designed to recreate the structure and feel of a traditional dial-up era bulletin board system while still remaining practical on modern Linux infrastructure. The goal was never to build a perfect historical reconstruction or a frozen copy of a 1990s system. What mattered was preserving the interaction style, operational philosophy, and layered structure of classic BBSing while still allowing the system to benefit from modern Linux tooling and automation.

The project gradually settled around several core goals:

  • preserve the experience of classic BBS interaction
  • maintain traditional message bases and file areas
  • support FTN-style networking
  • provide door systems and interactive terminal software
  • operate reliably on modern Linux infrastructure
  • avoid unnecessary feature creep outside the scope of a BBS

Part of the challenge was realizing that “a BBS” is not really a single application. Even small systems historically depended on multiple operational layers working together:

  • BBS software
  • networking tools
  • message tossers and scanners
  • scheduled jobs
  • automation scripts
  • moderation systems
  • file maintenance
  • terminal handling
  • backups and logging

The deeper I got into the project, the more obvious it became that the visible terminal interface was really just the top layer of a much larger operational stack. That realization ended up reshaping almost every major decision that came afterward.


Starting with Mystic

Mystic was the first platform where Cyber Sword BBS started feeling like a real system instead of simply an idea. It allowed rapid progress, gave me room to experiment visually, and made it possible to stand up something recognizable as a traditional BBS relatively quickly. At this stage, most of my attention was still focused on the visible layers of the project: menus, organization, file sections, message areas, and the overall experience users would interact with directly.

Rapid Early Progress

The first major implementation of Cyber Sword BBS was built on Mystic BBS. Initially, Mystic felt excellent because it allowed visible progress very quickly. The system was lightweight, responsive, easy to customize, and much easier to visually shape than what came later with Synchronet. Within a relatively short amount of time I already had ANSI menus, message areas, file sections, themed interfaces, and early door integrations functioning in ways that genuinely felt like the classic systems I had spent years reading about.

The Importance of Menu Structure

One thing that mattered more than I initially expected was menu hierarchy. Mystic allowed cleaner nested menu structures that made it easier to logically separate systems without flattening everything into huge category trees. I could break utilities, message areas, libraries, and door systems into smaller organized sections while still keeping the interface understandable and visually clean.

That mattered because traditional BBS systems accumulate complexity very quickly. Even relatively small systems can end up with large numbers of message bases, file libraries, utilities, doors, and operational tools. The ability to organize those systems hierarchically made the BBS feel much more coherent during its early stages.

The System Starts Feeling Real

At this stage the project still mostly felt creative rather than operational. I was spending more time thinking about ANSI screens, organization, navigation, and user experience than infrastructure stability. For the first time, I could log into something that actually resembled the systems I had spent years reading about and imagining as a kid.

That early momentum was important because it made the project emotionally real. It stopped feeling hypothetical and started feeling operational, even though most of the difficult infrastructure lessons had not appeared yet.

FTN Networking Changes the Project

The turning point came when FTN networking became more than a checkbox feature. That was the moment where the project stopped feeling like interface customization and started feeling more like infrastructure engineering. The visible interface still mattered, but suddenly the invisible systems underneath it mattered just as much.

FTN networks are fundamentally different from modern real-time communication systems. Messages are not transmitted instantly between users. Instead, systems package messages into bundles, exchange those bundles on schedules, unpack them locally, and inject them into local message bases. Historically, this architecture existed because dial-up systems could not remain continuously connected. Telephone costs mattered, especially long-distance charges, so systems exchanged packets periodically instead of maintaining permanent live connections.

Regional systems often relayed messages through chains of nearby systems to avoid expensive direct long-distance calls. Larger HUB systems would bridge geographic gaps between regions. Messages could pass through multiple independent systems before finally arriving at their destination.

Pull-Out:
FTN networking was never “real-time.” It was asynchronous routing shaped by the economics of dial-up telephone systems.

This was where Mystic started showing structural weaknesses for my use case. Mystic relied heavily on external tooling and fragmented integration layers for FTN operation. The more networks I experimented with, the more disconnected the overall operational model started feeling. At first I assumed I was simply still learning configuration, but eventually it became obvious that I was running into architectural friction instead of simple setup mistakes.


Exploring Alternatives

Once FTN networking and operational maintenance became serious concerns, the project entered a period where I started evaluating platforms much more critically. Earlier in development I mostly cared about customization and interface flexibility, but at this point reliability, integration quality, and operational cohesion started mattering far more than visual polish.

From Customization to Infrastructure

The project stopped feeling like “customizing a retro system” and started feeling more like maintaining infrastructure. That change in mindset directly led into a phase where I evaluated several other BBS platforms before finally settling on Synchronet.

WWIV

WWIV was one of the first alternatives I explored after Mystic. Historically it carries a lot of significance in BBS culture, but in practice I was never able to get it operating reliably enough in this environment to justify deeper investment.

That experience reinforced something important:

Operational reliability matters more than historical importance.

Citadel

Citadel was fascinating because it still preserved a very unique communication ecosystem. The problem was scope. Citadel had evolved into something much broader than what I wanted this project to become. It included web functionality, groupware behavior, and broader integrated communication tooling.

None of that was bad. It simply was not aligned with the goal of building a focused BBS environment.

Enigma 1/2

Enigma interested me conceptually, but I never became fully comfortable with the configuration model. The setup complexity itself became a barrier before the platform became operational enough to justify the learning curve.

That experience reinforced another lesson:

Configuration complexity is real complexity.


Moving to Synchronet

The move to Synchronet marked the point where the project stopped searching for an identity and started consolidating around a long-term operational structure. Synchronet was not perfect, and in several ways it was more rigid than Mystic, but it felt substantially more mature once I started working within its architectural assumptions instead of fighting them.

Why Synchronet Won

Eventually the project transitioned fully to Synchronet, which ultimately became the permanent platform for Cyber Sword BBS. Several things stood out immediately once I started working with it more seriously. Synchronet included integrated FTN support, native DOVENet integration, stable message handling, mature file systems, strong scripting support, and lower resource usage than many of the alternatives I had explored.

Just as importantly, Synchronet felt operationally mature. It grew directly out of the dial-up era and is still maintained by its original developer, which gave it a kind of continuity that mattered to me.

Learning Synchronet’s Constraints

At the same time, Synchronet immediately introduced new frustrations. Mystic had been easier to theme, easier to organize visually, and significantly easier to structure hierarchically. Synchronet’s menu system felt flatter and more rigid by comparison.

For a while I seriously considered building entirely custom scripted menu systems on top of Synchronet in order to recreate the organizational flexibility I had before. Eventually I backed away from that idea because the more I worked with Synchronet, the more obvious it became that fighting the architecture was going to create more fragility than flexibility.

Working With the Platform Instead of Against It

One of the more important lessons from this phase was learning to distinguish between limitations that genuinely needed solving and limitations that were better adapted to. Synchronet felt older in places, and its JavaScript environment definitely carries some quirks from its age and history. But it also felt hardened, stable, and operationally mature in ways that became more obvious over time.

Once I stopped trying to force Synchronet into behaving like Mystic, the entire project started stabilizing again.


The First Synchronet Collapse

The first major Synchronet failure ended up becoming one of the most important turning points in the entire project. Until that point, I was still approaching the system experimentally, changing things aggressively and treating the BBS more like a sandbox than infrastructure.

Rebuilding the Foundation

Not long after the initial Synchronet deployment came online, I managed to destabilize the system badly enough that the installation effectively collapsed. Looking back, that was probably one of the most important moments in the project because it forced a major shift in mindset. Instead of trying to endlessly patch over accumulated configuration damage, I rebuilt the system cleanly from the ground up.

Sometimes rebuilding is cheaper than untangling invisible configuration drift.

Stabilization Becomes the Priority

After the rebuild, the focus shifted heavily toward stabilization instead of rapid feature growth. I concentrated on:

  • stable FTN networking
  • file library organization
  • DOS shareware collections
  • menu consistency
  • reliable automation
  • controlled expansion

For long stretches of time, the project stopped visibly changing and instead started becoming dependable. That distinction mattered. The BBS stopped feeling like “a thing I was experimenting with” and started feeling like “a system I was operating.”


The BBS Slowly Became a Linux Service Stack

Over time, Synchronet stopped feeling like “the system” and instead became one important layer inside a broader Linux operational environment. That shift happened gradually as more automation, maintenance tooling, networking infrastructure, and operational scripting moved outside the BBS software itself and into external services managed directly on the server.

Separating Infrastructure From BBS Logic

One of the largest architectural shifts happened gradually over time as Synchronet stopped being “the whole system” and instead became one layer inside a broader Linux service stack. I learned fairly quickly that Synchronet’s JavaScript environment worked best when focused on BBS interaction itself rather than broader operational automation.

Bash and Perl Become Core Infrastructure

Most operational automation eventually migrated into Bash and Perl scripting running alongside the BBS itself. Perl remained my primary secondary scripting language while Bash handled orchestration and system integration tasks.

Operational scripts now handle tasks including:

  • log rotation
  • rolling configuration backups
  • FTN cron orchestration
  • advertisement generation
  • automated message posting
  • fail2ban integration
  • Usenet synchronization
  • moderation tooling
  • maintenance automation

Automation and Operational Discipline

One example of this separation is the FTN cron system itself. Synchronet includes integrated FTN tooling, but I still trigger synchronization tasks externally through Bash scripts executed by cron because it gives me clearer operational visibility and logging.

Synchronet handles BBS behavior. Bash and Perl handle infrastructure.

As these systems matured, Cyber Sword BBS increasingly stopped feeling like a single piece of software and started feeling more like a layered Linux service ecosystem.


Reinterpreting Doors

Door systems ended up evolving in a direction I did not originally expect. Early on, I assumed most of the project’s “door” infrastructure would revolve around traditional DOS software running through emulation layers. Over time, though, I realized that what mattered more than DOS itself was preserving the interaction style that doors represented.

Preserving Interaction Styles

The real defining characteristic of doors was text-based interactive computing. That realization opened the possibility of integrating Linux-native interactive software while still preserving the same terminal culture and interaction patterns that classic doors represented historically.

Linux-Native Doors

This led to several systems that eventually became some of my favorite parts of the BBS:

  • Interactive Fiction doors
  • Linux-native CLI games
  • console applications
  • wrapper-based save handling
  • ZCodeRunner.sh
  • ConsoleRunner.sh

Much of this experimentation actually began under Mystic before eventually being ported into Synchronet once the broader architecture stabilized.

Why DoorParty Came First

Classic DOS door integration still remains part of the long-term roadmap, but fully self-hosting DOS infrastructure immediately would have introduced significant additional complexity involving emulation layers, multiplayer synchronization, debugging overhead, and maintenance concerns.

Instead, I chose to integrate DoorParty first. DoorParty operates through a script-driven RLogin bridge that connects users from the local BBS into externally hosted multiplayer door systems.

Maintaining Architectural Boundaries

At the same time, I intentionally labeled these systems as Remote within the menus because I wanted users to understand which systems were locally hosted and which were externally connected. That distinction mattered architecturally as well as operationally.


The System Reached Equilibrium

Eventually the project stopped changing shape. Development continued, but the major architectural decisions were largely finished. Earlier phases of the project involved experimentation, migration, rebuilding, and structural redesign. The current phase feels much more focused on stewardship, refinement, and controlled expansion around a stable operational core.

Stabilization Instead of Expansion

Now most development happens around the edges rather than in the core design itself. Current areas of growth include:

  • curated DOS door integration
  • login/logout scripting
  • automation refinement
  • FTN tuning
  • library curation
  • selective JavaScript experimentation

The overall system architecture no longer feels experimental.

Stewardship Instead of Exploration

One of the more unexpected changes was how the project altered my relationship with the BBS hobby itself. Earlier on, much of my hobby time involved exploring other systems and searching for the “right” platform.

Now most of that energy goes into maintaining and improving my own system.

At some point the project stopped being about exploration and became about stewardship.


Lessons Learned

Looking back, the most important lessons from Cyber Sword BBS were not really about retrocomputing itself. Most of them were lessons about operational discipline, architectural restraint, maintenance overhead, and the reality of managing interconnected systems over long periods of time.

Stable Systems Resist Complexity

Every additional integration increases operational surface area. Every customization introduces future maintenance cost. Complexity compounds faster than expected once multiple systems begin interacting continuously.

Platform Maturity Matters

Mystic was easier to customize visually. Synchronet was harder to destabilize once properly understood. That difference mattered far more long term than early theming convenience.

Rebuilds Are Sometimes Necessary

The first Synchronet collapse ultimately improved the project because it forced operational discipline into the architecture.

Constraints Improve Systems

Running the BBS on a relatively small VPS forced discipline throughout the project. Limited resources discouraged uncontrolled feature creep and encouraged simpler operational designs.


Closing Thoughts

Cyber Sword BBS did not evolve linearly. It moved through rapid experimentation, networking frustrations, platform migrations, rebuilds, stabilization phases, infrastructure layering, and eventually operational equilibrium.

Many of the system’s most important design decisions only emerged after running into real-world operational limitations and learning where complexity naturally accumulated.

The project is not finished, and I do not think systems like this ever really are. There are still future plans involving curated DOS door integration, additional login scripting, selective network growth, and continued refinement of automation tooling.

But the overall architecture no longer feels unstable or uncertain.

The shape of the system is set.