APP_REPO= FROM_URL= CLOUDFLARE_ACCOUNT_ID= CLOUDFLARE_API_TOKEN= CELLD_BUCKET= S3_ENDPOINT= AWS_REGION= AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= Set up Durable Objects from Cloudflare on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/migrate-durable-objects.md from top to bottom. The values at the top of this message are mine: - APP_REPO: your Worker's Git repository; for a private GitHub repository, connect the [GitHub integration](/docs/integrations-github) first - FROM_URL: where the Worker answers on Cloudflare; its `workers.dev` address is best, because it stays put when your domain moves - CLOUDFLARE_ACCOUNT_ID: the account that runs the Worker - CLOUDFLARE_API_TOKEN: an API token from the **Edit Cloudflare Workers** template - CELLD_BUCKET: an empty bucket for celld, written `s3://name` ([how](/deploy/celld#get-a-bucket)) - S3_ENDPOINT: R2: `https://.r2.cloudflarestorage.com`; Amazon S3: leave empty - AWS_REGION: `auto` for R2 and Tigris; the bucket's region for Amazon S3 - AWS_ACCESS_KEY_ID: a key that can read and write that bucket, and nothing else - AWS_SECRET_ACCESS_KEY: the key's secret Ask me for any that still say before you need them. The recipe's example VM name is my-worker. This VM's name is the output of `hostname`: use it wherever the recipe writes my-worker. Skip the step that creates the VM; you are on it. You are done when all of these are true. Check each one yourself: - Your Worker running on celld at `https://.exe.xyz/`, private, with its state in your bucket. - Every Durable Object with data on Cloudflare exported to `~/migration` and imported into celld. - Each imported object checked identical to its export from Cloudflare. - A report of what moved, which objects had no name, and anything celld can't run. - Cloudflare serving as before, plus a token-protected export route. Read the whole recipe, including the closed details, and do "Prepare the move by hand" in order, skipping VM creation; the walkthrough above it is for the owner. Where it names steps of the celld recipe, follow /deploy/celld.md on this site. Ask the owner before deploying anything to Cloudflare. Never freeze the Worker, change DNS, run share set-public, or delete anything on Cloudflare: making the move is the owner's call. Keep the tokens and bucket keys out of your replies and out of Git; celld.json holds secrets, so make sure Git ignores it. If the Worker uses something celld lacks, stop and report it rather than rewriting the app. Before exporting a class that is addressed by name, ask the owner where its names are recorded. Finish with the dry run's numbers per binding (by name, by id only), https://.exe.xyz/, and the owner's steps in "Make the move". Finish with the URLs I should open.