Home

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 | |
| 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
- TN3270 screens with PF keys, and 3270 graphics where the emulator has them
- SSH, with passwords or keys
- Commodore 64s in PETSCII and RIPscrip terminals
- VT terminals, with DEC line drawing, monochrome and VT52 support
- Sixel graphics for the logo and pictures
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
- New users who sign themselves up (or not, with
new_users = no), and access levels with flags, daily limits and validation - Customization with ANSI art, 3270 screens, menus and prompts, and scripting in JavaScript
- SQLite, PostgreSQL, MySQL or MariaDB, with
bbs db copybetween them - Backups while callers are on, security settings to keep callers out, and certificates from Let's Encrypt and other ACME CAs, got and renewed
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 |
| 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¶
- The wiki is also a website: d-modem.github.io/bbs.
- Planned work is in TODO.md.
- The other parts of the suite are listed in the README.