====== Hub on Linux ======
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 [[doorhub:running_a_hub#prepare_the_door_bbs|prepare the door BBS]].
===== Install =====
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 , add doors and BBSes, then doorhub serve
Give that fingerprint to member sysops so they can check it the first time their connector connects.
===== Configure =====
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 ([[doorhub:games|Games]]) and members ([[doorhub:member_bbses|Member BBSes]]). All settings are on the [[doorhub:settings|Settings]] page.
===== Run =====
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...)
==== As a service ====
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
===== Day to day =====
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.
===== Updating =====
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.
===== Firewall =====
If the machine runs a firewall, allow the hub's port. For ufw: ''sudo ufw allow 2022/tcp''. See [[doorhub:internet_and_security|Internet and security]] for the router side.