This is an old revision of the document!
Table of Contents
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, } }