nodaddy 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -0
- package/dist/index.js +1977 -0
- package/package.json +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# nodaddy
|
|
2
|
+
|
|
3
|
+
**No** more Go**Daddy**. It's time to leave.
|
|
4
|
+
|
|
5
|
+
A CLI tool that automates bulk domain transfers from GoDaddy to Cloudflare, because life's too short to click through two different dashboards 800 times.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
> Inspired by [@gregisenberg](https://x.com/gregisenberg/status/2017293461746053500) — *"I've never met someone under the age of 35 that uses GoDaddy"* — and [@code_rams](https://x.com/code_rams/status/2017487005093859472) discovering why everyone hates it: dark patterns, renewal traps, legacy tech... *"the AOL of domains."*
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Before you start
|
|
14
|
+
|
|
15
|
+
**API Keys** — you'll need credentials from both providers:
|
|
16
|
+
|
|
17
|
+
- **GoDaddy** — Create a Production API key at [developer.godaddy.com/keys](https://developer.godaddy.com/keys) (not OTE/test). You'll get a key + secret pair.
|
|
18
|
+
- **Cloudflare** — Use your **Global API Key** from [dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens) (bottom of page). You'll also need your account email and Account ID (found on any zone overview page).
|
|
19
|
+
|
|
20
|
+
> **Why Global API Key?** Cloudflare's scoped tokens don't support `Registrar Domains:Edit`, which is needed for transfers. A scoped token with `Zone:Edit` + `DNS:Edit` works if you only want DNS migration without transferring the domain.
|
|
21
|
+
|
|
22
|
+
**Disable Domain Protection + Domain Privacy** — GoDaddy's Domain Protection + Domain Privacy block transfers and **cannot be removed via API due to 2FA requests**. You must disable both manually before running `nodaddy`:
|
|
23
|
+
|
|
24
|
+
### To Disable Domain Protection 🔓
|
|
25
|
+
|
|
26
|
+
1. To **Disable Domain Protection** go to: [dcc.godaddy.com/control/portfolio](https://dcc.godaddy.com/control/portfolio)
|
|
27
|
+
2. Check the boxes next to the domains you want to transfer
|
|
28
|
+
3. Click Protection Plans > Downgrade Protection Plans
|
|
29
|
+
4. Select **No Protection** and Confirm Downgrade (requires SMS or authenticator verification)
|
|
30
|
+
5. Wait for the change to take effect (can take up to 48 hours, usually ~15 minutes)
|
|
31
|
+
|
|
32
|
+
### To Disable Domain Privacy 🔓
|
|
33
|
+
|
|
34
|
+
1. To **Disable Domain Privacy** go to: [dcc.godaddy.com/control/portfolio](https://dcc.godaddy.com/control/portfolio)
|
|
35
|
+
2. Check the boxes next to the domains you want to transfer
|
|
36
|
+
3. Click Domain Privacy > Change to Off > Save
|
|
37
|
+
4. Wait for the change to take effect (can take up to 48 hours, usually ~15 minutes)
|
|
38
|
+
5. Now you **should** be ready to use `nodaddy`! 😄
|
|
39
|
+
|
|
40
|
+
`nodaddy` will check for this during preflight and skip any domains that still have Domain Protection enabled.
|
|
41
|
+
|
|
42
|
+
**Transfer costs** — each transfer includes a 1-year renewal at Cloudflare's at-cost pricing, billed to the card on file in your Cloudflare account. Make sure you have a payment method set up.
|
|
43
|
+
|
|
44
|
+
| TLD | Cloudflare | GoDaddy |
|
|
45
|
+
|-----|-----------|---------|
|
|
46
|
+
| .com | ~$9.15/yr | ~$22/yr |
|
|
47
|
+
| .net | ~$10.50/yr | ~$20/yr |
|
|
48
|
+
| .org | ~$10.00/yr | ~$22/yr |
|
|
49
|
+
|
|
50
|
+
Pricing varies by TLD. The CLI shows a cost reminder and asks for confirmation before initiating transfers.
|
|
51
|
+
|
|
52
|
+
**Environment variables** — optionally skip the interactive prompts:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
export GODADDY_API_KEY=your-key
|
|
56
|
+
export GODADDY_API_SECRET=your-secret
|
|
57
|
+
export CLOUDFLARE_ACCOUNT_ID=your-account-id
|
|
58
|
+
|
|
59
|
+
# Global API Key (recommended — supports registrar transfers)
|
|
60
|
+
export CLOUDFLARE_API_KEY=your-global-api-key
|
|
61
|
+
export CLOUDFLARE_EMAIL=you@example.com
|
|
62
|
+
|
|
63
|
+
# OR scoped API Token (DNS-only migrations, no transfer support)
|
|
64
|
+
# export CLOUDFLARE_API_TOKEN=your-api-token
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Install
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install -g nodaddy
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Or run directly:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npx nodaddy migrate
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Usage
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
nodaddy migrate # Interactive wizard
|
|
83
|
+
nodaddy migrate --all # Skip domain picker, take them all
|
|
84
|
+
nodaddy migrate --dry-run # Preview without making changes
|
|
85
|
+
nodaddy list # List GoDaddy domains
|
|
86
|
+
nodaddy status # Check transfer progress
|
|
87
|
+
nodaddy resume # Resume interrupted transfers
|
|
88
|
+
nodaddy config # View stored credentials
|
|
89
|
+
nodaddy config --reset # Clear stored credentials
|
|
90
|
+
nodaddy cleanup # Delete all stored credentials, contact info, and history
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## How it works
|
|
94
|
+
|
|
95
|
+
For each domain, `nodaddy` automates 8 steps:
|
|
96
|
+
|
|
97
|
+
1. **Preflight** — Verify domain is active, >60 days old, TLD supported, Domain Protection off
|
|
98
|
+
2. **DNS backup** — Export all records from GoDaddy
|
|
99
|
+
3. **Zone creation** — Create Cloudflare zone
|
|
100
|
+
4. **DNS migration** — Map and recreate records (A, AAAA, CNAME, MX, TXT, SRV, CAA, NS)
|
|
101
|
+
5. **Prepare GoDaddy** — Remove privacy, disable auto-renew, unlock domain
|
|
102
|
+
6. **Auth code** — Fetch transfer authorization code
|
|
103
|
+
7. **Nameservers** — Point domain to Cloudflare's nameservers
|
|
104
|
+
8. **Transfer** — Initiate transfer at Cloudflare
|
|
105
|
+
|
|
106
|
+
Registrant contact info is saved after first entry and reused on future runs — you won't have to type it again. Track progress with `nodaddy status`.
|
|
107
|
+
|
|
108
|
+
Rate limiting, concurrent batch processing (8 domains at a time), and state persistence are built in. If anything interrupts or fails, run `nodaddy resume`. GoDaddy's API often returns temporary 422 "resource lock" errors after recent dashboard changes — the tool automatically retries with backoff (up to ~105 seconds) so you don't have to babysit it.
|
|
109
|
+
|
|
110
|
+
When you're done transferring, run `nodaddy cleanup` to remove stored API credentials, contact info, and migration history from your machine.
|
|
111
|
+
|
|
112
|
+
> **Note:** Domain transfers use undocumented Cloudflare Registrar API endpoints that are not part of Cloudflare's public API. These endpoints could change or break without notice. DNS migration uses the standard, documented API and is unaffected.
|
|
113
|
+
|
|
114
|
+
GoDaddy parking records and forwarding junk are automatically skipped. DNS records are created with `proxied: false` by default so your traffic routing doesn't change unexpectedly — the wizard gives you the option to enable Cloudflare proxying (orange cloud) if you want it.
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT
|