User guide

An always-on computer at home

You have a computer that stays on, and you want what you share to stay reachable while your desktop is off. This is how to make it an always-on computer.

A BBS, a creation or a database you share is only reachable while the computer holding it is on. If you already have a computer that stays on — a Raspberry Pi, a Synology NAS, an old laptop running Linux — it can be that computer. It runs the same XataWorks, with no window, and you look after it from your desktop or your phone.

What you need

  • A 64-bit computer that stays on: a Linux computer with an Intel or AMD processor, a Raspberry Pi 4 or later running the 64-bit Raspberry Pi OS, or a Synology NAS that runs Container Manager. Give it 2 GB of memory for XataWorks; a Raspberry Pi with 4 GB is comfortable.
  • A connection to the internet that stays up. Nothing on your router needs to change — see No ports to open.
  • XataWorks on your desktop, signed in to your XataWorks account, or your account page in a browser. That is where you type the pairing code the always-on computer shows.

The always-on computer runs as a container: the image is ghcr.io/webliteca/xataworks, and everything it keeps — its BBSes, creations, databases and documents, and its link to your account — is in one volume, xataworks-data. Keep the volume and you keep the computer.

On a Linux computer

  1. Install Docker from your distribution. On Ubuntu or Debian, run sudo apt install docker.io.
  2. Start XataWorks, and have it start again by itself after a restart or a power cut: sudo docker run -d --name xataworks --restart unless-stopped -e AAF_COMPUTER_NAME="Home server" -v xataworks-data:/data ghcr.io/webliteca/xataworks:latest. AAF_COMPUTER_NAME is the name your computers list shows, 1 to 80 characters.
  3. Read its log with sudo docker logs -f xataworks. Within a minute it shows a line like Pairing code: K7Q-4RM — on your desktop, choose Add an always-on computer… and type it. It expires in 10 minutes. Go on to Type the pairing code.

On a Raspberry Pi

  1. With Raspberry Pi Imager, put Raspberry Pi OS Lite (64-bit) on the Pi’s card. In the Imager’s settings, give it a name, a user and a password, and turn on SSH. The 32-bit system cannot run XataWorks.
  2. Start the Pi, and sign in to it from another computer with ssh your-user@your-pi.local, using the names you gave it.
  3. Install Docker with Docker’s own script: curl -fsSL https://get.docker.com -o get-docker.sh, then sudo sh get-docker.sh.
  4. Start XataWorks: sudo docker run -d --name xataworks --restart unless-stopped -e AAF_COMPUTER_NAME="Home server" -v xataworks-data:/data ghcr.io/webliteca/xataworks:latest.
  5. Read its log with sudo docker logs -f xataworks until the line that begins Pairing code: appears, then go on to Type the pairing code.

On a Synology NAS

  1. In Package Center, install Container Manager. A model whose processor Container Manager does not support cannot run XataWorks.
  2. In Control Panel, open Terminal & SNMP and turn on SSH. Sign in to the NAS from another computer with ssh your-admin-user@your-nas.local.
  3. Start XataWorks: sudo docker run -d --name xataworks --restart unless-stopped -e AAF_COMPUTER_NAME="Home NAS" --memory 2g -v xataworks-data:/data ghcr.io/webliteca/xataworks:latest. It then appears in Container Manager under Container.
  4. Read its log: in Container Manager, select the xataworks container and open its Log, or run sudo docker logs -f xataworks. Wait for the line that begins Pairing code:, then go on to Type the pairing code. You can turn SSH off again afterwards.

Type the pairing code

The code is what links the always-on computer to your account. No password is ever typed on it.

  1. On your desktop, open Preferences, then Web access, and choose Add an always-on computer…. Or, on your account page, open My computers and choose Add an always-on computer….
  2. Type the code within 10 minutes. Capitals and the dash are optional.
  3. It appears in your computers as Always on, and its log says Linked to your XataWorks account. Web access is on.

A code that has expired is refused with “That code has expired or isn’t right — restart pairing on the computer”. The always-on computer shows a new code by itself every 10 minutes until one is typed.

From then on it is a computer like your desktop: move a BBS or a creation onto it, and share them as you would from anywhere else.

No ports to open

The always-on computer only ever dials out. It keeps a connection to XataWorks’ connection service, and a member who opens one of its BBSes — from a phone on mobile data, say — is put through to it from there, over a relay when a direct path is not possible. So there is no port to forward on your router, no address to publish, and nothing to add to the commands above: the image publishes no ports, and none is needed.

Keeping an eye on it

Open the always-on computer from your computers to see its own page: its version, its disk, what it holds, and Restart and Unlink. That page warns you when the hardware is not keeping up:

  • When it has less than 1 GB of disk left, for example “Running low on space: 0.8 GB free”.
  • When it has less memory in all than it needs, or is using nearly all of what it may use.

When it has been unreachable for more than an hour, your computers say so beside its name, with how long. After a whole day you get one email naming it and saying how much it holds — for example “It holds 2 BBSes, 1 creation and 3 databases.” — and no other until it has been back online. XataWorks only ever learns how many of each it holds, never their names.

Updating. Fetch the newest image with sudo docker pull ghcr.io/webliteca/xataworks:latest, remove the old container with sudo docker rm -f xataworks, and start it again with the same docker run command. The volume keeps everything, its link to your account included.

Run one container per volume: two copies of the same volume are the same computer twice.

Things worth knowing

  • Unlinking it from your computers takes it out of your account and stops it answering. Its files stay in its volume; it shows a new pairing code, so it can be linked again.
  • Its name is the one in AAF_COMPUTER_NAME. Without it, it is the container’s own host name, which Docker makes up — so give it one.
  • Agents and mail stay on your desktop. The always-on computer serves what you share: BBSes, creations, databases and documents.

Back to all user-guide articles.