Skip to main content

Running extra labs

This page shows how to run more than one lab from the same template. You normally get one lab of each type. When a template allows it, you can run extra copies — separate machines from the same environment, each with its own address, settings and lifecycle.

Use them to keep a stable setup untouched while you experiment, to run one lab per project, or to give each of several apps its own machine.

Create a copy​

Open the lab, go to its Deployments tab and select Deploy a copy.

Shown on labs.selfmade.ninja, the Selfmade Ninja Academy platform. On your own platform you will see your own domain and data.
FieldNotes
NameHow you recognize it in your list, up to 60 characters
Run as userThe user name inside this copy, up to 32 characters, lowercase, not root
Isolated storageGives this copy its own home directory instead of the shared one
Install all my SSH keysInstalls all your SSH keys, or you can pick specific keys

Copies count against your running-labs limit like any other lab.

Run as user only appears for labs where it makes a difference. Install all my SSH keys only appears for labs you can reach over SSH; turn it off to pick specific keys, and the copy is then pinned to those — keys you add to your account later are not installed in it.

The dialog has two buttons:

ButtonWhat happens
Create & deployCreates the copy, then opens Configure & deploy with the full settings form — address, domains, HTTP proxies. Select Confirm Deploy to start it, or Deploy later.
Create copySaves the copy without deploying it. Select Deploy on its row when you are ready.

A copy you do not name is called after the lab and its slot number, for example Ubuntu #2. Rename it at any time — from the row's menu, or the pencil next to its name on its own dashboard — up to 60 characters.

Slots and limits​

Each copy takes a numbered slot. A new copy gets the lowest free number, so terminating copy #2 and creating another gives you a new #2 — with fresh settings, not the old one's.

The number of copies you can have equals your running-labs limit — 2 on the free plan and 4 on a paid plan, unless your administrator set something different for you. Unlike the running limit:

  • stopped copies count — only terminating one frees its slot
  • copies of every lab count together, not per lab
  • a lab deployed from a template someone made (including you) counts as a copy

When you are at the limit, Deploy a copy shows Copy limit reached (N of M). Terminate a copy to deploy a new one.

Plans that do not include copies

For some labs your plan may not include new copies. The Deployments tab then says Deploying new copies isn't included in your plan for this lab — existing copies stay fully manageable, and hides Deploy a copy, Scale and Duplicate. You can still stop, redeploy, terminate and restore the copies you have.

The Deployments tab​

Every copy of this lab — yours, and ones your organizations own — is listed here, with a search box, a Running / Paused / Stopped filter and a list or card view. Each row shows the copy's name, status, address and live load. Stop, Redeploy (or Deploy) and Resume sit on the row; the rest are in its More actions menu:

In More actionsDoes
Open Code ServerOpens the browser editor
Connection infoSSH command, credentials, domains
PauseFreezes this copy only
RenameUp to 60 characters
DuplicateSee below
ShareShare this one copy
TerminateDestroys this copy — see below

What you see depends on your role — a copy someone shared with you as a viewer has no Stop or Terminate.

Badges on a row tell you when a copy is isolated, runs as a different user, has a health check, or was deployed from an older template version and needs a redeploy to update.

Each copy also has its own dashboard, Preferences and Activity tab — select its name to open it. Every copy across every lab is also listed under Instances → My Instances.

Shared storage or isolated​

This is the decision that matters, because it changes what the copy can see.

Shared (the default). The copy mounts your normal account storage. Every lab you own sees the same files. Good when the copies are all yours and you want one set of files.

Isolated. The copy gets its own separate home. Nothing you write in it appears in your other labs. Choose what it starts with (the seed):

SeedWhat you start with
Fresh empty home (default)Nothing, like a brand-new account
Clone my homeA copy-on-write copy of your existing files
Cloning is cheap, but only where the storage supports it

A clone shares its blocks with the original at first and costs almost nothing — you are charged only for what you change afterward. On storage that cannot do this, the option is unavailable and the copy starts with an empty home instead.

Duplicating an existing copy​

Duplicate clones a copy's configuration — run-as user, keys, proxies, passwords, storage choice — into a new one.

Domains and reserved addresses are deliberately not copied, since two labs cannot serve the same domain.

The duplicate takes a new slot, starts with fresh data, and is not deployed — select Deploy on its row when you are ready.

Storage counts once​

Extra copies do not get their own quota. Your account has one storage allowance, and isolated copies count against it — but only for the data that has actually diverged from the original.

See Storage for how usage is measured.

Deleting a copy​

Copies can be terminated, which frees the slot. Your main lab of each type cannot — it is stopped instead. See Stop, pause and delete.

Choose Move to trash to keep the copy restorable for 30 days, or Delete permanently. Terminated copies of this lab appear in the trash panel at the bottom of the Deployments tab; restoring one brings it back undeployed, in a free slot.

Do it with an AI assistant​

You can also do this by asking an AI assistant connected to your account — see Connect an AI assistant to set one up.

AskWhat the assistant does
“Make a second copy of my ubuntu lab called testing”deploy_lab with a new copy, then wait_for_deploy
“Rebuild my copy in slot 1”Checks the slot with list_labs, then deploy_lab on that slot
“Rename that copy to staging”rename_lab
“Delete the testing copy”list_labs for its id, then terminate_lab
Instance ids come from list_labs

Each copy has its own id. The assistant should read it from list_labs before acting on a copy — otherwise it acts on your standard lab instead. The number of copies you can run is capped by your plan.

Next​