Run a real Solid pod on your own machine in two commands
This works, it takes about a minute, and it involves us in no way at all. The server is the Solid community's; we neither wrote it nor host what you are about to run.
That is the honest pitch for this page: if you want to evaluate the pod model, you do not need a Solidus account and should not start with one.
The two commands
$ npx @solid/community-server -f ./pod-data -p 3000 -b http://localhost:3000/
$ curl -sI http://localhost:3000/
We ran the pinned 7.1.9 binary with exactly those flags this session, npx fetches the same
published package. Node 18 or newer. The 8.x line is alpha and wants a newer runtime; we pin 7.x
and suggest you do too until that changes.
What you should actually see
HTTP/1.1 200 OK
X-Powered-By: Community Solid Server
Content-Type: text/turtle
Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel="type"
Link: <http://www.w3.org/ns/pim/space#Storage>; rel="type"
Link: <http://localhost:3000/.acl>; rel="acl"
Link: <http://localhost:3000/.well-known/solid>; rel="..."
The Link headers are the point. They tell any client this is a container, that it is a storage
root, and where its access-control document lives, without the client knowing anything about who
runs it.
Ask for a path you never created and you get 404. The server distinguishes "not there" from "not allowed", which is the behaviour you want and, as it happens, not what our own deployed host does, for reasons that belong on another page.
Two corrections to our own README
First: our README's install step runs from a private repository root. If you are not us, you cannot run it. The public-package form above is the one that works for a stranger, and this is exactly the check we are supposed to apply to anything we publish.
Second: our README tells you to expect a Accept-Patch header on the root. It is not there. That
header appears on a resource that supports patching, not on the storage container. Verified on
the version we pin. A reader following our instruction concludes their install is broken when it is
fine, which is worse than no instruction.
The safety note our README does not give
A fresh pod is wide open. Read the header:
WAC-Allow: user="append control read write", public="append control read write"
Everyone gets all four modes, including control: the mode that lets the holder change who else has access. Anything that can reach that port owns the pod.
For a laptop-bound experiment that is fine and convenient. Do not put it on a public interface, and do not treat the default as a starting point for anything real. What those four modes mean, and how to change them and watch the change take effect.
What this proves, and what it does not
It proves the Solid model is real software you can hold in your hands, not a whitepaper, not a demo behind a signup form.
It proves nothing about us. You just ran the community's server on your own machine. Our deployment adds an integration layer around the same engine, and none of that layer is exercised by what you did. Anyone reading this page as evidence about Solidus has read it backwards.
Where to go next
- Store something and read it back, the LDP walkthrough, also run this session.
- Set a permission and watch enforcement change, here, with a before-and-after header and a control.
- Check compatibility with tools we do not control, here.