Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Blobs

Single-owner web browser for S3-compatible blob storage. Built for Cloudflare R2 but works with any S3-compatible endpoint (AWS S3, MinIO, Backblaze B2, etc).

  • Single Go binary with embedded assets
  • Password authentication with session cookies
  • Lists every bucket the credentials can see
  • Folder/file navigation with breadcrumbs
  • Inline image thumbnails in folder view
  • File detail page with metadata, presigned download link, and optional static public URL
  • Upload (multi-file), replace, delete, and create folder actions
  • SQLite for session storage

Configure

Environment Variables

VariableDescriptionDefault
BLOBS_PASSWORDPassword for admin loginchangeme
BLOBS_DB_PATHSQLite database file pathblobs.sqlite
HOSTServer bind address127.0.0.1
PORTServer port3000
BLOBS_COOKIE_SECUREEnable HTTPS-only cookiesfalse
BLOBS_MAX_UPLOAD_MBSingle-shot upload cap in MB100
BLOBS_PRESIGN_TTL_SECONDSPresigned download URL lifetime in seconds3600
S3_ENDPOINTGeneric S3 endpoint (omit for R2 shortcut)(unset)
S3_REGIONS3 regionauto
S3_ACCESS_KEY_IDAccess key ID(unset)
S3_SECRET_ACCESS_KEYSecret access key(unset)
R2_ACCOUNT_IDCloudflare account ID (enables R2 endpoint shortcut)(unset)
R2_ACCESS_KEY_IDR2 access key ID (fallback for S3_ACCESS_KEY_ID)(unset)
R2_SECRET_ACCESS_KEYR2 secret access key (fallback for S3_SECRET_ACCESS_KEY)(unset)
BLOBS_PUBLIC_URLSPer-bucket public URL prefixes (bucket=url,bucket=url)(unset)

Pick one credential style: generic S3 (S3_ENDPOINT + S3_ACCESS_KEY_ID + S3_SECRET_ACCESS_KEY) or Cloudflare R2 (R2_ACCOUNT_ID + S3_ACCESS_KEY_ID + S3_SECRET_ACCESS_KEY). When a bucket appears in BLOBS_PUBLIC_URLS, the detail page surfaces a permanent public URL alongside the presigned link.

Deploy

Railway

The easiest way to deploy Blobs is with the one-click Railway template. See the Deploying with Railway guide for a walkthrough of the process. Blobs requires BLOBS_PASSWORD and either the S3_* or R2_* credentials to be set during the configure step.

Deploy on Railway

Docker

cd apps/blobs
cp .env.example .env
# Edit .env with your password and S3/R2 credentials
docker compose up -d

This will start Blobs on port 3000 with a persistent volume for the SQLite session database.

Binary

Install with Homebrew:

brew install stevedylandev/tap/blobs

Or grab a prebuilt binary from the releases page.

You can also build from source:

cd apps/blobs && go build .

The resulting binary is self-contained with all assets embedded. Copy it to your server with a configured .env file and run it directly.

Use

Log in at /login with your configured password. The buckets page lists every bucket your credentials can see. Click into a bucket to browse folders and files, upload new objects, replace or delete existing ones, and create folder markers. The file detail page surfaces metadata plus a presigned download URL (expires after BLOBS_PRESIGN_TTL_SECONDS) and, if configured via BLOBS_PUBLIC_URLS, a permanent public URL.