Four git hosts
Connect GitHub, GitLab, Bitbucket or Gitea. A push triggers a build, and traffic moves to the new version once its readiness probe passes.
Use case: Git deploys
Levelrail builds a Next.js or Node app from your Dockerfile on every git push and runs it on a server you own. The new version takes traffic only after its readiness probe passes, and earlier images stay pinned for rollback. Coming from Vercel? Here is how the two compare.
curl -fsSL https://levelrail.com/install.sh | sudo sh
How it works
What you get
Connect GitHub, GitLab, Bitbucket or Gitea. A push triggers a build, and traffic moves to the new version once its readiness probe passes.
Each pull request gets its own preview environment. Stable on GitHub, beta on GitLab and Bitbucket.
Environment variables are encrypted per app. Set environment variables such as NEXT_PUBLIC_* before the build, since Next.js inlines them at build time.
Add Postgres or Redis as a managed resource beside the app, with scheduled backups. Databases with backups covers how those get checked.
Roll back to a pinned earlier image with one command. The older version must pass its health checks before it takes traffic again. More on how deploys work.
In the product
Get started
Run the install command on a Linux server.
Add a Dockerfile to the repository, then connect it from the dashboard and pick a git host, build pack and deploy trigger.
Set your environment variables, add a domain and push.
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci
FROM node:20-alpine AS build
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
FROM node:20-alpine AS run
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/.next/standalone ./
COPY --from=build /app/.next/static ./.next/static
COPY --from=build /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"] A generic multi-stage Next.js standalone build. It assumes output: 'standalone' in next.config. Next.js inlines NEXT_PUBLIC_* values at build time, so set them before the build.
Go deeper
Scope and maturity, stated plainly so you can plan around them.
Maturity differs by feature. Feature status lists what is stable, beta or behind a flag, with the evidence for each.
FAQ
Install Levelrail on a Linux server, add a Dockerfile to your repository and connect it. Every push then builds the image and deploys it. Use output: 'standalone' in next.config, as in the example above.
No. The app runs as a plain container, so features that depend on a managed edge network, such as an edge runtime or built-in image optimization, are not provided. Put a CDN in front if you want edge caching.
Yes. Pull requests get their own preview environment on GitHub (stable) and on GitLab and Bitbucket (beta). Set an apps base domain for clean preview URLs.
Run the rollback command and Levelrail switches back to a pinned earlier image once it passes health and readiness checks. Every deploy is listed with its status and logs on the deploy history page.
One command installs the control plane. Apache 2.0, no license key and no paid tier.
curl -fsSL https://levelrail.com/install.sh | sudo sh