Table of Contents
Running a hub
This page is for sysops who want to host games for other BBSes. A hub is the doorhub program plus a Synchronet BBS on the same machine where the games run (the door BBS).
How a hub works
member BBS --RLogin--> connector ==SSH tunnel==> hub --RLogin--> door BBS (caller) (member's machine) (doorhub) (your Synchronet)
- Each member BBS has a hub account: an SSH user name and password, and a system tag. The hub accepts only RLogin tunnels on these accounts. There is no shell, no file access and no other forwarding.
- The member BBS sends the caller's password,
[TAG]Nameand a game code. The hub checks that the tag belongs to the account that logged in. - The hub keeps its own list of players. The first time it sees
[TAG]Nameit makes a user on your Synchronet calledName (TAG), with a random password only the hub knows. - It logs that user in to your Synchronet by RLogin with the terminal type
xtrn=CODE. Synchronet'slogon.jsruns that door straight away and hangs up when it ends, so the player never sees your BBS's menus. - After a game the player goes back to their BBS, or back to the hub menu if they came through it.
All the hub's data is in one folder:
| File | What it holds |
|---|---|
hub.json | settings, member BBSes, games |
players.json | players: names, door BBS users and passwords, play counts |
host_ed25519 | the hub's SSH host key. Back it up. |
mkuser.js | written by the hub each time it starts; makes users with jsexec |
doorhub.log | the log, when the hub runs as a Windows service |
What you need
- Linux (x64 or arm64) or Windows (64-bit) with a Synchronet BBS on the same machine. Door Hub was built and tested with Synchronet 3.22; any recent version with
rlogin_auto_xtrninlogon.jsworks. This can be your main BBS or a separate one just for the hub. - The doors you want to share, installed and working on that BBS.
- For members outside your network: a fixed internet address or a DNS name, and one TCP port forwarded to the hub (2022 by default). See Internet and security.
- Permission to share each door. Your own doors and free software are fine. Check the licence of commercial doors: some registrations cover one BBS only.
Prepare the door BBS
1. Turn on RLogin. In ctrl/sbbs.ini, section [BBS], make sure Options includes ALLOW_RLOGIN and RLoginPort is set:
[BBS] RLoginPort = 513 Options = XTRN_MINIMIZED | ALLOW_RLOGIN | ALLOW_SSH
The hub connects from the same machine (127.0.0.1). Port 513 does not need to be open to the internet.
2. Turn on direct-to-door logins. In ctrl/modopts.ini, section [logon]:
[logon] rlogin_auto_xtrn = true
3. Check each door you want to share. It needs an Internal Code (SCFG, External Programs, Online Programs) and must be usable by a new user:
- The section's and the program's Access Requirements must allow a new user. Blank,
ANSIorNOT GUESTare fine;SYSOPis not. - Hub players are made with your BBS's normal new-user settings (security level, flags, time per day). If you limit new users, hub players are limited the same way.
- It doesn't matter which section a door is in: the hub starts it by its Internal Code. You can put the shared doors in their own section.
- Multi-node doors need Multiple Concurrent Users set, as for any busy BBS.
4. Restart Synchronet (or let it recycle) after changing sbbs.ini or modopts.ini.
Your BBS's new-user questions don't affect hub players: the hub makes them with jsexec, not through the new-user form.
Install the hub
Then add games and member BBSes, and open it to the internet (Internet and security).
Try it yourself first
Before you invite anyone, add your own BBS as a member: doorhub bbs add a tag for it, run a connector on the same machine using the ini it prints (with ssh_host = 127.0.0.1), add a ?doorhub.js door with Access Requirements SYSOP, and play each game through the hub. That's how the Kalgoorlie Door Hub was tested.
