Host a Domain on ZCP DNS and Manage Records with the CLI
This tutorial takes a domain you already own and makes ZSoftly the authoritative DNS host for it.
You create the zone, read the name servers, add records, delegate the domain at your registrar, and
confirm it resolves on the public internet. Every step runs from your terminal with the zcp CLI.
By the end you have:
- A DNS zone hosted on ZCP
- A, CNAME, TXT, and MX records resolving on the public internet
- The domain delegated from your registrar to ZSoftly name servers
Plan for about 20 minutes of hands-on work. Name server changes then propagate on their own. Propagation often completes within a few hours. Allow up to 48 hours.
Before You Start
Section titled “Before You Start”- A ZSoftly Public Cloud account. Sign up first if you do not have one.
- The
zcpCLI installed. See the CLI installation guide. - A domain you control at a registrar, with access to change its name servers.
digfor verification (preinstalled on macOS and Linux, and part ofbind-utilsordnsutilson most distributions).
Step 1: Authenticate
Section titled “Step 1: Authenticate”Create a token in the portal under Profile → API Tokens, then add a CLI profile and paste it.
zcp profile add defaultzcp auth validateDNS commands are account-level, so you do not set a region or project for them. The one exception is
zcp dns create, which takes --project.
Step 2: Create the Zone
Section titled “Step 2: Create the Zone”Add your domain. This creates the DNS zone ZSoftly serves.
zcp dns create --name example.com --project default-9FIELD VALUESlug examplecomName example.comStatus falseCreated 2026-07-18T21:08:26.000000ZCopy the Slug. Every record command uses it. List it again anytime:
zcp dns listStep 3: Read Your Name Servers
Section titled “Step 3: Read Your Name Servers”ZCP adds the zone’s SOA and NS records for you. The NS record set names the two servers you
delegate to.
zcp dns show examplecomRecords (2):NAME TYPE CONTENT TTLexample.com. SOA ns1.zsoftly.ca. hostmaster.zsoftly.ca. 2026071801 10800 3600 604800 3600 3600example.com. NS ns1.zsoftly.ca., ns2.zsoftly.ca. 3600Write down both name servers. You need them in Step 5.
Step 4: Add Your Records
Section titled “Step 4: Add Your Records”Create the records to route your traffic. Use @ for the zone root and a relative name for
subdomains.
# Point the root and www at your serverzcp dns record-create --domain examplecom --name @ --type A --content 203.0.113.10zcp dns record-create --domain examplecom --name www --type A --content 203.0.113.10
# Point an app subdomain at another hostzcp dns record-create --domain examplecom --name api --type A --content 203.0.113.20
# Alias blog to wwwzcp dns record-create --domain examplecom --name blog --type CNAME --content www.example.com.
# Publish an SPF policyzcp dns record-create --domain examplecom --name @ --type TXT --content '"v=spf1 -all"'
# Route mail (MX needs a priority)zcp dns record-create --domain examplecom --name @ --type MX --content mail.example.com. --priority 10Confirm the zone holds what you expect:
zcp dns show examplecomStep 5: Delegate at Your Registrar
Section titled “Step 5: Delegate at Your Registrar”Now make ZSoftly authoritative. At the registrar where you bought the domain, replace the name servers with the two ZSoftly values from Step 3. The exact menu differs per registrar. The Domains page has a per-registrar quick reference.
Step 6: Verify
Section titled “Step 6: Verify”Before you delegate, query a ZSoftly name server directly. It answers even while the old name servers are still live at your registrar.
dig A www.example.com @ns2.zsoftly.ca +short# 203.0.113.10After you delegate and propagation catches up, any public resolver returns the same answer.
dig NS example.com @1.1.1.1 +short# ns1.zsoftly.ca.# ns2.zsoftly.ca.
dig A www.example.com @1.1.1.1 +short# 203.0.113.10To watch global propagation, use an online checker such as whatsmydns.net with the NS record type.
Next Steps
Section titled “Next Steps”- Manage DNS with the CLI: the full record command reference.
- Manage DNS with the API: do the same over REST.
- Domains: per-registrar name server steps and the Cloudflare exception.