To register a subdomain, submit a pull request with a new JSON file in the domains directory. For example, to register example.ill.my.id, create a file named example.json in domains/:

domains/example.json

πŸ“ Filename Guidelines

To register a nested subdomain like blog.example.ill.my.id, use dots (.) in the filename: blog.example.json

Each part of the filename (i.e., each subdomain label) must follow these rules:

  • Must be alphanumeric and lowercase. Dashes (-) are allowed as separators, but not consecutively (e.g., -- is invalid).
  • Minimum of 1 character, maximum of 244 characters (excluding .json).
  • Each label (segment between dots) must be ≀ 63 characters.
  • File must end with .json.
  • Must not contain ill.my.id.
  • Must not begin with a dot, or contain spaces or invalid characters.

❌ Invalid Filenames

FilenameIssue
.jsonEmpty filename
A.jsonUppercase letters
a..jsonConsecutive dots
.a.jsonStarts with a dot
a .jsonContains a space
a$.jsonNon-alphanumeric character
a.json.jsonMultiple extensions
a.ill.my.id.jsonContains reserved string ill.my.id
a--a.jsonConsecutive dashes
blog._a.jsonLabel starts with an underscore
abc123.aaaaaaaa...aaaa.jsonLabel exceeds 63 characters
very.long.filename...jsonFilename exceeds 244 characters

βœ… Valid Filenames

FilenameWhy It’s Valid
a.jsonMinimum 1 character
example.jsonLowercase and alphanumeric
blog.example.jsonNested subdomain
my-blog.jsonUses dashes correctly
mail._domainkey.example.jsonUnderscore is not in the root label
_vercel.example.jsonValid underscore usage
abc123.jsonAlphanumeric

Note: Users may only register one single-letter subdomain to prevent domain squatting.


🧾 Example JSON File

domains/docs.json:

{
  "owner": {
    "username": "ill.my.id",
    "email": "admin@ill.my.id"
  },
  "records": {
    "CNAME": "ill.my.id-docs.pages.dev"
  },
  "proxied": true
}

JSON Structure

πŸ” owner (required)

Provides contact information. Required fields:

  • username: Your GitHub username.

Example:

{
  "owner": {
    "username": "your-github-username"
  }
}

🌐 records (required)

Specify your domain’s DNS records.

See all supported record types in the FAQ.

Record Type Examples

  • A Points to IPv4 addresses:

    "A": ["192.0.2.1", "198.51.100.1"]
  • AAAA Points to IPv6 addresses:

    "AAAA": ["2001:db8::1", "2001:db8::2"]
  • CNAME Points to another hostname:

    "CNAME": "your-site.example.com"
  • MX Email servers for your domain:

    Simple form:

    "MX": [
      "mx1.example.com",
      "mx2.example.com"
    ]
  • NS Delegates DNS to other nameservers:

    "NS": ["ns1.example.com", "ns2.example.com"]

    Refer to the FAQ for guidance on valid use cases.

  • TXT Used for verification and other metadata:

    Single string:

    "TXT": "Some verification text"

    List format:

    "TXT": ["part1", "part2"]

☁️ proxied (optional)

Enable Cloudflare proxy:

"proxied": true