ANetBBS - A-Net Online's BBS Software
Translation pending
SocialPython · JavaScriptGitHub @anetonlineOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Status: stable (v1.1.67, November 2026)
A modern multi-node BBS for the classic FidoNet world. Web, telnet, SSH,
rlogin, FTP, and PETSCII (C64/128) front-ends; FidoNet binkp + DOVE-Net
QWK echomail; inter-BBS instant messaging via MSP (RFC 1312); a built-in
collaborative wiki and RSS reader; door-game support including stock
Synchronet .js doors (LORD ships pre-installed and plays out of the box).
All four paths land on the same BBS; pick whichever fits your box.
| Your setup | Use |
|---|---|
Linux, and sudo is fine | Quick install (Linux) below — the full install.sh wizard |
| Linux, but no root/sudo access | docs/01b-no-root-install.md — everything (web, telnet, SSH) using only your own account |
| Docker (any OS) | Quick install (Docker) below |
| Windows | docs/INSTALL-WINDOWS.md — WSL2 or Docker Desktop, both confirmed working |
You'll want a domain pointed at this box if you want the web admin and
public web pages working with HTTPS — modern browsers refuse plain-HTTP
logins, so the wizard's production mode pulls a Let's Encrypt cert.
Telnet, SSH, rlogin, BinkP, MRC, and MSP work fine without a domain;
pick test mode at the prompt if you're behind NAT or just kicking
the tires (web admin runs on http://localhost:8080).
tar xzf ANetBBS-v1.1.67.tar.gz
cd ANetBBS-v1.1.67
sudo bash install.sh
The wizard asks for BBS name, sysop, ports, services, and SSL/nginx
preferences, then sets up the venv, systemd units, ufw rules, and (if
enabled) a Let's Encrypt cert. A random admin password is generated and
written to data/admin_password.txt — log in to the web admin and
change it on first use.
For details on individual services and post-install configuration see
docs/INSTALL.md.
To upgrade an existing install in place, download the new release tarball
and run update.sh from inside it (backs up .env/database/systemd units
first, then syncs files and restarts services):
tar xzf ANetBBS-v1.1.67.tar.gz
cd ANetBBS-v1.1.67
sudo bash update.sh
install.sh itself also takes a few flags:
sudo bash install.sh --uninstall # Stops/disables services, then (after one
# y/N confirmation) deletes the ENTIRE
# install directory -- including data/ (DB,
# uploads, echomail) -- with no separate
# prompt or backup for that. Back up
# data/ first if you want to keep it.
sudo bash install.sh --defaults # Non-interactive install, all defaults
sudo bash install.sh --force # Re-run install, overwriting an existing
# .env and database (normally preserved)
Prefer containers? Two options — a single-container quick start, or a
proper multi-container docker-compose deployment (recommended for
anything beyond kicking the tires). Pre-built multi-arch images
(amd64 + arm64, works on a Raspberry Pi) are published to GHCR on
every release — no local build needed:
cp .env.docker.example .env # fill in SECRET_KEY, BBS_NAME, etc.
cp docker/compose/mrc-bridge-config.json.example mrc-bridge-config.json
docker compose -f docker/compose/docker-compose.yml up -d
.env already points at ghcr.io/anetonline/anetbbs:latest by
default — pin a specific version instead with ANETBBS_IMAGE_TAG=v1.1.67
(or whatever release you want). Testing a local change instead of a
published image? docker build -f docker/Dockerfile -t anetbbs:local .,
then set ANETBBS_IMAGE=anetbbs / ANETBBS_IMAGE_TAG=local in .env.
New to Docker? docs/22-containers.md has a
full hand-held walkthrough (including the single-container option,
what each command actually does, and troubleshooting).
1200:1/1) or QWK/FTP (hub ID:
ANET). Hub: bbs.a-net.fyi. Apply for a node number.
Public nodelist at /admin/echomail/hub/nodelist.sbbsimsg.lst directory mirrored daily and a SYSTAT
(UDP/11) Active-User responder.mps) and Mystic Python (.mpy) doors.js doors — runs via real jsexec when found at
$SBBSEXEC/jsexec or /sbbs/exec/jsexec; otherwise falls back to a
Node.js + compatibility shim that the alpha 2 work expanded enough to
fully run LORD (Legend of the Red Dragon — Synchronet's JS port,
pre-installed, no Synchronet required)door_rlogin) — connects out to a remote
BBS's own door server (Synchronet xtrn, DoorParty, etc.) instead of
running a local subprocess. A-Net Online's game server ships
pre-installed and active by default, same as LORD./wiki/ with markdown bodies, [[Page]]
cross-links, per-page revision history, unified-diff compare,
revert, full-text search, recent changes, wanted/orphan pages/rss/ (river or per-feed), terminal main-menu Rx-bit.org) seeded by defaultusers / sysop / none upload permissionsFILE_ID.DIZ, README.md/README.txt,
DESCRIPT.ION inside zip / tar.{gz,bz2,xz} / 7z / rar / lha archives/gallery/ — paginated thumbnail grid, full-screen
modal viewer, lazy-loaded thumbnails. Browser-native rendering for
full image quality (no terminal-art middleman)./admin/galleries/ — add / remove / edit collections
(label, slug, filesystem path, sort order, active flag) and per-gallery
file management with drag-and-drop multi-file upload, individual file
delete, pagination.gallery-config.json at the BBS
install root (auto-seeded on first run). Files live wherever you point
the path; the same path can be served by any other tool too.$INSTALL_DIR/anet-gallery.sh (default
/opt/anetbbs/anet-gallery.sh) — bash script
using chafa (Unicode blocks, works in any terminal) or img2sixel
(sixel-capable terminals like SyncTERM, foot, mlterm). Standalone —
not wired into the games menu./mrc/ (browser tab)/identify /msg /me /join /list /who /chatters /motd /banners /topic /lastseen /afk /back /status /roomconfig /termsize /trust /broadcast /raw …).
Tab-completes usernames seen in chat or via /who. ←/→ arrow keys
for outgoing text color, masked password input on bare /identify,
@mention highlighting with bell, 140-char outgoing cap with
word-boundary auto-split, HH:MM timestamps on every line, ANSI-aware
word-wrap with continuation indentFileArea as a top-level
directory. Anonymous read access to public areas; authenticated users
upload subject to per-area upload_permission. Optional FTPS via the
same Let's Encrypt cert nginx uses. Earns the FTN nodelist IFC flag.*** You have new: 3 PMs, 1 InterBBS IM). Synchronet @CODE@ and Mystic |XX
display codes in welcome / goodbye / menu ANSI screens./admin/petscii-menus/. See docs/25-petscii.md./watch, off by default) — a public, no-login
page showing real-time who's-online activity, styled as a retro
terminal display, meant to be shared or embedded off-site. See
docs/29-watch-live.md./postcards) — any logged-in user composes retro
CP437 art with the same grid editor as the admin ANSI Editor, then
gets a public share link and a downloadable PNG for sharing off
platform. See docs/30-postcards.md.anetbbs/features/achievements.py/admin/pulse/, installable to a phone's home screen (Android +
iOS). Live callers, service health, disk/uptime, 24-hour activity —
no service-control actions, no shell, nothing writable./admin/social/, off by default) —
a new #1 leaderboard score or a round-number BBS milestone queues a
draft Bluesky/Mastodon post (rendered image + editable caption) for
a sysop to review, plus a manual compose option for anything else
(a version bump, a new feature); nothing posts automatically, and
queuing a draft notifies every admin. See
docs/31-social-posting.md.+TAG/-TAG AreaFix-to-hub formwho's online queriesanetbbs-cfg — standalone full-screen terminal admin tool (SCFG /
mystic -cfg style), run directly on the server console, near-full
parity with the web admin: boards & message areas, echomail networks/
areas/hub (AreaFix log, poll log, QWK node requests), file areas &
bulletins, users & security (access levels, password reset, IP bans,
word filters, login auto-ban, registration log), games (door games,
categories, active sessions), image galleries, BBS/PETSCII menu
editors, scheduled events, graffiti wall moderation, login modules,
last-callers log, backup browsing, translations, and .env system
settings — no browser required. python -m anetbbs.cfg from a
checkout, or
anetbbs-cfg once installed.anetbbs-monitor — a console-only sysop dashboard (uMonitor /
nodespy style): a live, auto-refreshing node list (who's connected,
on what protocol, from where, doing what, with a kick action), a
Today/Total activity stats panel, a scrollable bbs.log viewer,
one-key access to anetbbs-cfg, a light/dark theme toggle, and
mouse support — no browser required. python -m anetbbs.monitor.app
from a checkout, or anetbbs-monitor once installed.docs/00-overview.md — architecture + table of contentsdocs/INSTALL.md — full installdocs/INSTALL-PI.md — Raspberry Pi install guide (hardware, DDNS, SSD, troubleshooting)docs/INSTALL-WINDOWS.md — Windows install guide (WSL2, Docker Desktop)docs/PORTS.md — every port the BBS usesdocs/SECURITY.md — security defaults + production hardeningdocs/CHANGELOG.md — version historydocs/MSP_LOOPBACK_TEST.md — verify MSP worksdocs/06-echomail.md — echomail configdocs/07-file-areas.md — file area configdocs/13-image-galleries.md — image galleriesdocs/25-petscii.md — PETSCII (C64/128) terminal supportSee LICENSE. ANetBBS bundles some third-party components (fonts, a Synchronet JS compatibility layer used to run Synchronet door games, and the LORD door game) under their own separate terms — see NOTICE for the full breakdown.
Known rough edges:
docs/INSTALL.md for setcap / systemd /
iptables-redirect options..js doors: LORD is verified end-to-end under the
Node shim. Other Synchronet doors mostly work but each one tends to
exercise a different corner of the API — file an issue if a door
dies with a ReferenceError and the missing stub will get added.Issues and patches welcome. Chat/discussion: IRC at irc.a-net.online
(port 6667 plain, 6697 SSL), room #ANetBBS.
docs/26-synchronet-json-rpc-doors.md — 17 confirmed-working Synchronet door games (download/setup)docs/28-anetbbs-cfg.md — anetbbs-cfg, the SSH/console terminal config tooldocs/32-node-monitor.md — anetbbs-monitor, the console-only sysop dashboard (nodes, stats, logs, theme)docs/34-jam-export.md — JAM message base export for classic door gamesdocs/35-mods-directory.md — customizing art/scripts/login logic so changes survive updatesdocs/36-ansi-editor.md — web ANSI editor's file browser, extra export formats, TheDraw font picker