[BREAKGLASS] An implementation of the TUS server protocol for resumable uploads
Go to file
2026-01-20 10:36:36 -06:00
.github Bump actions/setup-node from 5.0.0 to 6.1.0 2026-01-20 11:12:07 -05:00
e2e Remove miniflare test environment 2025-07-11 11:42:58 -05:00
src Don't retry DO operations with a body 2026-01-20 11:32:07 -05:00
.gitignore Squahsed history 2023-07-20 16:24:41 -05:00
.nvmrc Update dependencies 2025-09-17 10:18:08 -07:00
eslint.config.mjs dependency updates 2025-02-14 13:23:41 -06:00
LICENSE Squahsed history 2023-07-20 16:24:41 -05:00
package-lock.json Update package version to 0.12.0 2026-01-20 10:36:36 -06:00
package.json Update package version to 0.12.0 2026-01-20 10:36:36 -06:00
README.md Update README.md 2025-02-13 17:04:41 -06:00
tsconfig.json Fix exception when signature is missing 2024-11-06 15:42:59 -06:00
vitest.config.ts Remove deprecated vitest.workspace configuration 2025-07-11 11:42:58 -05:00
wrangler.toml Add new DO class to v2 migration 2023-10-02 17:47:51 -05:00

TUS Server

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,

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>

Contributing bug reports

We use GitHub for bug tracking. Security issues should be sent to security@signal.org.

Help

We cannot provide direct technical support. Get help running this software in your own environment in our unofficial community forum.

License

Copyright 2023 Signal Messenger, LLC

Licensed under the AGPLv3