{"id":13553591,"url":"https://github.com/interop-alliance/life-server","last_synced_at":"2025-04-03T05:31:08.253Z","repository":{"id":35716341,"uuid":"151128624","full_name":"interop-alliance/life-server","owner":"interop-alliance","description":"A decentralized personal data framework inspired by MIT's Solid Project","archived":false,"fork":false,"pushed_at":"2022-09-14T21:00:22.000Z","size":5456,"stargazers_count":27,"open_issues_count":22,"forks_count":5,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-18T04:59:40.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"solid/node-solid-server","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/interop-alliance.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-01T17:26:44.000Z","updated_at":"2024-07-18T01:08:24.000Z","dependencies_parsed_at":"2023-01-16T03:47:08.308Z","dependency_job_id":null,"html_url":"https://github.com/interop-alliance/life-server","commit_stats":null,"previous_names":[],"tags_count":120,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interop-alliance%2Flife-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interop-alliance%2Flife-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interop-alliance%2Flife-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/interop-alliance%2Flife-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/interop-alliance","download_url":"https://codeload.github.com/interop-alliance/life-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246944377,"owners_count":20858773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:02:28.972Z","updated_at":"2025-04-03T05:31:07.835Z","avatar_url":"https://github.com/interop-alliance.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","others"],"sub_categories":[],"readme":"# Life Server _(life-server)_\n\n[![Build status](https://img.shields.io/github/workflow/status/interop-alliance/life-server/Node.js%20CI)](https://github.com/interop-alliance/life-server/actions?query=workflow%3A%22Node.js+CI%22)\n[![NPM Version](https://img.shields.io/npm/v/life-server.svg?style=flat-square)](https://npm.im/life-server)\n\n\u003e A decentralized personal data server inspired by Solid and Decentralized Web Node.\n\n## Table of Contents\n\n- [Background](#background)\n    - [Audience](#audience)\n    - [Roadmap](#roadmap)\n    - [Differences from Solid Server](#differences-from-solid-server)\n- [Install](#install)\n- [Usage](#usage)\n- [Security](#security)\n- [Contribute](#contribute)\n- [License](#license)\n\n**Important:** For upgrade notes and change history, see \n**[CHANGELOG.md](CHANGELOG.md)**.\n\n## Background\n\nLife Server is personal data server written in Node.js, originally\nbased on MIT's [Solid Server](https://github.com/solid/node-solid-server).\n\n### Audience\n\nThis server is intended for the following audiences:\n\n1. (primarily) Myself. I'm using this as an experimental platform for incubating\n    and implementing various [Solid-related](https://github.com/solid/specification)\n    and Solid-adjacent specifications and standards.\n1. (hopefully) Other developers of user centric offline-first decentralized \n    applications.\n1. (to a much smaller extent) End-users interested in running their own file\n    sharing server (a minimal Dropbox/Google Drive sort of setup). This server\n    is not really ready for mainstream (or even early adopter) usage. \n1. (almost not at all) For system administrators / potential service providers\n   interested in running their own multi-user data server.\n\nTo put it another way, due to a shortage of engineering resources, the\npriorities will be: Developer QoL (Quality of Life) over User QoL over DevOps QoL.\n\n### Roadmap\n\nThis is an experimental server focusing on interop exploration and rapid feature \niteration. \"Move fast and break things (and then fix them just as quickly)\", to \nuse a tired cliché.\n\n#### Roadmap Phase One (Complete)\n\nThis phase focused on general cleanup and refactoring from the source\n`node-solid-server` v4 baseline. (See [Phase One details](docs/roadmap.md#roadmap-phase-one-complete).)\n\n#### Roadmap Phase Two\n\nThis phase focuses on exploring some advanced features that may make it into\nSolid spec proposals, as well as integration with external Solid-adjacent\nprojects and specs.\n\n* [x] Fix/update Dockerfile\n* [ ] DID Integration\n    * [x] Generate a [`did:web`](https://github.com/w3c-ccg/did-method-web) DID\n      and corresponding keys for the Server itself, during installation.\n    * [x] Generate a [`did:web`](https://github.com/w3c-ccg/did-method-web) DID\n      and corresponding keys for each user on account registration.\n    * [ ] (in progress) Implement DIDAuth for wallet, hook it up to Login page.\n    * [ ] Add [`did:key`](https://github.com/digitalbazaar/did-method-key-js)\n        support\n    * [ ] Add [Veres One](https://github.com/w3c-ccg/didm-veres-one) DIDs support\n* [ ] Interop with Verifiable Credentials\n    * [x] Implement \n      [Credential Handler API Wallet](https://github.com/digitalbazaar/credential-handler-polyfill)\n      registration when user creates an account.\n* [ ] Implement an in-Memory based LDP backend, to go alongside the FS backend.\n* [ ] Integrate or implement Static OIDC Client Registration functionality,\n    to make interfacing with server-side Solid apps easier.\n* [ ] Investigate level of effort required to switch from the current `oidc-op`\n    OpenID Connect Provider library to a more widely supported one, such as\n    Filip's [`node-oidc-provider`](https://github.com/panva/node-oidc-provider)\n    lib.\n* [ ] Implement a server-side metadata mechanism, to support being able to\n    [record who created a resource](https://github.com/solid/specification/issues/66)\n* [ ] _(in progress)_ Experimental integration with \n    [CouchDB](http://docs.couchdb.org/en/latest/intro/)\n    (for synchronizing of graphs and documents to mobile and offline-first \n    clients).\n* [ ] Explore using an [Encrypted Data Vault](https://github.com/decentralized-identity/secure-data-store)\n    as a storage backend. This would require some basic Key Management capability,\n    possible based on the [Web KMS spec](http://w3c-ccg.github.io/webkms/).\n* [ ] Interop with the Fediverse by implementing [ActivityPub](https://activitypub.rocks/)\n    protocol.\n\n### Differences from Solid Server\n\nSince [`node-solid-server`](https://github.com/solid/node-solid-server) (NSS) is \nbeing deprecated in favor of [`inrupt/pod-server`](https://github.com/inrupt/pod-server),\nthis repo intends to be another compatible implementation (the more the merrier!).\n\n* Works on Windows 10 (WSL2)\n\n**Does not support:**\n\n* Using an external WebID on signup \n* `acl:origin` checking or Trusted Apps (uses [`solid-permissions`](https://github.com/interop-alliance/solid-permissions)  \n    instead of [`acl-check.js`](https://github.com/solid/acl-check) for access control)\n* `acl:trustedOrigin` (removed on purpose during refactoring)\n* Password strength checking on account signup.\n* Enforcement of storage space quotas\n* WebID-TLS local authentication\n* WebSockets\n* Globbing\n\n### Value Proposition for Developers\n\nSee [Solid and Life Server Value Proposition for Developers](docs/value-proposition.md) \ndoc.\n\n## Install\n\n### Pre-requisites: Node.js v14+\n\n* Linux, Mac OS X, or Windows 10\n* Node 14+\n\nTo run Life Server, you will first need to install\nNode.js. (The developers recommend using [`nvm`](https://github.com/creationix/nvm) \nto install Node.)\n\n### Install `life-server` from Github\n\n```bash\ngit clone https://github.com/interop-alliance/life-server.git\ncd life-server\nnpm install\n```\n\n### Edit `/etc/hosts` (development/testing only)\n\n`life-server`'s test suite uses the following localhost domains: `nic.localhost`, `tim.localhost`, and\n`nicola.localhost`. You will need to create host file entries for these, in\norder for the tests to pass.\n\nEdit your `/etc/hosts` file, and append:\n\n```\n# Used for unit testing\n127.0.0.1 nic.localhost\n127.0.0.1 tim.localhost\n127.0.0.1 nicola.localhost\n```\n\n### (Optional) Prepare the SSL/TLS certificate\n\n**Local/Development:** `life-server` includes a default `localhost` self-signed\nTLS certificate in the `config/` folder. Advanced users may want to create\ntheir own certificates for local testing.\n\n**Production:** Installing `life-server` in a production environment will\nrequire a valid TLS certificate (self-signed certs will not work). In addition,\nif you're running the server in Multi User mode, you will need a\n[Wildcard Certificate](https://en.wikipedia.org/wiki/Wildcard_certificate).\n\n### (Optional) Generate a config file\n\nThe easiest way to customize `life-server` is by running the `init` wizard.\nThis will create a `config.dev.js` in your current folder:\n\n```\n./bin/server init\n```\n\n## Usage\n\nTo run your server:\n\n```\n./bin/server start\n```\n\nAfter startup, the server is available at the configured server URL (by default,\n`https://localhost:7070`).\n\n## Usage with Docker\n\nSee [docs/Usage With Docker](docs/usage-docker.md) for details.\n\n## Security\n\nTBD\n\nNote: This is an experimental research server, not for production use.\n\n## Contribute\n\nLife Server is only possible because of a large community of \n[Solid contributors](https://github.com/solid/node-solid-server/blob/master/CONTRIBUTORS.md).\nA heartfelt thank you to everyone for all of your efforts!\n\n## License\n\n[The MIT License](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finterop-alliance%2Flife-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finterop-alliance%2Flife-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finterop-alliance%2Flife-server/lists"}