Skip to main content

Excourse: Domains and Subdomains

Before you install any self-hosted applications, make sure your domain setup is solid. This chapter explains how to point your main domain to the place you want visitors to land (often a WordPress site) and how to create subdomains for the services you'll run on your server.

Why this chapter moved earlier: Planning your domains before you touch your server saves time, avoids SSL headaches, and helps you launch with a professional-looking setup from the start.

Start with Your Main Domain

Your main domain (also called the apex domain or root domain) is what people type to reach your primary site, e.g., myinfinitytools.com. Decide what should load there first. Many beginners want this to serve their public website, often powered by managed WordPress hosting.

Typical Beginner Setup

  • Main domain: Points to hosted WordPress or another website builder.
  • www subdomain: Usually points to the same place as the main domain.
  • Service subdomains: Point to your self-hosted server (Vaultwarden, Nextcloud, etc.).

If you already have WordPress hosting, your provider will give you the DNS records to use. Keep those for the main domain and www, then add new records for each self-hosted service you plan to deploy.

Pointing the Main Domain to WordPress

Most managed WordPress hosts (WordPress.com, Kinsta, Flywheel, SiteGround, etc.) will ask you to create:

  • An A record for @ (the main domain) pointing to their IP address, or a CNAME if they provide one.
  • A CNAME record for www pointing to either @ or a host-specific target like your-site.wordpress.com.

Set up these two records first. Once your main site works, continue with the rest of this guide to add subdomains for your self-hosted apps.

What is a Subdomain? (Beginner-Friendly)

A subdomain is like a separate address within your main website. Think of it as different rooms in the same house - each room has its own purpose, but they're all part of the same building.

Examples of subdomains:

  • vault.myinfinitytools.com - For your password manager
  • files.myinfinitytools.com - For your file storage
  • blog.myinfinitytools.com - For your website
  • admin.myinfinitytools.com - For your admin panel

Breaking Down a Subdomain

Let's look at vault.myinfinitytools.com:

  • vault - This is the subdomain (the "room")
  • myinfinitytools - This is your domain name (the "house")
  • com - This is the top-level domain (the "neighborhood")

Why Do We Need Subdomains?

Subdomains help organize your services and make them easier to access:

  • Easy to remember - vault.mydomain.com is clear
  • Professional looking - Each service has its own address
  • SSL certificates work better - Each subdomain gets its own certificate
  • Easy to manage - You can move services around easily

Without subdomains: You'd have to use ports like mydomain.com:8080 or mydomain.com:3000 - much harder to remember!

Plan Your Subdomains

Start a simple list of the services you plan to run. These examples can inspire your own naming scheme:

Security Services

  • vault.mydomain.com - Password manager (Vaultwarden)
  • admin.mydomain.com - Admin panel
  • vpn.mydomain.com - VPN access

File and Storage Services

  • files.mydomain.com - File storage (Nextcloud)
  • sync.mydomain.com - File synchronization
  • backup.mydomain.com - Backup management

Web and Content Services

  • blog.mydomain.com - Blog or website (WordPress)
  • docs.mydomain.com - Documentation
  • wiki.mydomain.com - Knowledge base

Monitoring and Analytics

  • stats.mydomain.com - Analytics (Matomo)
  • monitor.mydomain.com - Server monitoring
  • status.mydomain.com - Status page

How to Create Subdomains

The process varies by hosting provider, but the general steps are the same. Create DNS records that point your main domain and www to the correct host (WordPress, static site, etc.), then add separate records for each subdomain that should resolve to your self-hosted server.

Step 1: Get Your Server's IP Address

First, you need to know your server's IP address. You can find this in your server provider's dashboard or by running this command on your server:

curl ifconfig.me

This will show you your server's public IP address (something like 123.456.789.012).

Step 2: Access Your DNS Management

Log into your domain registrar or hosting provider and look for:

  • DNS Management
  • DNS Settings
  • Domain Management
  • Name Servers

Provider-Specific Instructions

Below are examples from popular registrars and DNS hosts. The screens change over time, but the record types stay the same. Use these steps for your main domain and every subdomain you plan to run self-hosted services on.

Hetzner Cloud

If you bought your domain through Hetzner or are using Hetzner DNS:

  1. Log into your Hetzner Cloud Console
  2. Go to DNS in the left menu
  3. Select your domain from the list
  4. Click "Add Record"
  5. Choose "A Record"
  6. Enter your subdomain name (e.g., vault)
  7. Enter your server's IP address
  8. Click "Save"

Example: To create vault.myinfinitytools.com:

  • Name: vault
  • Type: A
  • Value: 123.456.789.012 (your server IP)

Cloudflare

If you're using Cloudflare for DNS:

  1. Log into your Cloudflare Dashboard
  2. Select your domain
  3. Go to DNSRecords
  4. Click "Add record"
  5. Choose "A" record type
  6. Enter your subdomain name
  7. Enter your server's IP address
  8. Set TTL to "Auto"
  9. Click "Save"

Namecheap

If you bought your domain through Namecheap:

  1. Log into your Namecheap account
  2. Go to Domain List
  3. Click "Manage" next to your domain
  4. Go to the "Advanced DNS" tab
  5. Click "Add New Record"
  6. Choose "A Record"
  7. Enter your subdomain name in the Host field
  8. Enter your server's IP address in the Value field
  9. Set TTL to "Automatic"
  10. Click the Save icon

GoDaddy

