Installing Synchronet BBS with DOSEMU Support on Debian 9.5 Stretch

I have been running a Synchronet BBS for about 20 years now and was thrilled when Rob Swindell decided to “Reboot” the BBS world and offer Synchronet to the open source community.

Since it’s release I have seen several guides on how to build Synchronet on various operating systems. I myself have built Synchronet in both FreeBSD and Linux (with limitations on the FreeBSD side, so I have always seemed to come back to the Linux platform). I have run my BBS (The Horizon BBS, on CentOS, RedHat EL, Debian and Ubuntu and have found Debian to offer a good balance of stability, security and compatible packages when it comes to building and running synchronet.

I seem to keep my operating system pretty up to date, so I will be updating this guide from time to time to incorporate changes and workarounds in newer versions of Debian as it is released.

Building Synchronet on Debian 9.5:


This tutorial assumes you are running Debian 9.5 Minimal (x64)

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 all software needed to build synchronet, in this example, we will be building synchronet with DosEMU support which will require you to modify your apt sources.list

nano /etc/apt/sources.list and add “contrib” to the end of the main debian stretch repository:

deb stretch main contrib
deb stretch/updates main
deb stretch-updates main

Update apt:

apt update

Install pre-requisites:

apt-get install make g++ linux-libc-dev libncurses5-dev libnspr4-dev cvs libcap2-dev gdb zip unzip lrzsz gkermit build-essential libmozjs185-dev pkg-config dosemu

Download the Makefile and build Synchronet:

mkdir /sbbs
cd /sbbs
wget '*checkout*/install/GNUmakefile'
make install SYMLINK=1 DOSEMU=1

Add BBS users and change file permissions:

adduser bbs
chown -R bbs.bbs /sbbs

Install ansi-bbs terminfo:

tic terminfo

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:

setcap 'cap_net_bind_service=+ep' /sbbs/src/sbbs3/gcc.linux.x64.exe.release/sbbs

edit sbbs.ini:

nano /sbbs/ctrl/sbbs.ini

find the line:

; User/group name to run as
;User = admin
;Group = wheel

Change it to:

; User/group name to run as

Add Startup script:

nano /lib/systemd/system/sbbs.service

paste the following contents:

Description=Synchronet BBS service
Environment=SBBSROOT=/sbbs SBBSCTRL=/sbbs/ctrl
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

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://<your ip>

for more information visit the Synchronet wiki at

Posted in Hobbies, Linux/Unix.

Owner of NeTex Consulting, Laravel, node.js developer and System Administrator with over 20 years of experience in the I.T. Industry.

Leave a Reply