Installing Synchronet BBS on Debian 11 ARM64
This is an updated guide based on the Debian 11 installation guide I wrote about a week ago. I wound up with a BeagleBone AI-64 after a project this month and decided to put it to hobby use.
This unit is way overkill for Synchronet, but I figured
Building Synchronet on Debian 11:
Pre-requisites:
This tutorial assumes you are running Debian 11 Bullseye Minimal (ARM64) – This guide most likely won’t work on your Raspberry Pi.
My Setup:
I am running a BeagleBone AI-64
One-step install (as root):
apt-get install -y wget sudo
wget -O - https://git.netex.consulting/cswilson/linux-unix-scripts/-/raw/main/Synchronet/debian-arm64-install-synchronet.sh | bash
Install Dependencies:
The first thing that needs to be done is all dependencies need to be installed in order to create a sane build environment.
Update your system:
apt-get -y update; apt-get -y dist-upgrade
Install pre-requisites:
$ apt-get -y install make build-essential sudo g++ linux-libc-dev libncurses5-dev git libnspr4-dev cvs libcap-dev libcap2-bin gdb zip unzip lrzsz gkermit build-essential pkg-config python libarchive-dev $ cd /usr/src $ wget http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-6_arm64.deb $ wget http://ftp.us.debian.org/debian/pool/main/libf/libffi/libffi-dev_3.2.1-6_arm64.deb $ wget http://ftp.us.debian.org/debian/pool/main/m/mozjs/libmozjs185-1.0_1.8.5-1.0.0+dfsg-6_arm64.deb $ wget http://ftp.us.debian.org/debian/pool/main/m/mozjs/libmozjs185-dev_1.8.5-1.0.0+dfsg-6_arm64.deb $ dpkg -i libffi6_3.2.1-6_arm64.deb $ dpkg -i libffi-dev_3.2.1-6_arm64.deb $ dpkg -i libmozjs185-1.0_1.8.5-1.0.0+dfsg-6_arm64.deb $ dpkg -i libmozjs185-dev_1.8.5-1.0.0+dfsg-6_arm64.deb $ sudo apt --fix-broken install
Download the Makefile and build Synchronet:
$ mkdir /sbbs $ cd /sbbs $ wget https://gitlab.synchro.net/main/sbbs/-/raw/master/install/GNUmakefile $ make install SYMLINK=1 JSINCLUDE=/usr/include/js JSLIB=mozjs185
Add BBS users and change file permissions:
$ useradd -m --home-dir /sbbs bbs
$ chown -R bbs.bbs /sbbs
Install terminfo:
$ wget https://gitlab.synchro.net/main/sbbs/-/raw/master/install/terminfo $ tic terminfo
set terminal type to “ansi-bbs” in /sbbs/ctrl/sbbs.ini (required for DOSEMU)
$ nano /sbbs/ctrl/sbbs.ini
1. hit CTRL+W and search for “ExternalTermANSI”
2. set it to ExternalTermANSI = ansi-bbs
Run setcap to bind to low services and edit sbbs.ini to run as user “bbs”:
this will allow synchronet to bind to ports under 1000 as a non-priviliged user:
if you installed using symlinks (above method): $ setcap 'cap_net_bind_service=+ep' /sbbs/src/sbbs3/gcc.linux.x64.exe.release/sbbs if you ran make without SYMLINK=1: $ setcap 'cap_net_bind_service=+ep' /sbbs/exec/sbbs
edit sbbs.ini:
$ nano /sbbs/ctrl/sbbs.ini
find the line:
[UNIX] ; User/group name to run as ;User = admin ;Group = wheel
Change it to:
[UNIX] ; User/group name to run as User=bbs Group=bbs
Add Startup script:
$ nano /lib/systemd/system/sbbs.service
paste the following contents:
[Unit] Description=Synchronet BBS service Documentation=man:sbbs After=syslog.target network.target [Service] Type=forking Environment=SBBSROOT=/sbbs SBBSCTRL=/sbbs/ctrl User=bbs Group=bbs PermissionsStartOnly=true ExecStartPre=/sbin/setcap 'cap_net_bind_service=+ep' /sbbs/src/sbbs3/gcc.linux.x64.exe.release/sbbs ExecStart=/sbbs/exec/sbbs -d ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure RestartSec=30 [Install] WantedBy=multi-user.target
Reload systemd:
systemctl daemon-reload
start synchronet:
systemctl enable sbbs service sbbs start
All done.
At this point, you should be able to telnet to your BBS on port 23 or visit the front-end web interface at http://
for more information visit the Synchronet wiki at https://wiki.synchro.net