* feat: add Vercel deployment target (Node runtime + Turso) Adds first-class Vercel support: server/entry-vercel.ts using hono/vercel handler, deploy/vercel/vercel.json with nodejs22.x function config and SPA rewrites, build:vercel npm script producing api/entry-vercel.js + dist/, deploy-vercel GitHub Actions workflow (8-step: secrets check, tag resolve, checkout, install, migrate, build, link, deploy), and docs/deploy/vercel.md documenting secrets, quick-start, local dev, and pricing notes. Edge runtime is explicitly not used — @aws-sdk/client-s3 requires Node APIs. Agent-Profile: https://agent-kanban.dev/agents/a6bb038c4226a87f * fix: auto-generate BETTER_AUTH_SECRET on first Vercel deploy Remove BETTER_AUTH_SECRET from the required secrets check. Add a dedicated step that detects whether the secret already exists in the Vercel project env via `vercel env ls production`, then either upserts the user-supplied GitHub secret, auto-generates one with openssl on first deploy, or skips if already present. Auto-generation case appends a backup warning to GITHUB_STEP_SUMMARY. Docs move BETTER_AUTH_SECRET to Optional Secrets with a note about the auto-gen behaviour. Matches the existing CF Workers deploy.yml pattern (step 8 contract). Agent-Profile: https://agent-kanban.dev/agents/a6bb038c4226a87f --------- Co-authored-by: Bob <aibob@mails.agent-kanban.dev>
ZPan
The open-source, S3-native file hosting platform.
Image bed, file sharing, and backup — powered by S3, deployed anywhere.
What is ZPan?
ZPan is a lightweight file hosting platform built on top of S3-compatible storage. Files upload directly from the client to S3, bypassing server bandwidth entirely.
Three scenarios, one platform:
- Image Bed — Upload via PicGo / ShareX / API, get a URL instantly
- File Sharing — Upload files, generate share links, distribute to anyone
- File Backup — CLI agent syncs local directories to S3/R2
Deploy
Cloudflare Workers (Recommended)
Deploy via GitHub Actions with zero server management. Free tier covers personal use.
- Fork this repository
- In your fork, go to Settings → Secrets and variables → Actions and add:
CLOUDFLARE_ACCOUNT_ID— found on the Cloudflare dashboard sidebarCLOUDFLARE_API_TOKEN— create one here with Workers Scripts:Edit and D1:Edit permissions
- Go to the Actions tab, select Deploy to Cloudflare Workers, and click Run workflow
After initial setup, the workflow runs automatically every time you sync your fork with the latest release.
Docker
Quick start — pull the pre-built image and bring your own S3 storage:
curl -O https://raw.githubusercontent.com/saltbo/zpan/master/deploy/docker-compose.yml
docker compose up -d
With RustFS (self-hosted S3-compatible storage, no external dependencies):
curl -O https://raw.githubusercontent.com/saltbo/zpan/master/deploy/docker-compose.rustfs.yml
docker compose -f docker-compose.rustfs.yml up -d
After startup:
- Open the RustFS console at
http://localhost:9001(admin / admin123) and create a bucket (e.g.zpan-bucket) - Open ZPan at
http://localhost:8222, register a user (first user gets admin role) - Go to Admin → Storage and add the RustFS storage:
- Endpoint:
http://localhost:9000(must be reachable from your browser, not the Docker internal hostname) - Bucket: the bucket name you created in step 1
- Region:
us-east-1 - Access Key / Secret Key:
admin/admin123
- Endpoint:
Important: The storage endpoint must be accessible from the client browser, since files upload directly to S3 via presigned URLs. Use
http://localhost:9000for local development, or your server's public URL for production.
Documentation
Why ZPan?
- Zero bandwidth bottleneck — files transfer directly between client and S3
- Zero ops option — deploy to Cloudflare Workers for free, no server needed
- Self-host friendly — Docker deployment with any S3-compatible storage
- Tool ecosystem — works with PicGo, ShareX, Flameshot out of the box
- Open source — free forever for self-hosted users
v1
Looking for ZPan v1 (Go version)? See the v1 branch.
Contributing
See CONTRIBUTING.md for details.
Thank you to all the people who contributed to ZPan!
License
ZPan is under the GPL 3.0 license. See the LICENSE file for details.