Installing a Solid pod on a Synology NAS

Following Tim Berners-Lee's Richard Dimbleby Lecture, in which he advocated the use of Solid, I thought I would investigate the possibility of installing a Solid pod on my own Synology NAS device.

An overview of Solid is at: The process for installing a pod is described in Installing and running a Node Solid Server. This promises to be fairly straightforward, as the code is written in Javascript and based on node.js; but the instructions there presume that a full Linux server is available, and the Synology operating system is not such a full implementation. A process for installing a Solid pod under Docker on a Synology is described at Solid server with docker on a Synology Nas, but Docker is only available on a limited range of Synology devices, which does not include the model that I own.

So, I decided to try and install Solid from first principles using node.js, which is available as a standard downloadable package using the Synology DSM Package Center.

Obtain a free Dynamic DNS name from Synology

Unless your ISP (Internet Service Provider) has provided you with a fixed IP address, you are most likely to be assigned a dynamic IP address. The IP address is the binary Internet Protocol address by which your Internet connection is known. It is usually a 32-bit number, but for convenience each byte of that number is written down as a decimal number, and the four decimal numbers are joined together with periods, like 129.42.38.10 or 151.101.128.81. (Very modern systems may use a 128-bit IPv6 addresses, which are written down in hexadecimal with colon separators, like 2a04:4e42:400::81. But these IP addresses are still quite rare in the West.)

To run any sort of Internet service on your Synology device, it needs to be addressed by a name, and not a number. Such a name must be recorded in the world-wide Domain Name Service (DNS) system, which assigns readable names to each binary IP addresses. Synology offer a free Dynamic DNS service, DDNS, which assigns a DNS name to the dynamic IP address at which your Synology NAS is installed. Since the dynamic IP address can theoretically change when you reboot your router, the Synology DDNS service re-registers your IP address every day, to ensure that the DNS name always reflects your actual IP address.

The DNS name allocated by the Synology DDNS has been of the form username.synology.me. Recently, a wider range of DDNS names has become available, including username.DiskStation.me, username.DSCloud.biz, username.DSmyNAS.com, and username.FamilyDS.net. (You can also sign up with over twenty other DDNS providers.) You need to register an account with Synology to use their DDNS service. The registration process attempts to send logon details to account.synology.com, which might be detected by anti-tracker plugins as a tracker site. The EFF Privacy Badger has been known to do this, so be sure to disable Privacy Badger blocking of account.synology.com on the DSM page. The Synology DDSM name works, but might not be the name by which you want to be known permanently, as it exposes the fact that you are using a Synology, and will need to be changed if you ever want to move your servers to a different platform. So you probably ought to get a more personalized domain name, sometimes known as a vanity domain.

Obtain a free domain name from freenom.com

The following notes abour freenom are now obsolete. Freenom still exists, but it no longer offers free domains, and the free domains it did issue have stopped working.
See this Wikipedia article on the decline of Freenom: By early March 2024, around 99% of Freenom domains (mostly those under .tk, .cf, and .gq), roughly 12.6 million, were no longer accessible.

I only found out while researching Solid that it is now possible to obtain completely free domain names. They are not within the familiar hierarchies like .com, .net, or .co.uk, etc; but they are totally free of charge, allegedly forever. They are available with the top-level country codes of .cf (Central African Republic), .ga (Gabon), .gq (Equatorial Guinea), .ml (Mali), and .tk (Tokelau, a New Zealand territory in the South Pacific). You can register some of these domains directly, but the preferred way is to register them through the website freenom.com, which also contains interfaces to manage DNS entries for the free domains. The free registrations can be valid for up to 11 months, after which they must be renewed, free of charge. For registrations that extend for a year or more, you have to pay a fee. The registration process requires you to enter your name and residential address, but these are kept private, and do not appear in responses to WHOIS requests for the domain. Interestingly, all these registries allow you to register domain names containing emojis!

Once you have your free vanity domain name, you can connect it to your free Synology DDNS name by adding a CNAME record to the freenom name's DNS record, using the freenom.com website.

The connection is:

freenom-vanity-name.ga ----->  username.synology.me ------>  Your router's     --------------->  Virtual server on
                                                             dynamic IP address                  the Synology NAS 

 (allocated at         CNAME   (allocated by        DNS      (allocated        (configured       (configured in
  freenom.com)         record   Synology DDNS)      lookup    by your ISP)      in your router)   Synology Web Station)

Obtain a free certificate from Let's Encrypt

For security reasons, Solid only works over HTTPS connections using TLS (Transport Layer Security, also known as Secure Sockets Layer, or SSL). It used to be that you had to purchase and renew a certificate to use TLS, but the free service Let's Encrypt now issues limited-life certificates free of charge, which need to be renewed every 90 days (also free of charge).

Install node.js on the Synology NAS

Go to the DSM Package Center, and search for Node.js. At the time of writing, on my Synology system, there are three versions available: Node.js V4, Node.js V6, and Node.js V8. Solid requires V8, so that is what I installed.

Update: Since orginally writing this, Node.js V12 is now available, but the implementaion of Solid on GIT now requires Node.js V18. It now seems that Node.js V18 requires DSM 7.2 or above. (I am reluctant to install DSM 7 because it no longer supports Photo Station, and its replacement, Photos, is regarded as not as good by some users.)