Installing Synchronet BBS with DOSEMU Support on Debian 11 Bullseye (Non-root)
This is an updated guide based on the Debian 9.5 Stretch guide I wrote some time ago, but updated to include instructions for Debian 11.
Building Synchronet on Debian 11:
Pre-requisites:
This tutorial assumes you are running Debian 11 Bullseye Minimal (x64)
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-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 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 bullseye repository:
deb http://cdn-aws.deb.debian.org/debian bullseye main contrib
Update apt:
apt update
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 libmozjs-78-0 libmozjs-78-dev python libarchive-dev
Install dosemu on Debian 11 Bullseye:
This part is a bit tricky, Debian 10/11 do not include DOSemu any longer, so to get it installed you need to do a few tricky things:
enable i386 architecture
$ /usr/bin/dpkg –add-architecture i386
$ wget http://ftp.us.debian.org/debian/pool/contrib/d/dosemu/dosemu_1.4.0.7+20130105+b028d3f-2+b1_i386.deb
$ dpkg -i dosemu_1.4.0.7+20130105+b028d3f-2+b1_i386.deb
$ apt-get -f install
*** run dpkg install again ***
$ dpkg -i dosemu_1.4.0.7+20130105+b028d3f-2+b1_i386.deb
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 USE_DOSEMU=1
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