Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

This is an old revision of the document!


Install Synchronet on a Raspberry Pi

Here are step-by-step instructions on building and installing Synchronet on a Raspberry Pi running either Raspbian or Raspberry Pi OS 32-bit.

Note: While Raspbian and the 32-bit version of Raspberry Pi OS are virtually identical, the 64-bit version of Raspberry Pi OS is a significant departure from Raspbian. These instructions are untested on the 64-bit version.

Prerequisites

These instructions were created using a Raspberry Pi 3 Model B running Raspbian Stretch, kernel version 4.4:

$ uname -a
Linux raspberrypi 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l GNU/Linux

These instructions have recently been confirmed using a Raspberry Pi 3 Model B running Raspbian Stretch Light, kernel version 4.14:

$ uname -a
Linux raspberrypi 4.14.71-v7+ #1145 SMP Fri Sep 21 15:38:35 BST 2018 armv7l GNU/Linux

Instructions

Get to a Terminal/command prompt (e.g. login via SSH or run the Terminal application from the PIXEL desktop).

Login as your preferred user account to run the BBS software (e.g. the default user pi, or create the user sbbs using the Linux adduser utility and then run su sbbs to login as the user sbbs).

These instructions install Synchronet (source code, executables, configuration, and data files) into a sub-directory named sbbs off of the home directory of the current user (e.g. ~/sbbs). So if the current user is “pi”, that would expand to /home/pi/sbbs. If you wish to install into a different directory (e.g. /sbbs instead of ~/sbbs), then change the following commands as you see fit, but that is not recommended.

Type each of these commands (see prerequisites for a complete list of dependencies):

# Command Description
1 sudo apt-get update Resynchronize your Debian package index
2 sudo apt-get install git Install the Git tools
3 ​sudo apt-get install zip Install the Info-zip (zip/unzip) tools
4 sudo apt-get install libnspr4-dev Install the Netscape Portable Runtime library (used by Mozilla stuff)
5 sudo apt-get install libncursesw5-dev Install the curses development package (wide char variant)
6 sudo apt-get install libarchive-dev Install the libarchive development package
7 mkdir ~/deb_packages Create a directory to store some packages for manual installation
8 cd ~/deb_packages Change the current working directory to the newly-created directory
9 wget http://ftp.br.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-6_armhf.deb Download libffi6
10 wget http://ftp.ro.debian.org/debian/pool/main/m/mozjs/libmozjs185-1.0_1.8.5-1.0.0+dfsg-6_armhf.deb Download libmozjs185-1.0
11 wget http://ftp.br.debian.org/debian/pool/main/m/mozjs/libmozjs185-dev_1.8.5-1.0.0+dfsg-6_armhf.deb Download libmozjs185-dev
12 sudo dpkg -i libffi6_3.2.1-6_armhf.deb Install libffi6
13 sudo dpkg -i libmozjs185-1.0_1.8.5-1.0.0+dfsg-6_armhf.deb Install libmozjs185-1.0
14 sudo dpkg -i libmozjs185-dev_1.8.5-1.0.0+dfsg-6_armhf.deb Install libmozjs185-dev
15 sudo apt --fix-broken install Fix eventual missing dependencies
16 mkdir ~/sbbs Create the directory where Synchronet will be built and run from
17 cd ~/sbbs Change the current working directory to the newly-created directory
18 wget https://gitlab.synchro.net/sbbs/sbbs/-/raw/master/install/GNUmakefile Fetch makefile
19 make install SYMLINK=1 JSINCLUDE=/usr/include/js JSLIB=mozjs185 Build it (will likely take quite a while)
20 export SBBSCTRL=~/sbbs/ctrl See env for details on setting this environment variable persistently
21 ~/sbbs/exec/scfg Configure your BBS, see sbbs.ini for more Synchronet server settings

Now you are ready to either run sbbs with interactive sysop console:

$ ~/sbbs/exec/sbbs

or see this how-to for instructions on how to run sbbs as a daemon using systemd.

Note:
This will create 32-bit ARM binaries (executables):

$ file -L sbbs
sbbs: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0

Although it is possible to create 64-bit ARM binaries for the Raspberry Pi 3/3+ through cross-compilation, this is not supported by the Raspberry Pi foundation and thus not covered here.

libmozjs

The new Raspberry Pi OS (bullseye) does not include the package libmozjs185-dev.

See this page for a reported solution.

See Also