https://github.com/ssbc/ssb-serve-blobs
Sbot plugin to serve blobs from a local http server
https://github.com/ssbc/ssb-serve-blobs
Last synced: 12 months ago
JSON representation
Sbot plugin to serve blobs from a local http server
- Host: GitHub
- URL: https://github.com/ssbc/ssb-serve-blobs
- Owner: ssbc
- License: mit
- Created: 2018-02-15T20:08:28.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-07-12T21:18:28.000Z (almost 3 years ago)
- Last Synced: 2025-06-09T15:48:02.796Z (about 1 year ago)
- Language: JavaScript
- Size: 55.7 KB
- Stars: 9
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ssb-serve-blobs
Scuttlebot plugin to serve blobs from a local http server on port 26835.
Note also this remark plugin for modifying markdown to link to the server: [remark-images-to-ssb-serve-blobs](https://gitlab.com/staltz/remark-images-to-ssb-serve-blobs)
## Installation
Requires ssb-blobs plugin.
```diff
const createSbot = require('scuttlebot/index')
.use(require('scuttlebot/plugins/plugins'))
.use(require('scuttlebot/plugins/master'))
.use(require('scuttlebot/plugins/gossip'))
.use(require('scuttlebot/plugins/replicate'))
.use(require('ssb-friends'))
+ .use(require('ssb-blobs'))
.use(require('ssb-backlinks'))
.use(require('ssb-private'))
.use(require('ssb-about'))
.use(require('ssb-query'))
+ .use(require('ssb-serve-blobs'))
.use(require('scuttlebot/plugins/invite'))
.use(require('scuttlebot/plugins/block'))
.use(require('scuttlebot/plugins/local'))
```
## Usage
```js
const Stack = require('secret-stack')
const caps = require('ssb-caps')
const stack = Stack({ caps })
.use(require('ssb-db'))
.use(require('ssb-blobs')) // << required
.use(require('ssb-serve-blobs')) // needs: blobs
const config = {
// See ssb-config for other needed config
serveBlobs: {
// Enable CORS
cors: true,
// Content Security Policy (default: 'default-src none; sandbox')
csp: "default-src 'self';",
// Port to serve blobs from (default: 26835)
port: 3921,
},
};
const server = stack(config)
```
## Utils
```js
const toUrl = require('ssb-serve-blobs/id-to-url')
const blobId = '&d8kM9RXf5zvvy+AzlQ//JbCF0AEJelTl6m03u3dVVj4=.sha256'
const unboxKey = 'uU0nuZNNPgilLlLX2n2r+sSE7+N6U4DukIj3rOLvzek='
console.log(toUrl(blobId))
// http://localhost:26835/get/%26d8kM9RXf5zvvy%2BAzlQ%2F%2FJbCF0AEJelTl6m03u3dVVj4%3D.sha256
console.log(toUrl(blobId, {unbox: unboxKey}))
// http://localhost:26835/get/%26d8kM9RXf5zvvy%2BAzlQ%2F%2FJbCF0AEJelTl6m03u3dVVj4%3D.sha256?unbox=uU0nuZNNPgilLlLX2n2r%2BsSE7%2BN6U4DukIj3rOLvzek%3D
console.log(toUrl(blobId, {port: 6000}))
// http://localhost:6000/get/%26d8kM9RXf5zvvy%2BAzlQ%2F%2FJbCF0AEJelTl6m03u3dVVj4%3D.sha256
```
```js
const fromUrl = require('ssb-serve-blobs/url-to-id')
console.log(fromUrl('http://localhost:26835/get/%26Pe5kTo%2FV%2Fw4MToasp1IuyMrMcCkQwDOdyzbyD5fy4ac%3D.sha256'))
// &Pe5kTo/V/w4MToasp1IuyMrMcCkQwDOdyzbyD5fy4ac=.sha256
console.log(fromUrl('http://localhost:12345/get/%26Pe5kTo%2FV%2Fw4MToasp1IuyMrMcCkQwDOdyzbyD5fy4ac%3D.sha256', {port: 12345}))
// &Pe5kTo/V/w4MToasp1IuyMrMcCkQwDOdyzbyD5fy4ac=.sha256
```
## License
MIT