Run a BBS you actually own
A text-based home for your community: message boards, live chat, personal mail, file sharing, and door games on a server you run and moderate. Callers connect through a browser, SSH, or Telnet. Run independently, join other nodes through NetBBS Link, connect chat channels to the MRC network, or carry FidoNet echomail and netmail.
NetBSD-first; Debian, Ubuntu and other mainstream Linux work fine. Install from GitHub Releases.
┌──────────────────────────────────────────────────────────────────────────────┐ │ ▄▀ N E T B B S :: OUTRUN SUNSET STRIP :: SPEED: 140MPH ▀▄ │ │░▒▓████████████████████████████████████████████████████████████████████████▓▒░│ │ ♦ Boards ── ♦ Turbo Chat ── ♦ File Vault ── ♦ Highway Mail │ └──────────────────────────────────────────────────────────────────────────────┘ Harbor Lights › Main menu keeper › level 255 › mail caught up ─────────────────────────────────── EXPLORE YOU [M]essage boards [D]irectory Read and post messages Look up other callers [C]hat [P]rofile Talk live with other callers Your bio and preferences [F]iles [E]-mail Download and upload files Read and send private mail [N]ew scan [H]istory Activity since your last visit Your recent sessions [/] Find [R]ecent callers Search mail, posts, files, chat Who else called this node [?] Help [W]ho's online How this board works See who's connected now [O]perators Who runs this node [V]erify Verify a caller's identity SYSTEM [S]ysOp Node administration console [L]ogoff Disconnect from this node 10:04:50 UTC Choice:
A browser or your favorite terminal.
Offer the connection methods your community uses. Browser callers need no additional software; terminal callers use an SSH or Telnet client.
Telnet
The classic path — any telnet client, on the port you choose. Classic terminals such as SyncTERM get their own CP437 character set, and plain-ASCII terminals get plain ASCII.
SSH
Key or password auth over an encrypted channel — the transport most operators reach for by default.
Web
A real terminal in the browser via xterm.js — send a link, they're in. No app, no extension. Try it on ReLink, a live NetBBS node.
NetBBS can bark now.
FidoNet's logo is a dog, and its networks have carried conversations between BBSes since 1984. NetBBS now joins FidoNet, fsxNet and other FTN networks as an ordinary node: echomail arrives on your message boards, netmail arrives in Mail, and NetBBS speaks BinkP itself, so there is no separate mailer or tosser to install.
For the SysOp
Everything is set up in the SysOp console, and nothing runs until you create and enable a network.
- A network in one editor. A new network starts filled in with fsxNet's hub; add the address and passwords your coordinator gives you.
- An echo on a message board. Put an echo tag on a message board and ask the hub for more with AreaFix. A message board is local, NetBBS Link or FTN, never two at once.
- Polls and answers. NetBBS calls your hub on a schedule, and sooner when mail is waiting. It can also answer calls on the BinkP port, 24554.
- Direct netmail. Import a nodelist and netmail goes straight to any node that lists a BinkP host. Everything else goes through your hub.
For callers
An echo is read like any other message board, and netmail is written like any other letter.
- Names with addresses. Authors from the network show as
Joe Bloggs (21:3/110), and Reply works as usual. - Netmail from Mail. Write
Name (zone:net/node)on the To line. The compose screen says that netmail is not private. - The SysOp decides who sends. Netmail leaves under the node's address, so only the SysOp can send it until the SysOp lowers its level.
So far NetBBS has exchanged FTN mail only with itself and with test fixtures. Its first session with a live hub is still to come, so treat your first connection to a real network as a test. File echoes (TIC), file requests, hub mode and QWK are not supported. The SysOp handbook has the setup steps.
Give callers a reason to return.
Build a space-trading career in Voidrunner, lead a crew through War Dialer's fictional BBS network, or play a quick round of Retro Trivia. All three ship with NetBBS and can be registered from the SysOp's game gallery.
Voidrunner — your space-trading career
A persistent deep-space trading career: routes, contracts, cargo, faction standing, and a ship that takes damage and has to be repaired. Every screen now reads as an instrument panel.
- Gauges on one scale. Hull, fuel and hold share a twenty-cell bar beside the ship's own silhouette, so one glance says what is wrong.
- The market is a table. Seven columns where there were seven sentences, and a sparkline putting the quote in front of you against that commodity's price in all five economy types.
- Alerts carry the key that answers them. A critical hull is red with
[Y] repair; contraband aboard is amber with[D] jettison. - Motion you can switch off. Screens reveal as you arrive at them and hull bars drain when a shot lands — and a new Full palette, no motion preset turns every bit of it off.
War Dialer — a phosphor terminal
Run a crew across a ten-exchange network: case a target, pick an approach, take it before a rival does, and keep your Heat under the level that gets you busted.
- The ring is the map. Ten exchanges drawn with their connections and colored by who holds them, with consistent colors across the map and reports.
- Every gauge means something. Cash, Heat, crew, turns and holdings across the top, over a rank ladder with your own rung lit.
- A number is an exchange, not a row. Press a digit for its own card: owner, defence, your odds as a bar, the capture price and its neighbour discount.
- Keep your progress. Shared-world actions are saved as you play, and any key skips the result animation.
The bundled games need no separate runtime. For classic DOS doors, install your game and a compatible DOSBox-X build, plus a FOSSIL driver where the game requires one. A door built for another operating system can run in a small virtual machine per caller on a POSIX host. The door setup guide has the build patches, the tested matrix and the checks to run.
Independent communities, connected.
Independent nodes find each other and share message boards, chat channels, mail, and file catalogues. You choose what your node carries and who it trusts. NetBBS Link is a separate setup choice; project-operated reliable nodes help with discovery and relay. Federation remains private and experimental while real-world validation continues. A standalone node is a complete BBS.
- Signed node identity. Every peer is a cryptographic keypair, not a hostname you have to trust blindly.
- Trust that's earned, not assumed. Reputation and vouching decide how much a linked node's content is worth to you — and every decision is visible and overridable by a SysOp.
- Trust that runs on its own. New nodes and callers can graduate from probation without a SysOp once they have been in contact on three separate days, a node seen signing two conflicting histories is reported with a signed accusation others can check, and a key compromise reaches even nodes that know its owner only by introduction.
- Real-time, across nodes. Live chat channels stay live over NetBBS Link in both directions, not just asynchronous mail and post sync.
- Reachable behind NAT. Automatic relay selection means even an outgoing-only node can still be found, live traffic can tunnel through an HTTP proxy, and verified ages and names reach it sealed for that node alone.
Real screens, from a real node.
A caller's session, end to end: signing on, talking, reading, downloading, and finding a game. Every terminal below is an unedited capture from an actual NetBBS session over Telnet — same ANSI, same colors, same content a caller would really see. The screens a SysOp works in are on the overview, and four tour pages go through message boards, file areas, doors and the MRC bridge screen by screen.
╔════════════╦═══════════════ N E T B B S ════════════════╦════════════╗ ║ /\ ║ CATHEDRAL OF SIGNALS ║ /\ ║ ║ /\ / \ ║ every caller lights a pane ║ / \ /\ ║ ╠════╬════╬══╩════════════════════════════════════════════╩══╬════╬════╣ ║ ║ ║ · · · ║ ║ ║ ║ ║ ║ ┌───────┐ ┌───────┐ ║ ║ ║ ║ ║ ║ ┌──┤ ♦ ├─┤ ♦ ├──┐ ║ ║ ║ ║ ║ ║ ┌─┤ └───┬───┘ └───┬───┘ ├─┐ ║ ║ ║ ║ ║ ║ │ ♦ ┌───┴─── * ───┴───┐ ♦ │ ║ ║ ║ ║ ║ ║ └─┤ │ PACKET ROSE │ ├─┘ ║ ║ ║ ║ ║ ║ └──┤ ♦ ♦ ♦ ♦ ♦ ├──┘ ║ ║ ║ ║ ║ ║ └────────┬────────┘ ║ ║ ║ ╠════╩════╩════════════════════════╧═════════════════════════╩════╩════╣ ║ BOARDS ♦ LIVE CHAT ♦ FILE VAULT ♦ MAIL ♦ LINK ║ ║ THE GATE IS OPEN · THE MESH IS LISTENING ║ ╚══════════════════════════════════════════════════════════════════════╝ Sign in New here? Type 'new' to create an account. ────────────────────────────────────────── Username:
Harbor Lights › Chat › #lobby release day: 7.14.0 ───────────────────────────── [HISTORY] Recent channel activity [19:58] *** wren has joined the channel. [19:58] <wren> evening -- did the 7.14.0 wheel land yet? [20:01] *** otto has joined the channel. [20:01] <keeper> it did. you can reply to link mail now [20:02] <otto> just pulled it. syncterm draws the boxes right at last [20:03] <wren> read receipts are the one I wanted [20:03] <keeper> those are on for everybody, so it is in the notes [20:04] • otto reads the notes properly this time [20:06] <wren> anyone else on the link tonight? quiet over here [20:06] <keeper> two peers up. sync window moved to 04:00 last week 10 recent events retained ────────────────────────────────────────────────────────────────────────────── ● LIVE Joined #lobby. Type [/quit] to leave. ──────────────────────────────────────────────────────────────────────────────── #lobby[PUBLIC] | 1 online (0 away) | "release day: 7.14.0" | keeper[sysop] ›
Harbor Lights › Message boards › Announcements Newest posts ────────────────────────────────────────────── Node news and release notes # Subject Author Posted ────────────────────────────────────────────────────────────────────────────── 01 NetBBS 7.14.0 is up keeper 02.09.2026 19:41 02 Masthead preset pack wren 04.09.2026 08:16 03 Re: NetBBS 7.14.0 is up otto 07.09.2026 21:03 04 Link sync window moved to 04:00 keeper 09.09.2026 17:28 ────────────────────────────────────────────────────────────────────────────── [01-04]/Enter read [P]ost [F]ollow: off [B]ack (Up/Down to move, Ctrl-H for help) Choice:
Harbor Lights › Files › Utilities 4 files on this page ───────────────────────────────── # Filename Size Date Uploader ──── ────────────────────────────────────────────── ───────── ──────────────── ──────── >[01] backup-rotate.sh 132 B 02.09.2026 19:41 otto Nightly backup rotation, seven days retained. [02] netbbs-7.14.0.tar.gz 3.8 MiB 04.09.2026 08:16 keeper The current release, source distribution. [03] ansi-preset-pack.zip 46.9 KiB 07.09.2026 21:03 wren Twelve masthead presets, 80 and 132 columns. [04] welcome.txt 48 B 09.09.2026 17:28 keeper [B]ack Return to the previous menu [01-04] — receive via Zmodem [U]pload Send a file via Zmodem [D]ownload [F]ollow: off Receive this file via Zmodem List this area first in New scan Choice:
Harbor Lights › Directory › keeper Member profile ────────────────────────────────── Member since: 04.11.2025 18:22 Bio Runs this node from a NetBSD box in Kiel. Wrote most of what you are looking at. Around most evenings; leave a message on Announcements and I will see it. [B]ack Return to the directory Choice:
Harbor Lights › Who's online page 1/1, 2 total ──────────────────────────── 01. wren - connected since 09.10.2026 10:04 02. otto - connected since 09.10.2026 10:04 [/] Find [B]ack Find by name Return without picking or type a number to select; Ctrl-L: redraw, Ctrl-R: refresh, Ctrl-H: help Choice:
Harbor Lights › Available doors page 1/1, 7 total ─────────────────────────────── 01. Barren Realms Elite [remote: DoorParty] - Operator-run tunnel. 02. BBSLink [remote: BBSLink] - Dozens of classic doors from one service. 03. Global War - DOS 2.7, turn-based conquest. 04. Legend of the Red Dragon - DOS 4.07, via DOSBox-X and BNU. 05. Retro Trivia - Native bundled quiz door. 06. TradeWars 2002 - DOS 3.09, persistent galaxy. 07. Voidrunner - Native bundled space game. [/] Find [B]ack Find by name Return without picking or type a number to select; Ctrl-L: redraw, Ctrl-H: help Choice:
╭─ ◤ VOIDRUNNER · Command Deck: 1,850cr ───────────────────────────────── 1/1 ╮ │ KESTREL TERMINAL Industrial · Outer Fringe CALM 0 │ │ Day 1 Rank Rookie Hauler ◈ 1,850cr │ ├─ SHIP ──────────────────────────────────────────────────────────────────────┤ │ HULL ████████████░░░░░░░░ 36/60 Scuffed /\ │ │ FUEL ██████████████████░░ 21/24 Shuttle <x==[__]=== > │ │ HOLD ░░░░░░░░░░░░░░░░░░░░ 0/24 0 lots /__\ │ ├─ STATION SERVICES ──────────────────────────────────────────────────────────┤ │ [M] Market: 7 goods [Y] Yard repair/refit [B] Board: 3 offers │ │ [C] Chart: 4 links [S] Status [H] Hall of Fame │ │ [G] Guide [N] Archive [T] Ledger │ │ [V] Viewport [O] Display [Q] Disembark │ │ [P] Concord [W] Blackwake │ ╰─────────────────────────────────────────────────────────────────────────────╯ [X] Expand [Q] Exit:
┌─ ▚ SWITCHBOARD ──────────────────────────────────────────────── page 1/2 ─┐ │ Thiesi ⟦[::]⟧ ⟦WANNABE⟧ season 2 · 27d 23h 30m left │ │ rank 100 ░░░░░░░░░░░░░░░░░░░░ next Script Kiddie │ ├───────────────────────────────────────────────────────────────────────────┤ │ CASH $176 HEAT ███░░░░░░░░░░░░░░░░░ 17 │ │ CREW ●○○ 1 free 2 posted │ │ TURNS ▮▮▮▮▮▮▮▮▮▮▮▮▮▯▯ 13/15 refill 23h 30m │ │ HOLD ●●○○○○○○○○ 2/10 income $5/hr │ │ SHIELD newcomer 1d 23h 30m NEW 0 │ │ OPS none KIT untrained / empty │ ├─ THE SCENE ───────────────────────────────────────────────────────────────┤ │ ◆ 1══◇ 2══◈ 3══◆ 4══◉ 5 ◆ yours 2 ◈ rival 1 ◉ NPC 3 ◇ free 4 │ │ ║ ║ │ │ ◇10══◇ 9══◇ 8══◉ 7══◉ 6 │ ├─ FEED ────────────────────────────────────────────────────────────────────┤ │ ● 22:58 Rooted 212-555 Uptown Exchange; +$2/hour and +50 Rank. │ │ ● 22:58 Kilobaud raided you and got away with $340! All-attacker raid │ │ shield: 24 hours. │ │ ● 22:58 Crackdown closed season 1. Final Rank 0; place 3/3; no medal. │ │ Fresh season 2: competitive resources reset. Back on the │ └───────────────────────────────────────────────────────────────────────────┘ [T] Trade [C] Crew [J] Job [R] Raid [X] Root [G] Gar [S] Kit [O] Ops [B] Rank [E] Map [V] Rival [H] Log [I] Scene [?] Help [Q] Quit [N] Next [P] Prev dial ›
Screen by screen.
Each of these pages follows one part of NetBBS from the caller’s first keypress to the SysOp console behind it, in real captures like the ones above.
Message boards
Reading, replying and searching, and the moderation and NetBBS Link carriage behind them.
See the screens →File areas
Browsing, descriptions, uploads and downloads, and how a SysOp keeps file areas tidy.
See the screens →Doors
The bundled games, DOS classics under DOSBox-X, remote door services, and how each one is set up.
See the screens →The MRC bridge
Chat channels joined to the Multi Relay Chat network, from the caller’s side and the SysOp console.
See the screens →The essentials of a community BBS.
Conversations, files, games, and practical controls for the people who run them.
Message boards & file areas
Message boards with a post list and a reader, full-text search, browser file transfers, and Zmodem for compatible terminal clients.
Real-time chat
Chat channels with scrollback, private messages, moderation, and live presence.
Inter-BBS chat
Bridge chat channels onto the MRC network, or let callers open any room on it as a chat channel.
FidoNet & fsxNet
Echomail on your message boards and netmail in Mail, over BinkP that NetBBS speaks itself, with a nodelist for direct netmail.
Personal mail
Mail with drafts, replies, forwarding, several recipients, read receipts and blocking — local, or across NetBBS Link with delivery you can see.
Communities
Group related message boards, chat channels, and file areas under one topic-first roof.
Trust & moderation
Mute/ban/kick, approval queues, permission grants, and identity attestation.
Make it yours
Your own ANSI art as the welcome banner, or as the main menu and message board, file area and chat channel lists themselves, playing at a modem's speed if you like; art from scene tools shows as drawn; and node-wide branding colors.
SysOp tooling
User, message board and file area management, a Levels screen that shows what each access level opens, automatic promotion under rules you set, staff permissions for helpers who are not SysOps, scheduled backups, installing a new release, the node log, an audit log, and graceful shutdown.
Built to run modestly
NetBSD-first and pkgsrc-friendly, comfortable on hardware you already own.
Doors & games
Three bundled games, plus profiles for trusted native, DOSBox-X, remote services such as DoorParty and BBSLink, and per-caller virtual-machine doors.
Start with a local look around.
This is a trial on your own machine: only you can connect to it. A node that callers can reach is a permanent installation with its own service account, which the SysOp handbook walks through. The trial database can simply be deleted afterwards.
You need Python 3.11 or newer: python3 --version tells you which you have. On Debian and Ubuntu, also run sudo apt install python3-venv first. Download the .whl file (the “wheel”, a ready-to-install package) from GitHub Releases into a fresh directory. In the commands below, replace VERSION with the version number from the file you downloaded: for netbbs-7.18.6-py3-none-any.whl that is 7.18.6. The newest release is always at the top of the Releases page.
# install the downloaded release in a private environment (.venv) # [ssh,web] adds SSH callers, browser callers and NetBBS Link: keep it python3 -m venv .venv && . .venv/bin/activate python -m pip install "./netbbs-VERSION-py3-none-any.whl[ssh,web]" # create yourself as SysOp; setup then opens the SysOp console: [B]ack leaves it python -m netbbs.admin --db netbbs.db python -m netbbs --db netbbs.db --ssh-host 127.0.0.1 --disable-link
Setup asks for your username and a password or key, then two questions: whether to join NetBBS Link, the network of other nodes, and whether to take a free yourname.netbbs.org address. Answer no to both for this trial; both default to yes, so read before pressing Enter. --disable-link keeps the trial off NetBBS Link even if you said yes by accident. You can say yes on your permanent node. Once the node is running, from another terminal, run ssh -p 2222 yourname@localhost using the account you created. On NetBSD, install the SSH build prerequisites from the handbook first. For source development, see the developer handbook.
Your community. Your node. Your rules.
Run on a modest server, choose your access rules, and make a place your callers want to spend time.