1 / 10
What is ANetBBS?
A modern bulletin-board system that talks both new and old:
- Web — Flask + WebSockets, mobile-friendly, themed
- Telnet / SSH / rlogin — for the classic experience
- FidoNet echomail — BinkP + QWK over real networks
- Door games — DOS, Synchronet JS, Mystic Pascal Script,
generic
exec for anything else
- Multinode chat, IRC bridge, MRC bridge
- Personal web pages per user
One SQLite DB. One config file. Five systemd services. Done.
2 / 10
What you need before installing
- Linux server (Ubuntu 22.04+ or Debian 12+ recommended)
- Python 3.10+
- ~500 MB of disk for the app + venv
- Open ports for the protocols you want exposed:
- 5000 (web — usually proxied behind nginx on 80/443)
- 2233 (telnet)
- 2234 (SSH)
- 513 (rlogin — optional)
- A domain (optional, makes share links nicer)
- An evening (you'll be done in under an hour)
3 / 10
Decisions to make ahead of time
The install wizard will ask you. Have answers ready:
- What's your BBS name?
- What's your sysop handle?
- What's your domain (or leave blank for IP)?
- Which protocols (telnet/SSH/rlogin) do you want enabled?
- How many concurrent terminal nodes (1–100)?
- Do you want FidoNet echomail?
- What admin password will you use?
(Make it good — >12 random chars.)
4 / 10
First install — three commands
tar xzf anetbbs-rebuilt-vNNN.tar.gz
cd anetbbs-rebuilt
sudo python3 -m anetbbs.installer.wizard
The wizard handles:
- Generating a strong
SECRET_KEY
- Writing
.env with your settings
- Creating
data/, logs/, etc.
- Building the Python venv and installing deps
- Initializing the SQLite database
- Creating + saving your sysop account
- Installing systemd unit files (auto-starts on reboot)
When it finishes:
sudo systemctl start anetbbs-web anetbbs-telnet anetbbs-ssh
Visit http://your_host:5000/.
5 / 10
nginx + HTTPS (recommended)
Don't expose Flask directly. Put nginx in front:
sudo cp deploy/anetbbs-nginx.conf.template \
/etc/nginx/sites-available/anetbbs.conf
sudo nano /etc/nginx/sites-available/anetbbs.conf
# Edit "server_name" to your real domain
sudo ln -s /etc/nginx/sites-available/anetbbs.conf \
/etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d bbs.example.com
The template handles:
- HTTPS via Let's Encrypt
- WebSocket upgrade for SocketIO + MRC bridge
auth_request gating MRC behind login
6 / 10
First login → launch checklist
Log in with your sysop account, then visit
/admin/checklist.
Green check = done, red X = needs your attention. You'll typically need:
- BBS name customized (you did this in the wizard)
- SECRET_KEY production-ready (wizard generated one)
- Default theme picked (Admin → Themes)
- At least one custom board (Admin → Boards → Add)
- At least one bulletin (Admin → Bulletins → Add)
- MOTD pool populated (Admin → MOTD)
- At least one file area (Admin → File Areas → Add)
Each item links straight to where you fix it.
7 / 10
The fun part — make it yours
- Welcome / goodbye / newuser ANSI — paste your
ANSI art at
/admin/bbs-menus/screens. Telnet
visitors see your art before login.
- Customize the main menu — every hotkey is
data-driven. Add an item, give it any shell command via the
exec action_type.
- One-click sub-menus — wizard at the bottom
of any menu's edit page.
- Add doors — Admin → Door Games. Native, DOS,
Synchronet JS, Mystic Pascal Script all supported.
8 / 10
Spam control
Five layers, all toggleable:
- Bot gate — telnet visitors press ESC or *
twice. Filters scanners. always on
- NUV — set
NUV_ENABLED=true. New
users wait for sysop approval.
- IP bans — Admin → IP Bans. CIDR + TTL.
- Word filter — Admin → Word Filter. Applied
to shouts, posts, PMs.
- File queue — set
FILE_MOD_QUEUE_ENABLED=true. Sysop approves
uploads.
9 / 10
Day-to-day operations
The Sysop Control Panel (/admin/control) is your
cockpit:
- Service status badges + Start / Stop / Restart buttons
- NodeSpy — see every terminal user's current
page + last action + idle time. Click for last-screen snapshot.
- Live who's-online (web + terminal) refreshing every 5s
- One-click journal viewer per service
Install the supplied sudoers rule so service control works
without password prompts:
sudo cp deploy/sudoers.anetbbs /etc/sudoers.d/anetbbs
sudo chmod 0440 /etc/sudoers.d/anetbbs
10 / 10
Upgrades are one command
sudo anetbbs-upgrade /tmp/anetbbs-rebuilt-vNNN.tar.gz
The wizard:
- Snapshots
data/, .env,
logs/ to a timestamped backup
- Stops services
- Rsync's the new code (preserves your data + config)
pip install -e picks up new modules
- Runs the schema migrator
- Restarts services
- Probes
/healthz — auto-rolls-back if it fails
That's it. Welcome aboard, sysop.
Once installed, every detail is in
/docs/ on your BBS.