The birth of a Solid pod server

A solid internship

Sam Hendrickx
Raccoons Group
5 min readNov 9, 2020

--

As I’m a last year student at UCLL, Craftworkz has given me the opportunity to do an internship regarding a fascinating concept. That is to say, during the next three months, I’m working on a case study of SOLID in a multi-modular mobility context.

For instance, I will investigate the best vocabularies to set up the pods to integrate several public transport companies and rental agencies. Subsequently, I can research how to expose and incorporate the data in an encompassing app/ API.

During this internship, I will post a blog series about my progress and I’ll start with how to set up a basic SOLID pod server. But first things first: a bit of background info.

Mobility - The solid project
Photographer: Ishan @seefromthesky

A solid introduction

Caught in the Web

In the beginning of the web, the only thing you encountered was static HTML.
Therefore, the information you found was solely provided by big companies and dynamic interaction was practically unheard of.

After a while, the focus shifted to services and user collaboration and people all over the world started to donate their data freely. As a result, companies started making money on each click instead of each view.

Nowadays, people are very accustomed to receive services for free. I do think it’s important to realize that “If you’re not paying for a product, you ARE the product.”
But does this have to be the way? This is where Solid, a new project by Tim Berners-Lee (the inventor of the World Wide Web), comes in.

Enter SOLID

The idea behind Social Linked Data is simple. As a user, you are in complete control of your own data. In other words, applications are merely views which combine your and the companies’ data to provide you with the service of your desire. As a result, you can switch between apps and datastores without losing your data.

Speedcurve Performance Analytics
Photographer: Luke Chesser

Now this is solid pod using

Solid’s method of data storage consists of Personal Online Data Stores or “pods”. Because of their modular nature, pods do not need to contain all the data regarding one category. In fact, they don’t even need to be on the same server. This means you can easily decide which access to give to which application!

Like peas in a pod

Of course, for data to be independent from applications, the same information must be understood consistently from one app to another. Therefore, to make data reusable, it should be described with vocabularies that are widely used and known. There are already several well-known ones, or you can always create your own.

Remember you’re unique…

The other biggest selling point of Solid is the use of a single login or webId. This means you only need to register on one server from which you control all the other data pods.

… Just like everyone else

But wait, there’s more: it’s not only users that can set up data-pods. Say you need to apply for a loan and you have a clean bill of health. If you choose to share your health information from your “health” data-pod, hosted by your hospital, with your bank, they can use this to give you better rates on your life insurance.

Or the government hosts a pod with information about funding for the renovation of houses. You could get the data from their pod, link it with the info on your house pod and combine these to get the best deals possible… The world (and your data) is your oyster.

A solid setup

So, congratulations for hanging on… we’re there. On to the more technical stuff. In this section I’ll briefly explain how to get you very own Solid pod.

One login to rule them all

To start with your first pod you need to register with a webID provider.
At the present time, there are two providers, Namely inrupt.net and solidcommunity.net.

The third option, however, is to set up your own pod. As I said before, you could always use a combination of multiple servers.

Set up your pod

There is currently one publicly available Pod server available that you can run yourself: Node Solid Server. This server needs node.js to be installed on the system.

Since I use Ubuntu 20.04, I installed Node.js with apt using a NodeSource PPA.

curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -v

Then I installed the NSS on the host machine.

sudo npm install -g solid-server

This is actually all you need to run it locally, you can start the server with

solid start — port 8443

Then again, it’s better to adjust the configuration, which is kept in a json file aptly named “conf.json”.

{
“root”: “/<path_to_server>/solid server/data”,
“port”: “8443”,
“serverUri”: “https://localhost:8443",
“webid”: true,
“mount”: “/”,
“configPath”: “./config”,
“configFile”: “./config.json”,
“dbPath”: “./.db”,
“sslKey”: “../privkey.pem”,
“sslCert”: “../fullchain.pem”,
“multiuser”: false,
“server”: {
“name”: “localhost”,
“description”: “”,
“logo”: “”
}
}

However, this configuration does not support multiple users though.

The Solid Prototype homepage

The only thing left to do is to register… and there you go, you have just set up your very own Solid pod server.

It’s a pod time

And so you have reached the end of my very first blog. If you are craving for more information on SOLID or are intrigued by my internship be sure to follow us on social media (Instagram, LinkedIn, Facebook or Twitter) as updates will be forthcoming.

This Solid saga has only just begun.

--

--