porkbun-dns
Manages DNS records for abaci.one via the Porkbun API. Use when asked to add subdomains, update DNS records, check DNS configuration, or manage domain settings.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Porkbun DNS Management
This skill manages DNS records for abaci.one using the Porkbun API.
API Credentials Location
The Porkbun API credentials are stored on the NAS:
/volume1/homes/antialias/projects/abaci.one/ddns-data/ddns-config.json
To retrieve them:
ssh nas.home.network 'cat /volume1/homes/antialias/projects/abaci.one/ddns-data/ddns-config.json'
The file contains:
-
api_key: Public API key (starts withpk1_) -
secret_api_key: Secret API key (starts withsk1_)
Common Operations
List All DNS Records
curl -s -X POST "https://api.porkbun.com/api/json/v3/dns/retrieve/abaci.one" \
-H "Content-Type: application/json" \
-d '{
"secretapikey": "SECRET_KEY",
"apikey": "API_KEY"
}' | python3 -m json.tool
Create a CNAME Record (Subdomain)
Best for subdomains that should follow the main domain's IP (useful with DDNS):
curl -s -X POST "https://api.porkbun.com/api/json/v3/dns/create/abaci.one" \
-H "Content-Type: application/json" \
-d '{
"secretapikey": "SECRET_KEY",
"apikey": "API_KEY",
"name": "subdomain-name",
"type": "CNAME",
"content": "abaci.one",
"ttl": "300"
}'
Create an A Record
For direct IP pointing:
curl -s -X POST "https://api.porkbun.com/api/json/v3/dns/create/abaci.one" \
-H "Content-Type: application/json" \
-d '{
"secretapikey": "SECRET_KEY",
"apikey": "API_KEY",
"name": "subdomain-name",
"type": "A",
"content": "IP_ADDRESS",
"ttl": "300"
}'
Delete a DNS Record
First list records to get the record ID, then:
curl -s -X POST "https://api.porkbun.com/api/json/v3/dns/delete/abaci.one/RECORD_ID" \
-H "Content-Type: application/json" \
-d '{
"secretapikey": "SECRET_KEY",
"apikey": "API_KEY"
}'
Update a DNS Record
curl -s -X POST "https://api.porkbun.com/api/json/v3/dns/edit/abaci.one/RECORD_ID" \
-H "Content-Type: application/json" \
-d '{
"secretapikey": "SECRET_KEY",
"apikey": "API_KEY",
"name": "subdomain-name",
"type": "A",
"content": "NEW_IP_ADDRESS",
"ttl": "300"
}'
Verify DNS Propagation
After making changes, verify propagation:
# Check against your local resolver
dig +short subdomain.abaci.one
# Check against Google's DNS (bypasses local cache)
dig +short subdomain.abaci.one @8.8.8.8
# Check against Porkbun's nameservers directly
dig +short subdomain.abaci.one @maceio.porkbun.com
Current DNS Setup
The domain has these key records:
| Type | Host | Purpose |
|---|---|---|
| A | abaci.one | Main domain → home IP (DDNS managed) |
| CNAME | blue | Blue container instance |
| CNAME | green | Green container instance |
| CNAME | * | Wildcard parking page (can be deleted) |
Notes
- CNAME vs A record: Use CNAME for subdomains so they automatically follow DDNS updates to the main domain's IP
- TTL: 300 seconds (5 minutes) is good for records that might change; use 3600+ for stable records
-
Wildcard record: The
*.abaci.one→pixie.porkbun.comis Porkbun's default parking page. Explicit records take precedence over wildcards. - Propagation: DNS changes typically propagate within 5-15 minutes, though local caches may retain old values longer
API Documentation
Full Porkbun API docs: https://porkbun.com/api/json/v3/documentation
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!