Skip to main content

Domains

A domain is the web address people use to reach something running in your lab (your own Linux machine in the cloud). This page shows you how to add a domain and attach it to a lab, so that it is served over HTTPS.

Two kinds of domain​

Platform subdomainCustom domain
Looks likemyshop.selfmade.onewww.example.com
DNSCreated for youYou create an A record at your DNS provider first
PlanEvery planPaid plans only
LimitShown in the page header (5 by default)25 per account. The page header says Unlimited, but the 25th is the last one accepted.
HTTPS certificateAutomaticAutomatic, once the A record is correct

Platform subdomains come from zones the platform offers — for example selfmade.one, selfmade.fun or zeal.ninja. The dropdown always shows the current list.

1. Add a domain​

Go to Connectivity → My Domains and select Add New Domain.

Shown on labs.selfmade.ninja, the Selfmade Ninja Academy platform. On your own platform you will see your own domain and data.
  1. Under Choose DNS Provider, pick a platform zone — or Custom Domain for a name you own.
  2. Type the name. For a platform zone, type only the part before the zone, for example myshop or vscode.yourname. For a custom domain, type the full name.
  3. Select Verify and Add.

Names must be at least 3 characters long and use only letters, digits, dots and hyphens.

While you type, the dialog previews the result: the full https:// address the domain will have, or a red message if the name is not valid. A name must also start and end with a letter or digit. Names are stored in lowercase.

The dialog suggests names such as vscode.yourname, code.yourname or ide.yourname for the browser editor, and yourname for a website.

Custom domains: point the A record first​

A custom domain is checked when you add it. Before you select Verify and Add, create an A record for the name at your DNS provider. Point it at the platform's public IP address.

To find that address, select the ? button next to Add New Domain on the My Domains page.

Type Name Value
A www <labs-public-ip>

DNS changes can take some time to spread. If adding fails with the A-record message below, wait and try again.

Checklist for the DNS record:

CheckWhy
The record is an A record for the exact name you are adding (www, shop, or @ for the bare domain)The platform looks up that exact name
Its value is the address shown under ?That address is how the platform confirms the name is yours
Proxying is off for the record, if your DNS provider offers itA proxied record answers with the provider's address instead of the platform's address, so the check fails
No other A or AAAA record for the same name points elsewhereCertificates are validated by connecting to your domain, and a stray record can send that check to the wrong place
One name per record

Adding example.com does not add www.example.com. Each name you want to use needs its own A record and its own entry on My Domains.

Names inside platform zones cannot be custom

You cannot add something.selfmade.one as a custom domain. Choose that zone from the dropdown instead.

2. Attach it to a lab​

A domain does nothing until a lab uses it. Open the lab, go to Preferences, and find Public Exposure.

SettingChoose
Expose to Web (port 80)Public, 80 exposed over 443 — whatever your lab serves on port 80 is published over HTTPS
Choose DomainsOne or more of your domains

Then select Save Preferences and Apply & Redeploy now.

Nothing changes until the lab is redeployed

Domain settings show Saved here, applied on the next redeploy. The lab keeps serving its old setup until you redeploy it. You can also set all of this in the Redeploy dialog.

For this option, your app must listen on port 80 inside the lab. To publish a different port, or several, see Publishing ports.

If you choose Public but have no domains, the dialog says No DNS entries to take you public. Please add Domains to continue.

Choose Domains lists only your domains that are verified and not in use by another lab. If a domain is missing from the list, check its card on My Domains: fix its DNS if it is unverified, or remove it from the lab that is using it. A lab owned by an organization offers that organization's domains; your personal labs offer yours.

A domain for VS Code in the browser​

Labs with VS Code in the browser also have Domain for VS Code Web. Leave the default, or pick one of your platform subdomains to open the editor on a name you choose. Custom domains are not offered here.

The domain card​

