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

Views: 466Published On: December 31st, 2022Categories: Hobbies, Linux/Unix

Share This Story, Choose Your Platform!

Leave A Comment