selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

shotsync logo

Self-host shotsync

v1.0.0

Image and text sync across devices via Cloudflare

ReleaseOpen SourceMIT
Updated10 hours ago
LanguageTypescript
Setup difficultyModerate
MobilePWA
Stars
210
Requires
Cloudflare R2, Cloudflare Workers
Install with Cloudflare Workers
ShotSync gallery view showing image and text items

What is shotsync?

shotsync is a self-hosted utility for sending screenshots, photos, and text snippets from one device and picking them up on another. It operates on Cloudflare's free tier using a Worker and R2 bucket. The interface is a Progressive Web App that runs in any browser without a native app. Images are transformed to JPEG and resized in the browser before upload. You can generate signed public links that expire after seven days to share individual items. Access is controlled by a single shared token. Files are automatically removed after 30 days through R2 lifecycle rules. Setup takes roughly five minutes with the Wrangler CLI. The default mode uses one token for the whole pool; a separate hosted beta adds per-user accounts with Supabase authentication.

Should you self-host shotsync?

shotsync scores 47/100 on selfhost.directory (how scoring works) and ranks #57 of 86 in File Sharing. It has 210 GitHub stars.

It shipped 1 stable release in the past year. The latest, v1.0.0, came out on 16 August 2026.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is DashBeam (70/100, 10 120 stars). It scores higher overall, so compare the two before you pick. See shotsync vs DashBeam side by side.

Features

  • 30-day auto-retention via R2 lifecycleLifecycle rule must be configured manually in R2 dashboard
  • Client-side HEIC→JPEG + thumbnail generation
  • Cross-device image + text pool
  • Per-item save/download + multi-select batch delete
  • Runs on Cloudflare free tier
  • Signed expiring share links
  • Single-token authentication

shotsync README

How to install shotsync

Install shotsync with Cloudflare Workers

Environment variables
AUTH_TOKEN (set via wrangler secret)

git clone https://github.com/Defiabell/shotsync cd shotsync npm install npx wrangler login

1. create the R2 bucket (name must match bucket_name in wrangler.toml)

npx wrangler r2 bucket create shotsync

2. set the shared access token — any long random string; you enter it on each device

openssl rand -hex 24 # generate one, copy it npx wrangler secret put AUTH_TOKEN --config wrangler.toml --env "" # paste it when prompted

3. deploy

npm run deploy

Requires Cloudflare account, Node.js 22+, R2 enabled, and workers.dev subdomain or custom domain

How to configure shotsync

  • AUTH_TOKENShared access token for the personal pool; any long random string generated by the deployer

    Shared access token for the personal pool; any long random string generated by the deployer

    values: any long random string (e.g., openssl rand -hex 24)

  • DEMO_MODEEnables read-only demo mode when set to "1"

    Enables read-only demo mode when set to "1"

    values: "1"

shotsync releases & version history

More in File Sharing

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…