Hosting providers
Set up Fly.io, Cloudflare, Neon and Upstash so published apps can run off their sandbox.
Set up Fly.io, Cloudflare, Neon and Upstash so published apps can run off their sandbox.
Hosting deploys published apps to outside providers so they run on their own. Admins set up the install’s accounts in Settings → Hosting. Each organization can also connect its own accounts in Settings → Organization, which are used instead of the install’s.
Each provider does one job:
| Provider | Used for |
|---|---|
| Fly.io | Apps with a server (one machine each, asleep when idle), and volumes for data on disk |
| Cloudflare | Front ends (Workers static assets), R2 buckets for apps that use S3, and continuous SQLite backups |
| Neon | Postgres, one Neon project per app |
| Upstash | Redis, one database per app |
Hosting is offered once Fly.io or Cloudflare is turned on. An app that needs a service whose provider isn’t set up fails to deploy and says which one is missing.
SANDBOX_SNAPSHOT_DISK is S3-compatible (S3, R2, MinIO), releases go there. Otherwise, such as on a laptop, OneDrop makes an onedrop-releases R2 bucket in your Cloudflare account the first time, so turn Cloudflare on. See Project snapshots.ghcr.io/onedrop-io/onedrop-sandbox:latest, is public. A locally built onedrop-sandbox image isn’t reachable by Fly.io.APP_URL. On a laptop it can’t, and the log only shows OneDrop’s own steps.Keys are stored encrypted and never shown again. Leave a key blank to keep the saved one. Settings saved here win over .env, and queue workers pick them up without a restart.
.onedrop/build, packs its files, and uploads them to release storage through signed links. Provider keys never reach the sandbox.Fly snapshots volumes daily and keeps 14 days of snapshots.
| Variable | Default | Description |
|---|---|---|
HOSTING_FLY_ENABLED | false | Turn Fly.io on. |
FLY_API_TOKEN | empty | Fly.io organization token. |
FLY_ORG | personal | Fly.io organization slug. |
FLY_REGION | iad | Where apps and volumes go. |
FLY_MEMORY_MB | 1024 | Memory per hosted app. |
FLY_VOLUME_GB | 1 | Size of each app’s volume. |
HOSTING_BASE_IMAGE | ghcr.io/onedrop-io/onedrop-sandbox:latest | Image hosted apps run on. |
HOSTING_CLOUDFLARE_ENABLED | false | Turn Cloudflare on. |
CLOUDFLARE_ACCOUNT_ID | empty | Cloudflare account ID. |
CLOUDFLARE_API_TOKEN | empty | Cloudflare API token (permissions above). |
HOSTING_NEON_ENABLED | false | Turn Neon on. |
NEON_API_KEY | empty | Neon API key. |
NEON_ORG_ID | empty | Neon organization ID, for organization API keys. |
NEON_REGION | aws-us-east-1 | Where databases go. |
HOSTING_UPSTASH_ENABLED | false | Turn Upstash on. |
UPSTASH_EMAIL | empty | Upstash account email. |
UPSTASH_API_KEY | empty | Upstash Developer API key. |
UPSTASH_REGION | us-east-1 | Where Redis databases go. |
HOSTING_CRANE_VERSION | v0.20.6 | crane version the builder downloads. |
HOSTING_LITESTREAM_VERSION | v0.3.13 | Litestream version hosted apps download for SQLite backups. |