{"id":21606030,"url":"https://github.com/codekitchen/peerbin","last_synced_at":"2025-08-03T18:34:30.022Z","repository":{"id":43618016,"uuid":"71599966","full_name":"codekitchen/peerbin","owner":"codekitchen","description":"peer-to-peer secret sharing using WebRTC","archived":false,"fork":false,"pushed_at":"2016-10-21T22:25:25.000Z","size":396,"stargazers_count":0,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T14:49:07.365Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/codekitchen.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}},"created_at":"2016-10-21T21:58:16.000Z","updated_at":"2017-05-05T04:14:11.000Z","dependencies_parsed_at":"2022-07-13T12:40:49.289Z","dependency_job_id":null,"html_url":"https://github.com/codekitchen/peerbin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codekitchen/peerbin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fpeerbin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fpeerbin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fpeerbin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fpeerbin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codekitchen","download_url":"https://codeload.github.com/codekitchen/peerbin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codekitchen%2Fpeerbin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260629492,"owners_count":23038939,"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-24T20:18:38.735Z","updated_at":"2025-06-18T20:33:44.466Z","avatar_url":"https://github.com/codekitchen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# peerbin\n\n![peerbin screenshot](screenshot.png)\n\nPeerbin is a tiny web app for sharing secrets, such as private keys and\npasswords (but it could be anything, of course). Peerbin uses WebRTC to connect\nthe source and destination browsers directly together over an encrypted\npeer-to-peer connection, so that the secret is never seen by the server, not\neven in encrypted form.\n\nIn order for the browsers to find each other, they'll need to learn each others\npublic IP addresses. WebRTC uses standard STUN techniques to do this, and\nPeerbin runs a small websocket server to facilitate browsers finding and\nconnecting to each other. Once the browsers have established their P2P\nconnection, there is no further communication through the server.\n\nMost modern browsers support WebRTC, but one glaring exception is Safari, which\nmeans Peerbin does not work on iOS. Supposedly they are working on it.\n\n## Running\n\nI'm not running a publicly available Peerbin server, at least not at the moment.\nTo use Peerbin, you'll need to run your own instance of it. It is a tiny node.js\napplication with some static front-end content.\n\nIt is strongly recommended that you serve Peerbin over HTTPS, so that the\nwebsocket communication is encrypted and the connection UUID is not exposed.\n\n### Running in Docker\n\nThe easiest way to run Peerbin is to just build and run the provided Dockerfile.\n\n```bash\ndocker build -t peerbin .\ndocker run --rm -p 80:8080 peerbin\n```\n\nThe docker image runs the server on port 80, which you can map to any external\nport you want.\n\n### Manual Setup\n\n```bash\nnpm install\n./node_modules/.bin/webpack\nnode app.js\n```\n\n## Rationale\n\nPeerbin was written as a proof-of-concept to learn more about WebRTC. There's an\nargument for this being even more secure than projects such as\n[ZeroBin](https://zerobin.net), which use client-side encryption so that the\nserver only ever sees the encrypted data. But, I think in the end, if you can't\ntrust the server then you really shouldn't be using it to share sensitive\ninformation, even if it claims to never see the data. So I'm not sure there's a\ncompelling reason to choose Peerbin over ZeroBin, other than perhaps it just\nbeing easier to run and scale, since there is no data store.\n\n## Contributing\n\n1. Create an issue and describe your idea\n2. [Fork it] (https://github.com/codekitchen/peerbin/fork)\n3. Create your feature branch (`git checkout -b my-new-feature`)\n4. Commit your changes (`git commit -am 'Add some feature'`)\n5. Publish the branch (`git push origin my-new-feature`)\n6. Create a new Pull Request\n7. Profit! :white_check_mark:\n\n## License\n\nPeerbin is released under the [MIT License](http://www.opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodekitchen%2Fpeerbin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodekitchen%2Fpeerbin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodekitchen%2Fpeerbin/lists"}