BSD-2-Clause · self-hosted · actively developed

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.

telnet harborlights.example.net 2323
┌──────────────────────────────────────────────────────────────────────────────┐
│        ▄▀ 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:
Getting in

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.

New in v7.17 · FidoNet

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.

For callers

An echo is read like any other message board, and netmail is written like any other letter.

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.

Bundled games

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.

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 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.

Not a mockup

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.

login — welcome banner
╔════════════╦═══════════════ 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: 
A branded first impression
One of the bundled gallery presets, rendered in real 24-bit truecolor.
chat — #lobby
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]      
› 
A live chat channel
Real scrollback, live presence, and a pinned status line — mid-conversation.
message boards — Announcements
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:
Message boards
A message board opens as a list of posts, one row each with subject, author and date; Enter opens a post in the reader.
files — Utilities
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:
File areas
Real uploaded entries, ready for Zmodem download.
directory — keeper
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:
Look somebody up
A caller’s profile, as another caller sees it — shown only if they opted in.
Who's online
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:
See who is around
Live presence, with away state, before you start a conversation.
doors — available doors
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:
The door menu
Native NetBBS doors, DOS classics under DOSBox-X, and remote services — one picker, no difference to the caller.
voidrunner — command deck
╭─ ◤ 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: 
A bundled door game
Voidrunner’s command deck — gauges, silhouette and a service grid, on a career with a fight behind it and a hull that shows it.
war dialer — switchboard
┌─ ▚ 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 ›
The other bundled door game
War Dialer’s switchboard — the ten-exchange ring with two exchanges taken, the gauges a single turn moves, and an owner’s color that means the same thing everywhere.
What's inside

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.

Get started

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.

shell
# 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.