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!


How to Setup Docker on Ubuntu

Before starting, if you intend to use YOURNAME.synchro.net, you should go ahead and create an account on |Vertrauen in order to access DoveNet as well as the synchro.net dynamic dns service. You can also bring your own registered domain, or use any domain (such as YOURNAME.bbs.io) via freedns.afraid.org.

You should create a public/private key pair for SSH before creating your VM, for many providers, this will allow you to have passwordless SSH access.

Windows Users

Windows Users should Install WSL2 on a recent version of Windows 10 followed by Ubuntu 20.04 in the Windows Store, then install Docker Desktop for Windows.

With the above in place, you can then refer to Install Synchronet for Docker and disregard any Docker or UFW directions below.

Installing Ubuntu Server

You should start with a fresh install of Ubuntu Server. You should use the latest LTS version (As of today, 20.04). If you want to use a web host, you can use Digital Ocean, Linode or almost any other Linux VPS provider.

I would suggest using a VPS with at least 2GB Ram, even though you can get by with less, I would not recommend this.

When creating your Droplet/VM, specify a host name that matches the name the server will use such as foo.synchro.net or foo.bbs.io.

After your VM/VPS is up and running, connect over SSH, edit /etc/ssh/sshd_config and set the port to something other than 22 (such as 65022) so that the default port is available to Synchronet, then restart the server.

After you have changed the SSH port, and restarted, connect again over SSH.

  ssh -p 65022 root@yourserver
  

Now you should install and enable ufw (ubuntu's Uncomplicated Firewall).

  sudo apt-get install ufw
  ufw allow 65022
  ufw enable

Installing Docker

I'm using the instructions from docker.com here for x86_64, you can use the instructions on that site for other platforms.

If using a VPS with root, you can omit the sudo portion of the commands below.

  sudo apt-get update
  sudo apt-get install \
       apt-transport-https \
       ca-certificates \
       curl \
       gnupg-agent \
       software-properties-common
       
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  
  sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
       
  sudo apt-get update
  
  sudo apt-get install docker-ce docker-ce-cli containerd.io
  

Finally, in addition to the instructions on docker.com, install docker-compose

  sudo apt-get install docker-compose

Installing Synchronet

Now that you have Docker installed and prepared, you can Install Synchronet for Docker.

After installing Synchronet, you should enable the ports that Synchronet expects to use.

  ufw enable 
  ufw enable 80
  ufw enable 443
  ufw enable 1123
  ufw enable 11235
  ufw enable 21
  ufw enable 22
  ufw enable 23
  ufw enable 513
  ufw enable 64
  ufw enable 128
  ufw enable 25
  ufw enable 587
  ufw enable 465
  ufw enable 110
  ufw enable 995
  ufw enable 119
  ufw enable 563
  ufw enable 18
  ufw enable 11
  ufw enable 17
  ufw enable 79
  ufw enable 6667

Remote Editing

In order to make life easier, I would recommend installing Visual Studio Code and then install the Remote Development extension pack, which will allow for SSH and WSL remote editing.

I have the following contents in ~/sbbs/.vscode/settings.json in order to make dealing with BBS (code page 437) formatted files a bit easier. This allows me to hit F1, type `Remote-SSH` and see a list of options for connecting to remote ssh hosts.

  {
    "files.encoding": "cp437",
    "editor.rulers": [
      76,
      80
    ],
    "editor.formatOnSave": true,
    "editor.tabSize": 2,
    "editor.renderControlCharacters": true,
    "files.associations": {
      "*.ssjs": "javascript"
    },
    "[javascript]": {
      "editor.defaultFormatter": "vscode.typescript-language-features",
      "editor.renderControlCharacters": false,
      "files.encoding": "utf8",
    },
    "[json]": {
      "files.encoding": "utf8",
      "editor.renderControlCharacters": false,
    },
    "[css]": {
      "files.encoding": "utf8",
      "editor.renderControlCharacters": false,
    },
    "[html]": {
      "files.encoding": "utf8",
      "editor.renderControlCharacters": false,
    },
    "[ini]": {
      "files.encoding": "utf8",
      "editor.renderControlCharacters": false,
    }
  }

See Also