ANetBBS Overview

ANetBBS is a modern reimagining of a 1990s bulletin board system.
Web-modern in the parts that should be (HTTPS, real-time chat, mobile
layout), and old-school in the parts that should be (telnet/SSH access,
ANSI art, FidoNet echomail, door games).

Architecture at a glance

                         ┌───────────────────────┐
                         │   nginx (HTTPS / 80)  │
                         └──────────┬────────────┘
                                    │
            ┌─────────┬───────┼───────┬───────┬──────┬────────────┐
            ▼         ▼       ▼       ▼       ▼      ▼            ▼
     anetbbs-web   telnet   ssh    rlogin   ftp   binkp   anetbbs-mrc-bridge
     (Flask +      (asyncio (asyncssh) (asyncio (pyftpdlib (asyncio  (aiohttp /
      eventlet,     telnet)            rlogin)  thread)    listener)  WebSocket)
      gunicorn)                  └── all in anetbbs.service ─┘
            │           │           │            │             │
            └───────────┴─────┬─────┴────────────┴─────────────┘
                              │
                       ┌──────▼──────┐
                       │   SQLite     │   ← single shared DB
                       │  /data/      │     all services agree on
                       │  anetbbs.db  │     users, posts, sessions,
                       └──────────────┘     menus, ratios, etc.

Each protocol runs as a separate systemd service. They all read the
same .env, use the same SQLite DB, and the BBS terminal services
sync their live presence into the same UserSession table the web
app uses, so the "who's online" widget shows everyone at once.

What it can do

  • Message boards with categories / sub-conferences, threading,
    reactions, drafts, last-read tracking.
  • Echomail (FidoNet-style) over BinkP and QWK packet networks.
    Per-user QWK offline-reader workflow.
  • File areas with optional sysop moderation queue, ratios,
    TIC processor for hatched files, shareable expiring links.
  • Door games — DOS via DOSBox bridge, native scripts, Synchronet
    JS, Mystic Pascal Script, plus generic exec for anything else.
  • Image galleries — browser-native image viewer at /gallery/
    with admin CRUD for adding collections and managing files.
  • Chat — multinode terminal chat between connected sessions,
    IRC bridge, MRC bridge for inter-BBS chat, in-page shoutbox.
  • Real-time sysop control panel — service start/stop/restart
    from the web, NodeSpy showing what every terminal user is doing.
  • Themes — pick from 7 built-in or sysop builds custom.
  • Customizable everything — every menu, hotkey, ANSI screen,
    external program, board category is data-driven.

Where to go next