{"id":19967599,"url":"https://github.com/ceramicstudio/did-demo","last_synced_at":"2025-07-19T22:41:12.352Z","repository":{"id":244828774,"uuid":"816386589","full_name":"ceramicstudio/did-demo","owner":"ceramicstudio","description":"A demo repository to illustrate the differences between your admin vs. node DID while using a Recon (Ceramic-One) configuration.","archived":false,"fork":false,"pushed_at":"2024-06-17T16:54:19.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-12T08:44:10.397Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceramicstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-17T16:34:37.000Z","updated_at":"2024-06-17T16:54:22.000Z","dependencies_parsed_at":"2024-06-17T18:56:51.747Z","dependency_job_id":"ea96a7f2-dd85-4bde-824e-a875dd68c59c","html_url":"https://github.com/ceramicstudio/did-demo","commit_stats":null,"previous_names":["ceramicstudio/did-demo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fdid-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fdid-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fdid-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceramicstudio%2Fdid-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceramicstudio","download_url":"https://codeload.github.com/ceramicstudio/did-demo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241404190,"owners_count":19957650,"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-11-13T02:42:50.207Z","updated_at":"2025-03-01T17:41:14.166Z","avatar_url":"https://github.com/ceramicstudio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Admin vs. Node DID Demo (using Recon)\nThis repository goes hand-in-hand with our YouTube video walk-through on the differences between your node DID (the identifier your node uses to authenticate to the anchor service) and your admin DID (used to authenticate to the Ceramic node itself for admin operations, including deploying models).\n\nThis demo uses the rust implementation of Ceramic.\n\nThe major themes we will cover are:\n\n1. Guided Ceramic node setup (using Ceramic-One, i.e. our Rust implementation)\n2. Where your admin DID vs node DID live in your server configurations\n3. How to access mainnet\n\n## Getting Started\n\nWe will be using this repository for the demo to automate some parts of the process. To get started:\n\n```bash\ngit clone https://github.com/ceramicstudio/did-demo \u0026\u0026 cd did-demo \u0026\u0026 npm install\n```\n\n## Node Setup\nThis workshop will use our [rust-ceramic](https://github.com/ceramicnetwork/rust-ceramic) implementation\n\nYou can find our external Rust-Ceramic instructions [here](https://threebox.notion.site/Ceramic-Recon-instructions-EXTERNAL-c2b93b2648d64cf0af0f4d2489d20399).\n\nAssuming we will all be operating on macs, open a new terminal and:\n\n1. Install nvm (if not already installed)\n\n```bash\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash\n```\n\n2. Select node v20:\n\n```bash\nnvm install v20\nnvm use 20\n```\n\n3. Install js-ceramic (with nighly builds):\n\n```bash\nnpm install --location=global @ceramicnetwork/cli@nightly\n```\n\n4. Download Rust-Ceramic from binary distribution:\n\n#### MacOS\n\n```bash\ncurl -LO https://github.com/ceramicnetwork/rust-ceramic/releases/download/v0.13.0/ceramic-one_aarch64-apple-darwin.tar.gz\ntar zxvf ceramic-one_aarch64-apple-darwin.tar.gz\n```\n\nOpen Finder, double click the `ceramic-one.pkg` file to start the install\n\n After installation, copy the binary:\n\n```bash\nsudo cp /Applications/ceramic-one /usr/local/bin/\n```\n\n#### Linux\n\n```bash\ncurl -LO https://github.com/ceramicnetwork/rust-ceramic/releases/download/v0.13.0/ceramic-one_x86_64-unknown-linux-gnu.tar.gz\ntar zxvf ceramic-one_x86_64-unknown-linux-gnu.tar.gz\ndpkg -i ceramic-one.deb\n```\n\n5. Generate your server configuration and admin/node DID credentials:\n\n```bash\nnpm run generate\n```\n\nThis uses the [commands script](commands.mjs) I've created for you to set up your server configuration found at daemon.config.json, as well as two txt files containing credentials we'll use later on.\n\n6. Start up a Postgres instance in Docker (needed when accessing mainnet):\n\n```bash\nnpm run postgres\n```\n\n7. Start Ceramic-One (the Rust implementation) first before your js-Ceramic process:\n\n```bash\nnpm run ceramic-one\n```\n\n8. Verify your email address and register your node did (found in node_did.txt) so your js-Ceramic process can access the anchor service:\n\n```bash\n# a. Verifying email address\ncurl --request POST \\\n  --url https://cas.3boxlabs.com/api/v0/auth/verification \\\n  --header 'Content-Type: application/json' \\\n  --data '{\"email\": \"youremailaddress\"}'\n\n# b. Registering your node DID\ncurl --request POST \\\n  --url https://cas.3boxlabs.com/api/v0/auth/did \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"email\": \"youremailaddress\",\n\t  \"otp\": \"youronetimepasscode\",\n\t  \"dids\": [\n\t\t  \"yourdid\"\n\t  ]\n  }'\n```\n\n9. Finally, you can start your js-Ceramic process:\n\n```bash\nnpm run ceramic\n```\n\n10. In a new terminal, store the value found in admin_seed.txt in an environment variable (this is the same seed that instatiated the did:key found in the admin-dids array in your server configuration).\n\n```bash\nread -s DID_PRIVATE_KEY #paste in the key from the previous command and hit enter\nexport DID_PRIVATE_KEY\n```\n\nCheck to make sure your admin seed has been saved in that terminal instance as an environment variable:\n\n```bash\nprintenv DID_PRIVATE_KEY\n```\n\n11. Finally, you can deploy your composites onto your node: \n\n```bash\ncomposedb composite:deploy composites.json\n```\n\n## Learn More\n\nTo learn more about Ceramic please visit the following links\n\n- [Ceramic Documentation](https://developers.ceramic.network/learn/welcome/) - Learn more about the Ceramic Ecosystem.\n\nYou can check out the [Create Ceramic App repo](https://github.com/ceramicstudio/create-ceramic-app) and provide us with your feedback or contributions!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceramicstudio%2Fdid-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceramicstudio%2Fdid-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceramicstudio%2Fdid-demo/lists"}