Skip to content

Home

D-Modem/bbs: A bulletin board for every caller

bbs is a bulletin board system in Go for telnet, SSH, TN3270 and modem callers, and part of the D-Modem suite. This is its documentation: how to set it up, how to run it, and how to use everything it does.

One telnet port serves every kind of terminal. A TN3270 client (x3270, c3270, wc3270, Vista, PCOMM) gets full 3270 screens with PF keys, through go3270. Any other client gets a text BBS with ANSI colour where the terminal has it. Modem callers come in through the D-Modem suite: app_dmodem straight from Asterisk, or modemmenu after its login.

D-Modem BBS
Node 2, modem at 26400 bit/s

Name (or NEW): alice
Password: **********

Welcome, alice.

Main menu
  [M] Message areas         [E] E-mail (1 new)
  [W] Who's online          [U] User list
  [P] Your profile          [I] System info
  [C] Chat                  [S] Page the sysop
  [G] Goodbye

Start here

If you want to Read
Try it out in a few minutes Building, then Running
Set up a board for real Running, Configuration, Databases, Backups
Look after a running board Administration, Sysop tools, Access levels
Make it look like your own Customization, Scripting
Take calls by modem Modem callers
Join FidoNet, QWK networks or Usenet FidoNet, Offline mail, Newsgroups and NNTP
Give users e-mail addresses E-mail
Put the board on the web Web forum, Image boards, HTTP API
Work on the code Development

Every setting is listed in the Configuration reference, which is generated from bbs.conf.sample.

What it does

For callers

  • Message areas with new scans, searching, threads, votes and polls, written in a full-screen editor
  • Private mail, chat rooms, node messages and paging the sysop
  • Who's online (with how each caller came in), the user list, the last callers, feedback to the sysop, and a profile of their own
  • File areas with X/Y/ZMODEM, Kermit and IND$FILE transfers, and an FTP (FTPS) server
  • Offline mail: QWK packets of new messages, and REP packets of replies
  • Doors: DOS door games in dosemu2, Linux programs, and door networks such as BBSLink and DoorParty

Terminals

Networks

  • FidoNet and other FTN networks: echomail, netmail, file echoes, AreaFix and a built-in binkp mailer
  • E-mail: each user an address, their BBS mail read over IMAP and POP3 and sent over SMTP, to and from the internet
  • Newsgroups served by NNTP and exchanged with other news servers
  • IRC, where the chat rooms are channels, AIM and ICQ for AIM and ICQ clients on the same chat, MSN Messenger for MSN clients, Yahoo! Messenger for Yahoo clients, and MRC, the chat network shared with other BBSes
  • News, weather and quotes: news feeds as read-only areas, each caller's weather, and stock quotes from IEX
  • Finger, gopher and Gemini
  • Time: NTP, NTS and PTP, followed and served

On the web

  • A web forum of the message areas, in the style of classic forum software (Invision Power Board, vBulletin, phpBB and many more)
  • Image boards in the style of kusaba x and 4chan, also shown on the terminals
  • A web terminal and an HTTP API with REST, server-sent events and WebSockets

For the sysop

All pages

Page What it covers
Building Go, the go3270 fork, make
Running the first start, systemd, running as its own user
Administration the bbs command: users, areas, files, mail exchange
Sysop tools the sysop's menu inside the BBS, and scheduled events
Configuration bbs.conf: its sections, listeners and configuration screens
Configuration reference every section and key
Databases SQLite, PostgreSQL, MySQL and MariaDB, and moving between them
Backups making backups, and restoring them
Customization screens (ANSI art, 3270), menus, prompts
Scripting the sysop's own screens in JavaScript, on every terminal
Access levels levels, flags, requirements, daily limits, validation
SSH the SSH listener, keys, host keys
Modem callers app_dmodem and modemmenu, and where callers are
TN3270 3270 terminals, PF keys, 3270 graphics
Sixel graphics the logo and pictures on sixel terminals
PETSCII and RIP Commodore 64s and 128s; RIPscrip graphics and buttons
Terminal identification how VT terminals are recognised: DEC graphics, monochrome, VT52
Message areas reading, new scans, searching, votes and polls
Writing messages the full-screen editor, the line editor, the 3270 editor
Offline mail QWK packets, REP replies, QWK networks
Files and FTP file areas, the FTP (FTPS) server
File transfers X/Y/ZMODEM, Kermit, IND$FILE
Doors DOS doors in dosemu2 (Docker), Linux doors, doors on other systems
E-mail addresses, IMAP, POP3, SMTP, the MX, a smarthost, DNS
Newsgroups and NNTP the NNTP server, news peers
FidoNet echomail, netmail, binkp, file echoes, AreaFix, nodelists
Chat and paging chat rooms, node messages, paging the sysop
IRC the IRC server, with the chat rooms as channels
AIM and ICQ the OSCAR server: AIM and ICQ clients, buddies, IMs and chat rooms
IRC server linking The BBS as a hub server on an IRC network (TS6 or P10): every user reachable there
AOL clients a host for AOL's own clients (3.0, 4.0): sign-on with BBS accounts
MSN Messenger the MSN server: MSN Messenger 1.0 to 4.7, contacts and IMs
MSN Classic The Microsoft Network for Windows 95's client: sign-in, the areas as Categories, bulletin boards
Yahoo! Messenger the Yahoo server: YMSG 9 to 16, buddies, IMs, chat rooms and conferences
MRC Multi Relay Chat: chat rooms shared with other BBSes
News, weather and quotes news feeds, NWS and Open-Meteo weather, USGS earthquakes, IEX quotes
Finger, gopher and Gemini who is on, and the BBS in gopherspace and Geminispace
Time NTP, NTS and PTP: the clock following time servers, and serving time
Web forum the message areas as a web forum
Image boards anonymous image boards, in the style of kusaba x and 4chan
HTTP API REST, events, WebSockets in JSON and protobuf, tokens, metrics
Security what is guarded, and how
Certificates the ACME client: Let's Encrypt and ZeroSSL certificates for every TLS server, renewed
Development the source's layout, the shared screens, the tests

More