ANetBBS — Pre-Install Tutorial

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.