• Stars
    star
    260
  • Rank 157,189 (Top 4 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 4 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Community Solid Server: an open and modular implementation of the Solid specifications

Community Solid Server

[Solid logo]

MIT license npm version Node.js version Build Status Coverage Status DOI GitHub discussions Chat on Gitter

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.

Running the server

To run the server, you will need Node.js. We support versions 14.14 and up.

If you do not use Node.js, you can run a Docker version instead.

💻 Installing and running locally

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

📃 Installing and running from source

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

📦 Running via Docker

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

🗃️ Helm Chart

The official Helm Chart for Kubernetes deployment is maintained at CommunitySolidServer/css-helm-chart and published on ArtifactHUB. There you will find complete installation instructions.

# 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

🔧 Configuring the 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.

Parameters

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
--port, -p 3000 The TCP port on which the server should listen.
--baseUrl, -b http://localhost:$PORT/ The base URL used internally to generate URLs. Change this if your server does not run on http://localhost:$PORT/.
--socket The Unix Domain Socket on which the server should listen. --baseUrl must be set if this option is provided
--loggingLevel, -l info The detail level of logging; useful for debugging problems. Use debug for full information.
--config, -c @css:config/default.json The configuration(s) for the server. The default only stores data in memory; to persist to your filesystem, use @css:config/file.json
--rootFilePath, -f ./ Root folder where the server stores data, when using a file-based configuration.
--sparqlEndpoint, -s URL of the SPARQL endpoint, when using a quadstore-based configuration.
--showStackTrace, -t false Enables detailed logging on error output.
--podConfigJson ./pod-config.json Path to the file that keeps track of dynamic Pod configurations. Only relevant when using @css:config/dynamic.json.
--seededPodConfigJson Path to the file that keeps track of seeded Pod configurations.
--mainModulePath, -m Path from where Components.js will start its lookup when initializing configurations.
--workers, -w 1 Run in multithreaded mode using workers. Special values are -1 (scale to num_cores-1), 0 (scale to num_cores) and 1 (singlethreaded).

🔀 Multithreading

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

🖥️ Environment variables

Parameters can also be passed through environment variables.

They are prefixed with CSS_ and converted from camelCase to CAMEL_CASE

eg. --showStackTrace => CSS_SHOW_STACK_TRACE

Note: command-line arguments will always override environment variables!

🧶 Custom configurations

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 config folder, and the configurations tutorial. There is also a configuration generator.

Recipes for configuring the server can be found at CommunitySolidServer/recipes.

👩🏽‍💻 Developing server code

The server allows writing and plugging in custom modules without altering its base source code.

The 📗 API documentation and the 📓 user documentation can help you find your way. There is also a repository of 📚 comprehensive tutorials

📜 License

The Solid Community Server code is copyrighted by Inrupt Inc. and imec and available under the MIT License.

🎤 Feedback and questions

Don't hesitate to start a discussion or report a bug.

Learn more about Solid at solidproject.org.

More Repositories

1

solid

Solid - Re-decentralizing the web (project directory)
HTML
8,162
star
2

node-solid-server

Solid server on top of the file-system in NodeJS
JavaScript
1,666
star
3

solid-spec

Solid specification draft 0.7.0
1,133
star
4

specification

Solid Technical Reports
HTML
490
star
5

solidproject.org

Website for solidproject.org
HTML
150
star
6

web-access-control-spec

Web Access Control (WAC)
HTML
122
star
7

process

A definition of the culture around how decisions are made about Solid and a record of how this has changed over time
HTML
110
star
8

solid-auth-client

A browser library for performing authenticated requests to Solid pods
JavaScript
95
star
9

webid-oidc-spec

WebID-OIDC Authentication Spec v0.1.0
56
star
10

data-interoperability-panel

Repository for the Solid Data Interoperability Panel
Bikeshed
51
star
11

vocab

Solid Vocabularies
Makefile
44
star
12

user-stories

A repository to submit user stories
29
star
13

oidc-auth-manager

An OpenID Connect (OIDC) authentication manager (OP, RP and RS) for decentralized peer-to-peer authentication
JavaScript
24
star
14

solidcommunity.net

Operational issue tracking for solidcommunity.net
21
star
15

solid.mit.edu

Homepage for the Solid MIT Project
CSS
20
star
16

solid-namespace

A collection of common RDF namespaces used in the Solid project
JavaScript
19
star
17

authorization-panel

Github repository for the Solid Authorization Panel
HTML
19
star
18

solid-oidc

The repository for the Solid OIDC authentication specification.
Bikeshed
19
star
19

acl-check

Simple check of Web Access Control (WAC) access
JavaScript
13
star
20

webid-profile

Discovery based on Solid Social Agent WebID
HTML
12
star
21

authentication-panel

GitHub repository for the Solid Authentication Panel
HTML
11
star
22

notifications

Solid Notifications Technical Reports
HTML
11
star
23

solid-wg-charter

Proposed charter for the W3C Solid Working Group
HTML
10
star
24

community-server-recipes

Solid Community Server with the Mashlib Data Browser
9
star
25

node-solid-ws

Node/Javascript implementation of Websockets for Solid
JavaScript
8
star
26

type-indexes

About Type Indexes and how they can be used by Solid developers.
HTML
7
star
27

solid-auth-oidc

OpenID Connect authentication support for the solid-client library
JavaScript
6
star
28

chat

Repository for chat client-to-client specification
HTML
6
star
29

deit

Diversity, Equity, and Inclusion Team
6
star
30

contacts

Client-client specifications of contacts data for people and organizations
6
star
31

did-method-solid

Solid DID Method
HTML
5
star
32

oidc-op

OpenID Connect Provider for Node.js
JavaScript
5
star
33

oidc-rs

OpenID Connect Resource Server Authentication for Node.js
JavaScript
5
star
34

notifications-panel

Solid Notifications Panel
HTML
4
star
35

jose

JSON Object Signing and Encryption for Node.js and the browser
JavaScript
4
star
36

shapes

Solid Shapes
4
star
37

solid.github.io

Staging branch of the solidproject.org repository
HTML
3
star
38

keychain

KeyChain for use with Web Cryptography API in Node.js
JavaScript
3
star
39

test-suite-panel

Test Suite Panel
2
star
40

team

2
star
41

security-considerations

Bikeshed
2
star
42

eslint-config-base

Solid defaults for eslinting.
JavaScript
1
star
43

access-token-verifier

Solid access token verification.
TypeScript
1
star
44

solid-prep

Representation and Semantics for PREP Notifications sent from Solid hosted LDP Resources
Bikeshed
1
star
45

httpsig

HttpSig Authentication for Solid
HTML
1
star