The Community Solid Server is open software that provides you with a Solid Pod and identity. This Pod acts as your own personal storage space so you can share data with people and Solid applications.
As an open and modular implementation of the Solid specifications, the Community Solid Server is a great companion:
for people who want to try out having their own Pod
for developers who want to create and test Solid apps
for researchers who want to design new features for Solid
And, of course, for many others who like to experience Solid.
You can install the software locally or on your server and get started with Solid immediately.
To run the server, you will need Node.js. We support versions 14.2 and up.
If you do not use Node.js, you can run a Docker version instead.
After installing Node.js, install the latest server version from the npm package repository:
npm install -g @solid/community-server
To run the server with in-memory storage, use:
community-solid-server # add parameters if needed
To run the server with your current folder as storage, use:
community-solid-server -c @css:config/file.json
If you rather prefer to run the latest source code version, or if you want to try a specific branch of the code, you can use:
git clone https://github.com/CommunitySolidServer/CommunitySolidServer.git cd CommunitySolidServer npm ci npm start -- # add parameters if needed
Docker allows you to run the server without having Node.js installed. Images are built on each tagged version and hosted on Docker Hub.
# Clone the repo to get access to the configs git clone https://github.com/CommunitySolidServer/CommunitySolidServer.git cd CommunitySolidServer # Run the image, serving your `~/Solid` directory on `http://localhost:3000` docker run --rm -v ~/Solid:/data -p 3000:3000 -it solidproject/community-server:latest # Or use one of the built-in configurations docker run --rm -p 3000:3000 -it solidproject/community-server -c config/default.json # Or use your own configuration mapped to the right directory docker run --rm -v ~/solid-config:/config -p 3000:3000 -it solidproject/community-server -c /config/my-config.json # Or use environment variables to configure your css instance docker run --rm -v ~/Solid:/data -p 3000:3000 -it -e CSS_CONFIG=config/file-no-setup.json -e CSS_LOGGING_LEVEL=debug solidproject/community-server
# Summary helm repo add community-solid-server https://communitysolidserver.github.io/css-helm-chart/charts/ helm install my-css community-solid-server/community-solid-server
The Community Solid Server is designed to be flexible such that people can easily run different configurations. This is useful for customizing the server with plugins, testing applications in different setups, or developing new parts for the server without needing to change its base code.
An easy way to customize the server is by passing parameters to the server command. These parameters give you direct access to some commonly used settings:
|parameter name||default value||description|
||The TCP port on which the server should listen.|
||The base URL used internally to generate URLs. Change this if your server does not run on
||The detail level of logging; useful for debugging problems. Use
||The configuration(s) for the server. The default only stores data in memory; to persist to your filesystem, use
||Root folder where the server stores data, when using a file-based configuration.|
||URL of the SPARQL endpoint, when using a quadstore-based configuration.|
||false||Enables detailed logging on error output.|
||Path to the file that keeps track of dynamic Pod configurations. Only relevant when using
||Path to the file that keeps track of seeded Pod configurations.|
||Path from where Components.js will start its lookup when initializing configurations.|
||Run in multithreaded mode using workers. Special values are
The Community Solid Server can be started in multithreaded mode with any config. The config must only contain components that are threadsafe though. If a non-threadsafe component is used in multithreaded mode, the server will describe with an error which class is the culprit.
# Running multithreaded with autoscaling to number of logical cores minus 1 npm start -- -c config/file.json -w -1
Parameters can also be passed through environment variables.
They are prefixed with
CSS_ and converted from
Note: command-line arguments will always override environment variables!
More substantial changes to server behavior can be achieved by writing new configuration files in JSON-LD. The Community Solid Server uses Components.js to specify how modules and components need to be wired together at runtime.
Examples and guidance on configurations
are available in the
Recipes for configuring the server can be found at CommunitySolidServer/recipes.
The server allows writing and plugging in custom modules without altering its base source code.
Learn more about Solid at solidproject.org.