Ten minutes, four steps, no tooling required. You will need a Vercel account (to read your settings), a git provider (GitHub, GitLab, Bitbucket, or Codeberg), and access to your domain registrar.
Sign up at orkestr.eu/register. The Starter plan is free, no card required, enough to test one project end-to-end.
In Settings → Connections, click Connect on the git provider that hosts your repo. We support GitHub, GitLab, Bitbucket, and Codeberg. The OAuth flow asks for read access to your repos and a webhook so we can auto-deploy on push.
Click New project, pick the same repo your Vercel project points to, and pick the production branch (usually main). orkestr auto-detects your framework and generates a Dockerfile.
orkestr does not have separate fields for build command, install command, output directory, or Node version. The model is simpler: if the auto-generated Dockerfile fits your app, you do nothing. If it does not, you commit your own Dockerfile and we honor it as-is.
Here is how your Vercel settings map across:
RUN step. We detect has_dockerfile automatically and skip generation.cd into that subfolder before building. This is the only build-related field in our UI.package.json engines field, or your Dockerfile FROM line if you committed one. No separate version selector.You can find your Vercel build settings at Settings → Build & Development Settings and Settings → General → Root Directory, but most of them do not need to come across.
In Vercel, open Settings → Environment Variables. You will see two kinds:
In orkestr, open your new project, go to the production environment, and paste each KEY=value pair. You can paste a whole .env-style block at once. Every var is encrypted at rest and injected at container start. There is no separate "sensitive" tier to opt into, and no values that hide themselves from you the moment you save them.
Heads-up on Vercel storage env vars: if your project uses Vercel KV, Postgres, or Blob, the connection strings (KV_REST_API_URL, POSTGRES_URL, BLOB_READ_WRITE_TOKEN, etc.) point at Vercel-hosted services. Those services do not run on orkestr. Either keep using them externally during the cutover, swap to an orkestr Postgres / Redis add-on, or move to an S3-compatible blob provider. Migrating the data itself is your call, on your timeline.
Trigger a deploy. Watch the live logs. Within a minute or two you should have a working app at your-project.orkestr.run.
Once you are happy with the orkestr deploy, add your custom domain under Domains on the project. We give you the DNS records to set at your registrar (typically a CNAME to your orkestr.run subdomain, or A records if your DNS provider does not support CNAME on apex).
Vercel keeps serving your old domain until DNS propagates to orkestr. There is no downtime if you do this in order: deploy first, verify, then move DNS.
When DNS is live and you have watched real traffic hit orkestr for a day or two, cancel the Vercel project. We do not touch it, you cancel it from your Vercel dashboard.
PORT at runtime; make sure your server reads it.Starter is free. Deploy one project. See whether the bill and the latency add up.
Create an account