[BREAKGLASS] An implementation of the TUS server protocol for resumable uploads
Go to file
2023-10-02 17:47:51 -05:00
.github/workflows update branch in workflow trigger 2023-07-31 16:11:17 -05:00
src Implement auth for backup bucket 2023-10-02 17:04:25 -05:00
.eslintrc.json Squahsed history 2023-07-20 16:24:41 -05:00
.gitignore Squahsed history 2023-07-20 16:24:41 -05:00
.nvmrc Squahsed history 2023-07-20 16:24:41 -05:00
LICENSE Squahsed history 2023-07-20 16:24:41 -05:00
package-lock.json update wrangler version to 3.x, also npm update 2023-07-31 16:11:17 -05:00
package.json update wrangler version to 3.x, also npm update 2023-07-31 16:11:17 -05:00
README.md Squahsed history 2023-07-20 16:24:41 -05:00
tsconfig.json Squahsed history 2023-07-20 16:24:41 -05:00
vitest.config.ts Add backup bucket and durable object 2023-10-02 16:59:43 -05:00
wrangler.toml Add new DO class to v2 migration 2023-10-02 17:47:51 -05:00

Overview

tus-server provides an implementation of the TUS protocol for resumable uploads built on cloudflare workers and R2.

Building

You'll need Node.js. If you use nvm run

nvm use

To install dependencies,

npm install

In order to deploy to cloudflare or use non-local dev mode, use the wrangler utility. Follow those instructions to authenticate with your cloudflare account.

Testing

The server assumes an authentication is provided via a signature using a shared secret. You can provide one for development by setting SHARED_AUTH_SECRET in .dev.vars, e.g.

> cat .dev.vars
SHARED_AUTH_SECRET = "test"

To run a dev server you can interact with over localhost

wrangler dev

To run unit tests,

NODE_OPTIONS=--experimental-vm-modules npm test

Deploying

One time setup

  1. Create an R2 bucket and update the binding in wrangler.toml
  2. Add a base64 encoded shared auth secret with wrangler secret put SHARED_AUTH_SECRET
wrangler deploy -e <staging|production>

License

Copyright 2023 Signal Messenger, LLC

Licensed under the AGPLv3