Sysop Guide
The long-form admin overview. Newer than the README, less prescriptive
than the Tutorial. Something broken? Check Troubleshooting
first — it collects the fixes for errors sysops actually hit in
production.
What runs
ANetBBS is a handful of services:
| Service | What it does |
|---|---|
anetbbs-web |
eventlet's native WSGI server (deploy/serve.py, socketio.run()), single process. Serves the web UI, REST, sockets. |
anetbbs |
asyncio listener on 2233/2234/513 — telnet, SSH, rlogin (one process, which protocols actually start is driven by .env flags) |
anetbbs-mrc-bridge |
persistent MRC connection |
anetbbs-finger |
RFC 1288 Finger daemon |
anetbbs-binkp |
FidoNet BinkP inbound listener |
systemctl status anetbbs-web anetbbs anetbbs-mrc-bridge anetbbs-finger anetbbs-binkp
shows the lot.
Daily
- Glance at the Sysop Control Panel for service health and
who's online. - Check the NodeSpy panel for any stuck sessions; kick if needed.
- Echomail polling runs on its own — a background poller thread
insideanetbbs-webpolls each network on its configured interval
(default every 60 min), no cron needed. Verify
/admin/echomail/logsfor errors. - Approve any files flagged by the virus scanner.
- If you run the network hub: peek at the hatch/hold queue under
Hub Management (see below) — a backlog there means outbound files
or messages aren't reaching peers. - Check the notification bell: it flags five things that need a
sysop's review — MSP federation join requests, QWK node
applications, users pending NUV approval, unknown/bad echomail
areas, and network join applications. Each admin can toggle these
independently at/notifications/settings(admin-only toggles).
Weekly
- Run Backup.
- Skim site activity — top users, new registrations, message
counts. - Read the latest fido news area, post a hello if you've been
quiet.
Monthly
- Rotate logs — there's no external
logrotateconfig; it's
built in as thelog_rotatescheduled event (any<install>/logs/*.log
over a size threshold, default 50MB, gets renamed to.1and a
fresh file starts). See Scheduled events below to check its
schedule or run it manually. - Review user registrations: ban obvious spam accounts.
- Update door binaries if their authors have patched.
- Check peers for dead links (
/admin/peers/health).
Hub Management
If this install is the designated network hub
(REGISTRY_MODE_ENABLED=true — see ANotherNetwork), an extra
admin surface appears at /admin/echomail/hub/:
- BinkP nodes and QWK nodes — add/edit/delete downstream
nodes, subscribe/unsubscribe them from areas, reset a QWK node's
high-water mark. - Hold queue — BinkP-only: outbound echomail queued per
downstream node, flushed on its next poll. Purely a delivery queue
(pending/sent status) — no moderation step involved. - Node requests — the approve/deny queue for BBSes applying for
a node number (terminal wizard or the peer-facing/qwkhub/apply
endpoint both land here). - Join Form (
/admin/echomail/hub/join/requests) — a SEPARATE
review queue from Node requests above, for the public self-service
/join/application form (see ANotherNetwork) — a prospective
member fills in their BBS name/location/software/telnet address, an
optional BinkP address (crash/hold) and/or QWK packet ID, notes, and
acknowledges the rules; no file upload or echo/file-echo picker is
part of the form. Each pending application has a full detail/View
page before you decide, with Approve/Deny/Archive actions right
there. Approving auto-creates the BinkP and/or QWK node record(s)
(BinkP node numbers auto-assign from the hub's own configured
zone:net) and emails credentials; a rules-file upload and other
config for the form itself live under Join Form too. - Generation & Distribution — generate the nodelist right now
(in addition to its weekly schedule), preview a QWK packet for a
node without marking anything as sent, and see TIC/file
distribution status.
A peer install (not the hub) doesn't see this section — it has
nothing of its own to manage there.
PETSCII custom menus
If PETSCII (C64/128) support is enabled, build custom PETSCII
menus at /admin/petscii-menus/ — a separate tree from the ANSI
custom-menu system, with a much smaller action set (boards, echomail,
PMs, files, who's-online, profile, Number Guessing, goto-another-menu,
logoff) since most ANSI actions have no PETSCII equivalent. No
default menu is required — without one, PETSCII sessions fall back
to the built-in Phase 1 menu unchanged.
Scheduled events
/admin/events/ lets a sysop automate routine maintenance instead
of doing it by hand, each on its own daily/hourly/weekly/interval
schedule (times are UTC). Ten built-in handlers ship: a noop test
handler, log rotation, a security-update check, SQLite VACUUM,
TradeWars 2002 daily maintenance, generating the ANotherNetwork
nodelist, an arbitrary shell command, and three InterBBS inbound-sync
handlers (Wall, Last Callers, Game Scores) that auto-appear when
those features are turned on. Worth a look if you're tired of
remembering to do the Monthly items above yourself. Full handler
table and worked examples: Scheduled Events.
On upgrade
- Take your own backup if you want extra safety beyond what
update.shsnapshots automatically (see Backup). sudo bash update.sh --install-dir /opt/anetbbs— this stops
services, backs up.env/the DB/systemd units, applies the new
code, migrates the schema, and restarts everything itself. No
manual stop/start needed.- Hard-refresh your browser to bust cached CSS.
- Watch
journalctl -u anetbbs-web -ffor a minute to catch
any column-add migration noise.
Where things live
- Install:
/opt/anetbbs/(this site) - Data:
/opt/anetbbs/data/(sqlite + uploads) - Logs:
/opt/anetbbs/logs/(rotated) - Doors:
/opt/anetbbs/doors/<name>/ - Echomail spool:
/opt/anetbbs/data/echomail/binkp/{inbound,outbound}/
Admin tools reference
Smaller admin pages that don't warrant their own wiki page, grouped by
what they manage. All are under Admin in the navbar.
Users & access
| Tool | Path | What it does |
|---|---|---|
| New User Questions | /admin/newuser-questions |
Custom sign-up questions shown right after registration; answers are stored per user. |
| Inactive Users | /admin/inactive-users?days=N |
Accounts with no login in N days (default 90) — mass PM, deactivate, or delete. |
| Registration Attempts | /admin/registration-attempts |
Paginated log of every signup attempt, success and failure. |
| Chat Bans | /admin/chat-bans |
Mute a user from MRC chat — one room or all, optional expiry. Expired bans auto-clear the next time you open the page. |
| Time Budgets | /admin/time-budgets |
Per-user daily time-online allowance / time-bank balance. |
Messages
| Tool | Path | What it does |
|---|---|---|
| Default Echo Subs | /admin/default-echos |
Toggles which echo areas are subscribed install-wide — a global default, not yet a per-new-user template. |
Network
| Tool | Path | What it does |
|---|---|---|
| IRC Server Presets | /admin/irc-presets |
The sysop-curated server list shown in the terminal IRC Client menu. |
System
| Tool | Path | What it does |
|---|---|---|
| Setup Wizard | /admin/setup-wizard |
First-run config — BBS name, sysop info, theme, seed MOTDs, default echoes. Idempotent, safe to re-run any time. |
| Preflight Checklist | /admin/preflight/ |
Green/red pre-launch readiness probes (disk space, DNS, firewall, email config, and more) with a one-line fix for anything that fails. Meant for right after install and again just before announcing the BBS publicly. |
| Security Updates | /admin/security/ |
Shows the daily 04:00 UTC OS-package security-patch report; "run scan now" runs it on demand instead of waiting. |
| Door Errors | /admin/door-errors/ |
Parses logs/door-errors.log (crash traces from the door wrapper) into a readable list; clear it once you've acknowledged the breakage. |
| Connection Test | /admin/connection-test |
Probes telnet/SSH/rlogin/web/finger/IRC/BinkP ports against any host (defaults to your own) — latency plus whatever banner comes back. Handy for "is my firewall actually open" from the sysop seat itself. |
| Activity Log | /admin/activity |
Paginated feed of user activity, filterable by type/user/IP. |
| Check for Updates | /admin/upgrades/ |
Compares your local version against the configured registry and offers one-click download + install — sha256-verified against the same API response before anything is extracted. |
| Logon/Logoff Modules | /admin/login-modules/ |
Attach an action — graffiti wall, an ANSI screen, a shell command, or a native/Python door — to run automatically at logon or logoff. |
| Pre-update Backups | /admin/backups/ |
Browse the snapshots update.sh takes before every upgrade (.env, both databases, systemd units, nginx config if present). Restore .env or the database from one, or delete old ones. Only the 3 most recent are kept. |