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:


This tutorial assumes you are running Debian 11 Bullseye Minimal (x64)

One-step install (as root):

apt-get install -y wget sudo

wget -O - | 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 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

$ 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
$ 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
$ 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:

; 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://

for more information visit the Synchronet wiki at

Views: 2223Published On: December 22nd, 2022Categories: Hobbies, Linux/Unix

Share This Story, Choose Your Platform!

Leave A Comment