Skip to content
zefıly

Deploy

Go, Java, .NET, Ruby, Bun and Deno apps

Run apps on Go, Java, .NET, Ruby, Bun or Deno as managed services behind the web server, with limits sized from the server.

Apps on other runtimes run like Node.js and Python apps: a managed systemd service of the site's user on a local port, with the web server in front for the domain, HTTPS and static files.

1. Install the runtime

In the server's web stack, under Other runtimes, pick the runtime and its versions and Install:

Runtime Versions Where it comes from
Go 1.27, 1.26 go.dev release, checksum pinned
Java 25, 21 (LTS) Eclipse Temurin JDK, checksum pinned
.NET 10, 8 (LTS) Microsoft SDK, checksum pinned
Ruby the distribution's Debian/Ubuntu packages, with Bundler and build tools
Bun 1 Bun release, checksum pinned
Deno 2 Deno release, checksum pinned

Security releases arrive with agent updates, and running apps restart on the new version. Remove a version with its chip (×); that is refused while a site uses it.

2. Add the site

Add site and choose the runtime and version under Type. Zefily assigns a free local port.

3. Deploy the code

Set up a Git deploy on the site's Deploy pane with build commands and a Start command. The start command runs in the live release as the site user and must listen on 127.0.0.1:$PORT. For example:

Runtime Build commands Start command
Go go build -o app . ./app
Java ./mvnw -q package -DskipTests java -jar target/app.jar
.NET dotnet publish -c Release -o out dotnet out/App.dll
Ruby (Rails) bundle install, bin/rails assets:precompile bundle exec puma -b tcp://127.0.0.1:$PORT
Bun bun install --frozen-lockfile bun run start
Deno deno install deno task start

The process gets limits sized from its share of the server, so the app fits beside the others: Go GOMAXPROCS and GOMEMLIMIT; Java a heap ceiling (-Xmx) and processor count in JAVA_TOOL_OPTIONS, plus SERVER_PORT; .NET DOTNET_GCHeapHardLimit, DOTNET_PROCESSOR_COUNT and ASPNETCORE_URLS; Ruby RAILS_ENV=production and Bundler's deployment settings; Bun and Deno NODE_ENV=production. WEB_CONCURRENCY (worker processes) is set for every runtime. Builds run without toolchain downloads (GOTOOLCHAIN=local) or telemetry.

The app restarts on every deploy; if it does not answer after a deploy, the site switches back to the previous release. Configuration goes into the site's .env, and the app's output is on the Logs pane under App process.

Updated October 25, 2026 View as Markdown llms.txt

Still stuck?

Open a ticket from your panel or write to us; we answer within a day.

Contact →