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
| Filename | Issue |
|---|---|
.json | Empty filename |
A.json | Uppercase letters |
a..json | Consecutive dots |
.a.json | Starts with a dot |
a .json | Contains a space |
a$.json | Non-alphanumeric character |
a.json.json | Multiple extensions |
a.ill.my.id.json | Contains reserved string ill.my.id |
a--a.json | Consecutive dashes |
blog._a.json | Label starts with an underscore |
abc123.aaaaaaaa...aaaa.json | Label exceeds 63 characters |
very.long.filename...json | Filename exceeds 244 characters |
β Valid Filenames
| Filename | Why Itβs Valid |
|---|---|
a.json | Minimum 1 character |
example.json | Lowercase and alphanumeric |
blog.example.json | Nested subdomain |
my-blog.json | Uses dashes correctly |
mail._domainkey.example.json | Underscore is not in the root label |
_vercel.example.json | Valid underscore usage |
abc123.json | Alphanumeric |
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