If you're using GoDaddy:

  1. Log into your GoDaddy account
  2. Go to My Products
  3. Find your domain and click "DNS"
  4. Click "Add" in the Records section
  5. Choose "A" record type
  6. Enter your subdomain name in the Name field
  7. Enter your server's IP address in the Value field
  8. Set TTL to "1 Hour"
  9. Click "Save"

Porkbun

If you're using Porkbun:

  1. Log into the Porkbun Domain Management panel.
  2. Click Details next to your domain.
  3. Scroll to the Quick DNS Config section and click Edit.
  4. Add an A record for each subdomain pointing to your server IP.
  5. Add or edit the A/CNAME records for @ and www if you host WordPress elsewhere.
  6. Click Save Changes.

Google Domains / Squarespace Domains

If your domain lives in Google Domains (now run by Squarespace):

  1. Sign in at domains.google.
  2. Select your domain and open the DNS tab.
  3. Under Custom records, click + Add record.
  4. Choose A and add records for @ and your subdomains (e.g., vault).
  5. For WordPress or other hosted sites, add the CNAME record for www exactly as your host requests.
  6. Click Save.

OVHcloud

If you're on OVH:

  1. Log into the OVHcloud Manager.
  2. Open Domains → select your domain → DNS zone.
  3. Click Add an entry and choose A.
  4. Enter the subdomain (e.g., files) and your server IP.
  5. Repeat for each subdomain and adjust the existing @/www records if WordPress provides different targets.
  6. Confirm changes.

Understanding DNS Propagation

After creating a subdomain, it takes time for the change to spread across the internet. This is called DNS propagation.

How Long Does It Take?

  • Usually: 5-30 minutes
  • Sometimes: Up to 24 hours
  • Rarely: Up to 48 hours

How to Check if It's Working

You can test if your subdomain is working by visiting it in your browser:

  • Go to https://vault.yourdomain.com
  • If you see a page (even an error), the subdomain is working
  • If you get "This site can't be reached", it's still propagating

Testing with Command Line

You can also test from your server:

# Test if subdomain resolves
nslookup vault.yourdomain.com

# Test if it points to your server
dig vault.yourdomain.com

Create Your Domain Checklist

Before installing applications, map out every DNS record you want in place. This keeps your launch organized and helps you avoid downtime on your main site.

Essential Records

These are the records most beginners configure on day one:

  • @ → WordPress host IP or provided CNAME target
  • www → CNAME pointing to @ or your WordPress provider
  • vault.yourdomain.com → Your server IP for Vaultwarden
  • files.yourdomain.com → Your server IP for Nextcloud or file storage

Optional Subdomains

Add these after your core services are live:

  • blog.yourdomain.com → Alternate blog or marketing site
  • admin.yourdomain.com → Admin panel (use with caution, see security tips)
  • sync.yourdomain.com → File synchronization endpoint
  • stats.yourdomain.com → Analytics tools like Matomo
  • monitor.yourdomain.com → Monitoring dashboards
  • backup.yourdomain.com → Backup management interface

Best Practices

Naming Conventions

  • Use descriptive names - vault instead of app1
  • Keep them short - files instead of file-storage-system
  • Use lowercase - vault not Vault
  • Avoid special characters - No spaces, symbols, or accents

Security Considerations

  • Don't use obvious names - Avoid admin for sensitive services
  • Use random names for sensitive services - a7b9c2 instead of admin
  • Document your subdomains - Keep a list of what each one does

Troubleshooting

Subdomain Not Working

If your subdomain isn't working:

  1. Check the DNS record - Make sure it points to the right IP
  2. Wait for propagation - Give it 30 minutes to an hour
  3. Check for typos - Make sure the subdomain name is correct
  4. Test with different tools - Try nslookup or online DNS checkers

Common Mistakes

  • Including the full domain in the host field - Use vault not vault.mydomain.com
  • Pointing your main domain to the wrong place - Double-check WordPress instructions before editing @ and www
  • Wrong IP address - Make sure you're using your server's public IP
  • Wrong record type - Use "A" record, not "CNAME" for IP addresses
  • Not saving the record - Make sure to click "Save" after creating

Quick Reference

Find your server IP:

curl ifconfig.me

Verify your main domain record:

nslookup yourdomain.com

Test subdomain resolution:

nslookup vault.yourdomain.com

Test from browser:

https://vault.yourdomain.com

You're Ready!

Now you understand how to prepare both your main domain and subdomains! This knowledge will be essential as you install applications like Vaultwarden, Nextcloud, and connect your WordPress site.

What you learned:

  • How to point your main domain - Keep WordPress or another host online while you self-host services
  • What subdomains are - Separate addresses for different services
  • How to plan them - Build a checklist before installing apps
  • How to create DNS records - Step-by-step instructions for popular providers
  • How to test everything - Browser and command-line methods

Next step: You're ready to continue with your installation chapters. As you deploy each application, come back to this checklist and create the subdomain you planned for it.

What You Learned

  • Main domain setup - How to point @ and www to WordPress or another host
  • Subdomains - Separate addresses for different services on your domain
  • DNS Records - How to point each subdomain to your server
  • DNS Propagation - How long it takes for changes to take effect
  • Testing Methods - How to verify both main and subdomains are working
  • Planning - How to organize your services with a checklist

You now have the foundation knowledge needed to set up professional-looking, organized services on your server!


Next: Proceed with your chosen installation chapter (e.g., Vaultwarden) now that your domains are ready.