Quickstart
The fastest path from nothing to a live Egg. Connect a repo, pick a size and region, lay the Egg, and watch it hatch on HTTPS, often in around 90 seconds.
This is the short version. You will sign up, point Ruust at a Git repo (or a ready-made demo), choose a size and a region, and lay your first Egg. Ruust builds it, it incubates, then it hatches on a live HTTPS URL. That is a soft estimate, not a guarantee: demos and cached rebuilds are faster, whilst a first-time repo build depends on how long the dependency install takes, but many first deploys are up in around 90 seconds.
Deploy it
- Sign up at ruust.run and open the dashboard.
- Choose New Egg. Connect a Git repo, or pick one of the ready-made demos if you just want to see it work.
- Pick a size (vCPU and RAM, sized freely) and a region: London (
eu-west) or Virginia (us-east). - Lay the Egg. Ruust builds your repo, the Egg incubates, then it hatches on
https://<name>.<region>.ruust.run.
Ruust builds the repo with Nixpacks, which auto-detects the stack from the files it finds. If your repo has a Dockerfile, Ruust builds that instead. Either way, the output is a container image that runs as your Egg.
The port
One rule decides whether your Egg hatches: Ruust sets a PORT environment variable, and your app must listen on it, bound to 0.0.0.0 (not localhost). Binding to the wrong address is the top reason an Egg builds but never hatches, because traffic from outside the container cannot reach a server that is only listening locally.
const port = process.env.PORT || 3000;
app.listen(port, '0.0.0.0', () => {
console.log('listening on ' + port);
});If you need to pin the start command yourself, add a Procfile at the repo root with a web: line. The Nixpacks build honours that line and bakes it into the image, so it is ignored when you supply your own Dockerfile.
web: node server.jsEnvironment variables
Add a custom domain
A web or game Egg gets a <slug>.<region>.ruust.run URL for free, ready the moment it hatches. To use your own domain, add it in the Egg's Domains tab, point the DNS record shown at your registrar, and Ruust issues and renews the TLS certificate automatically. No cron, no manual renewals. A database Egg or Vault is private (reached by its Coop siblings on an internal hostname), so it has no public URL and no Domains tab.
Where next
- How builds work: what happens between a git push and a live Egg.
- The framework guides in the sidebar: real commands and file names for Next.js, Django, Rails, Go and more.
- Custom domains, regions and private networking when you are ready to grow a Coop.