On the cardMeaning
selfmade / customPlatform subdomain or your own
verified / unverifiedWhether the DNS currently points at the platform. It is checked automatically, at regular intervals and at every deploy. There is no button for it.
in use / not in useWhether a lab is serving it. Hover in use to see which lab.
SSL badgeOpens the SSL Manager for this domain's certificate
Common Name, Domain Name, A RecordThe full name, and the address it currently points to (Not Available if it does not resolve)
ServiceThe platform's name for a platform subdomain, or Custom for your own domain

The name at the top of the card is a link that opens the domain in a new tab.

The SSL badge appears once a lab exposes the domain:

SSL badgeMeaning
SSL validThe certificate is healthy
SSL expiringIt expires within 30 days; it is normally renewed automatically
SSL expired / SSL failingVisitors see a warning, or soon will. Open the badge and run Troubleshoot.
no SSL yetThe domain is exposed but has no certificate yet

The only action is Delete. A lab's own Domains tab lists the domains that lab is serving.

Verification​

The platform re-checks every domain regularly — by default about every ten minutes — and at every deploy. A custom domain whose DNS stops pointing at the platform turns unverified; it stays on your list, but it is no longer offered under Choose Domains until the DNS is fixed and the next check passes. Platform subdomains are repaired automatically.

Delete a domain​

Delete in the card's menu removes the domain from your account and from every lab that was set to use it. For a platform subdomain, its DNS record is removed too, so the name stops working. Redeploy any lab that was serving the domain so its routing and certificate are rebuilt without it.

Domains in an organization​

While you are acting as an organization, My Domains shows the organization's domains. Domains you add then belong to the organization and count against its limit.

Rules to know​

  • One domain, one lab. A domain can be served by only one running lab at a time. Remove it from the other lab (or stop that lab) first.
  • A domain can appear once per lab. You cannot use the same name for two ports of the same lab.
  • Only your own domains. If a lab carries a domain that is registered to someone else, the platform detaches it and redeploys the lab. Otherwise the certificate for all of that lab's domains would fail. When this happens, you get a notification that names the domain.

Errors​

MessageWhat to do
The domain name is not available or already registered.Someone has it. Choose another name.
The domain name you are trying is invalid.Use letters, digits, dots and hyphens; at least 3 characters.
We cannot verify your ownership to domain since the A records are not right…Your custom domain's A record is missing or points elsewhere. Fix it at your DNS provider and wait for it to spread.
You need to upgrade your plan to add custom domainsCustom domains need a paid plan. See Plans and limits.
DNS Service is currently busy. Try again after sometime.A temporary problem. Try again in a few minutes.
Domain '…' is already attached to your running instance '…'.Remove it from that lab, or stop that lab, then redeploy this one.
…is not registered on this platform. Add it under Domains first.Add the domain on My Domains before choosing it on a lab.
Add Domain is grayed out (it replaces Add New Domain)You have reached your limit of platform subdomains. While it is grayed out, you cannot add a custom domain either. Delete a platform subdomain you no longer use.
Custom-domain limit reached: you already have … (limit …).You have 25 custom domains. Delete one you no longer use.
Rate limit reached. Remove existing domains to add more domains.You are at your platform-subdomain limit. Delete one first.
Could not add the domain. Please try again later.Something unexpected went wrong. Try again in a few minutes.

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
“Register myapp on one of the platform's domains”Checks which zones you already use with list_domains, then add_domain
“Add shop.example.com — the A record is set”add_domain
“Put myapp on my essentials lab”Confirms the domain is verified with list_domains, reads the lab's current domains with lab_info, then configure_lab_routing and redeploys
“Is my domain attached to a lab yet?”list_domains
Point the A record first

A domain you own is checked the moment it is added. If its A record does not already point at the platform, the domain is refused. It is not added as pending. Set the record, wait for it to spread, and then ask. Attaching a domain saves the routing, but it goes live only when the lab is redeployed.

Next​