====== 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]Name'' and 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]Name'' it makes a user on your Synchronet called ''Name (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's ''logon.js'' runs 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_xtrn'' in ''logon.js'' works. 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 [[doorhub:internet_and_security|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, ''ANSI'' or ''NOT GUEST'' are fine; ''SYSOP'' is 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 ===== * [[doorhub:hub_linux|Hub on Linux]] * [[doorhub:hub_windows|Hub on Windows]] Then add [[doorhub:games|games]] and [[doorhub:member_bbses|member BBSes]], and open it to the internet ([[doorhub:internet_and_security|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.