The hub must run as the same user as Synchronet, because it makes users with Synchronet's jsexec. These steps assume that user is sbbs and Synchronet is in /sbbs. First prepare the door BBS.
Unzip doorhub-0.1.0-linux-x64.zip (or -linux-arm64) and:
sudo mkdir /opt/doorhub sudo cp doorhub /opt/doorhub/ sudo chown -R sbbs: /opt/doorhub sudo chmod 700 /opt/doorhub sudo ln -s /opt/doorhub/doorhub /usr/local/bin/doorhub sudo -u sbbs doorhub init
init makes /opt/doorhub/hub.json and the host key, and prints the key's fingerprint:
Created /opt/doorhub/hub.json Host key: SHA256:dJxkWMLh0S5bYYye72Yp0GsnfuJ0PZWjTMkXCcb9YGg Next: doorhub set public_host <name>, add doors and BBSes, then doorhub serve
Give that fingerprint to member sysops so they can check it the first time their connector connects.
If Synchronet isn't in /sbbs:
sudo -u sbbs doorhub set jsexec /path/to/sbbs/exec/jsexec sudo -u sbbs doorhub set sbbs_ctrl /path/to/sbbs/ctrl
Name the hub and set the address members will use:
sudo -u sbbs doorhub set hub_name "Example Door Hub" sudo -u sbbs doorhub set public_host hub.example.com
Add games (Games) and members (Member BBSes). All settings are on the Settings page.
Try it in the foreground (Ctrl+C stops it):
sudo -u sbbs doorhub serve
2026/11/09 11:30:36 Example Door Hub 0.1.0 listening on :2022 (key SHA256:dJxkWMLh0S5b...)
The package has doorhub.service. Edit User and Group (and the paths, if you used another folder):
[Unit] Description=Door Hub (shared door games server) After=network.target sbbs.service [Service] Type=simple User=sbbs Group=sbbs Environment=DOORHUB_DIR=/opt/doorhub WorkingDirectory=/opt/doorhub ExecStart=/opt/doorhub/doorhub serve Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
sudo cp doorhub.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now doorhub systemctl status doorhub journalctl -u doorhub -f # the log
To keep a log file as well, add these two lines under [Service]:
StandardOutput=append:/opt/doorhub/doorhub.log StandardError=append:/opt/doorhub/doorhub.log
The admin commands work while the hub is running, and changes apply at once (except listen). Run them as the hub's user so files keep the right owner:
sudo -u sbbs doorhub bbs list sudo -u sbbs doorhub door list
The folder is /opt/doorhub unless you add -d folder or set the DOORHUB_DIR environment variable.
sudo cp doorhub /opt/doorhub/doorhub.new sudo mv /opt/doorhub/doorhub.new /opt/doorhub/doorhub sudo systemctl restart doorhub
A restart ends games in progress, so pick a quiet time. Connectors reconnect by themselves.
If the machine runs a firewall, allow the hub's port. For ufw: sudo ufw allow 2022/tcp. See Internet and security for the router side.