feat(docs): add automated documentation website builder using VitePress 2.0 (#634)

* Initial plan

* feat(docs): add static documentation website builder script

Add build_docs.py script to convert markdown docs to static HTML website with:
- Responsive navigation bar with collapsible directory tree
- In-page table of contents (right sidebar, hidden on small screens)
- Language switcher (Chinese/English)
- Pure static HTML output (no server-side processing)
- Footer with GitHub links and edit page link
- Mobile-friendly responsive design

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* style: format build_docs.py with ruff

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): use MkDocs with Material theme instead of custom parser

Replace custom markdown parser with industry-standard tools:
- MkDocs: Popular static site generator for documentation
- Material for MkDocs: Modern, feature-rich theme

Benefits:
- Mature, well-tested codebase used by thousands of projects
- Built-in features: search, navigation, TOC, code highlighting
- Active development with regular updates
- Extensive documentation and community support
- Beautiful, responsive design out of the box
- Easy to maintain with configuration-based approach

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): use VitePress instead of MkDocs for documentation

Replace MkDocs with VitePress - a Vue-powered static site generator:
- VitePress: Modern, fast, designed for documentation
- Vue 3 + Vite stack with instant HMR
- Built-in i18n, search, dark mode, responsive design
- Chinese-friendly (created by Evan You)

Features:
- Responsive navigation with collapsible sidebar
- In-page TOC automatically generated
- Bilingual support (Chinese/English)
- Local search with keyboard shortcuts
- Light/Dark mode toggle
- Edit page links to GitHub
- Pure static HTML output

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* feat(docs): add automated setup and build with npm run build

Add automated directory setup for VitePress build:
- Created scripts/setup-docs.mjs to auto-setup docs structure
- Updated package.json with 'build' command that runs setup + build
- Updated docs:dev to include setup automatically
- Simplified workflow to one command: npm run build

Changes:
- npm run build now handles everything automatically
- No need for separate bash script
- Directory structure created on-demand
- Updated BUILD_DOCS.md with simplified instructions

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): improve VitePress configuration per feedback

Addressed all feedback items:
1. Fixed edit link mapping: index.html now correctly maps to README.md/README.en.md in GitHub
2. Added schema directory to build output via public/ directory
3. Removed /doc/ prefix from all URLs - doc/ is now the web root
4. Fixed path references in README files during setup

Changes:
- Updated editLink to use function for proper README mapping
- Modified setup script to copy doc/ contents to docs root (not docs/doc/)
- Added schema/ to public/ directory for static asset serving
- Fixed /doc/ path references in copied README files
- Updated all navigation and sidebar paths to remove /doc/ prefix

URLs now work as:
- / (homepage from README.md)
- /docker, /install (no /doc/ prefix)
- /config/cli, /providers/dnspod (clean paths)
- /schema/v4.0.json (accessible in build)

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): preserve original /doc/ paths in documentation

Per user feedback, reverted path modifications:
- No longer replace /doc/ paths in README files
- Restored doc/ directory structure (docs/doc/)
- Updated VitePress navigation to use /doc/ prefix
- Edit links correctly map to source files in doc/ directory

Changes:
- setup-docs.mjs: removed path replacement, copy doc/ to docs/doc/
- config.mts: restored /doc/ prefix in all navigation and sidebar paths
- URLs now match original documentation: /doc/docker, /doc/providers/dnspod

This preserves the original documentation structure and paths as they
appear in the source repository.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): remove /doc/ prefix from URLs and ignore intermediate files

Per user feedback, changed URLs from /doc/xxx.html to /xxx.html:

Changes:
1. Updated setup-docs.mjs to copy doc/ contents to docs/ root (not docs/doc/)
2. Modified path replacement to handle both links and image src attributes
3. Updated VitePress config.mts to remove /doc/ prefix from all nav/sidebar paths
4. Updated .gitignore to exclude intermediate copied files from commits
5. Removed docs/index.md and docs/en/index.md from git tracking

URLs now:
- /docker.html instead of /doc/docker.html
- /providers/dnspod.html instead of /doc/providers/dnspod.html
- /config/cli.html instead of /doc/config/cli.html
- Images at /img/ddns.svg instead of /doc/img/ddns.svg
- Schema files remain at /schema/v4.0.json

Intermediate files generated during build are now gitignored and won't be committed.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): move build scripts to doc/ directory

Moved documentation build scripts from root and scripts/ to doc/ directory:
- Moved scripts/setup-docs.mjs → doc/setup-docs.mjs
- Moved build_docs.sh → doc/build_docs.sh
- Removed empty scripts/ directory
- Updated package.json to reference new script locations
- Updated BUILD_DOCS.md with new directory structure

This organizes all documentation-related files under doc/ directory,
keeping the repository root cleaner.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): consolidate into single doc/ directory

Eliminated docs/ directory, consolidated everything under doc/:
- Moved docs/.vitepress/ → doc/.vitepress/
- Removed docs/ directory entirely
- Updated package.json to use doc/ instead of docs/
- Updated .gitignore to reflect new structure (doc/.vitepress/dist/, doc/index.md, doc/en/, doc/public/)
- Updated setup-docs.mjs to generate files within doc/
- Updated BUILD_DOCS.md documentation

Structure now:
- doc/ contains source files, VitePress config, and generated intermediate files
- All build artifacts stay within doc/.vitepress/dist/
- Simpler single-directory structure without doc/docs nesting

Commands remain the same:
- npm run build
- npm run docs:dev
- npm run docs:preview

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): move package.json to doc/ directory

Moved package.json to doc/ directory to consolidate all documentation-related files:
- Moved package.json from root → doc/package.json
- Updated package.json scripts to use relative paths (. instead of doc)
- Updated BUILD_DOCS.md with new usage instructions (cd doc first)
- Updated build_docs.sh to work from within doc/ directory
- .gitignore already handles node_modules/ globally

All documentation dependencies and configuration now in single doc/ directory.

Usage:
```bash
cd doc
npm install
npm run build
```

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* feat(docs): add install.sh to public, auto-redirects, and ensure README→index.html mapping

Implemented three enhancements:

1. Copy install.sh to public/ directory
   - install.sh now accessible at /install.sh in build
   - Users can download directly from documentation site

2. Add automatic redirects for old URLs
   - Created custom VitePress theme with redirect logic
   - /doc/xxx URLs redirect to /xxx
   - /doc/xxx.en.html URLs redirect to /en/xxx.html
   - Maintains backward compatibility with old links

3. README.md renders as index.html with correct edit links
   - Already configured: index.md maps to README.md for editing
   - en/index.md maps to README.en.md for editing
   - Edit links work correctly for both Chinese and English homepages

Updated BUILD_DOCS.md with new features documentation.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* feat(docs): upgrade to VitePress 2.0 (next)

Upgraded VitePress from v1.x to v2.0 (next tag):
- Updated package.json to use "vitepress": "next"
- Currently using v2.0.0-alpha.15
- Tested build successfully - all features working
- Updated BUILD_DOCS.md to reflect VitePress 2.0

VitePress 2.0 benefits:
- Better performance and faster build times
- Improved developer experience
- Enhanced features and bug fixes
- Future-ready with latest Vue 3 + Vite improvements

Build tested and confirmed working with no breaking changes.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): remove redundant build script and fix copyright years

Changes per user feedback:
1. Removed doc/build_docs.sh (redundant - standard npm commands sufficient)
2. Updated copyright in config.mts line 133: "Copyright © 2016 ~ 2024 NewFuture"
3. Updated copyright in config.mts line 305: "Copyright © 2016 ~ 2024 NewFuture"

Usage now simplified to standard npm commands:
- cd doc && npm install
- npm run build
- npm run docs:dev
- npm run docs:preview

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): dynamic copyright year, move redirects to esa.js, update providers link

Per user feedback:
1. Made copyright year dynamic: `${new Date().getFullYear()}` (line 305)
2. Moved redirect logic from theme/index.ts to esa.js for server-side handling
3. Changed providers link from "概述 /providers/README" to "所有服务商 /providers/index" (line 70)

Changes:
- config.mts: Dynamic copyright calculation, updated providers navigation
- esa.js: Added redirect logic for /doc/ URLs (301 permanent redirects)
- theme/index.ts: Removed client-side redirect logic (now handled server-side)

Redirects now handled at edge function level for better SEO and performance.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): improve redirects, provider link, and add code-to-GitHub link conversion

Per user feedback (comment #3736692270):
1. Moved .en.html redirect logic before general /doc/ redirect in esa.js
2. Added /index.en.html → /en/ redirect
3. Changed providers/README URL to providers/ (line 39)
4. Added markdown transformer to convert code links (e.g., /ddns/provider/dnspod.py) to GitHub links

Changes:
- esa.js: Reordered redirect logic (en first), added index.en.html redirect
- config.mts: Changed providers link from /providers/README to /providers/
- config.mts: Added markdown.config to transform inline code paths to GitHub links

Code paths like `/ddns/provider/dnspod.py` in documentation will now automatically link to GitHub repository.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* feat(docs): enable dead link check, add sitemap, llms.txt, and GitHub Actions build

Per user feedback (comment #3736806631):
1. Changed redirects to 301 permanent redirects in esa.js (line 183)
2. Enabled dead link checking in config.mts (ignoreDeadLinks: false)
3. Added sitemap generation (sitemap.hostname: https://ddns.newfuture.cc)
4. Added llms.txt generation via buildEnd hook for AI/LLM context
5. Created GitHub Actions workflow (.github/workflows/build-docs.yml) to build docs on push

Changes:
- esa.js: Clarified 301 redirect comment
- config.mts: Enabled dead link check, added sitemap config, added buildEnd hook for llms.txt
- .github/workflows/build-docs.yml: New workflow to build and optionally deploy docs

GitHub Action triggers on:
- Push to master/main (doc/, README*, schema/ paths)
- Pull requests
- Manual workflow dispatch

Build output includes sitemap.xml and llms.txt for better SEO and AI integration.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): update Node.js to v24, retention to 7 days, simplify BUILD_DOCS

Per user feedback (comment #3736833266):
1. Updated Node.js version from v20 to v24 in build-docs.yml (line 33)
2. Changed artifact retention from 30 to 7 days (line 50)
3. Simplified BUILD_DOCS.md - removed verbose explanations, kept essentials

Changes:
- .github/workflows/build-docs.yml: Node 24, 7-day retention
- BUILD_DOCS.md: Condensed from 327 to 40 lines, focused on quick start and essential commands

BUILD_DOCS.md now provides concise reference instead of lengthy tutorial.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor(docs): simplify link transformer, extract llms.txt template, add docs agent

Per user feedback (comment #3737275691):
1. Simplified markdown transformer to only process link (a tag) hrefs instead of code_inline tokens
2. Extracted llms.txt content to separate template file (doc/llms.txt) with:
   - Complete documentation structure with all page URLs
   - All schema file URLs (v4.0, v2.8, v2)
   - Template variable {{DATE}} for build-time replacement
3. Deleted BUILD_DOCS.md and created .github/agents/docs.agent.md:
   - Comprehensive documentation maintenance agent
   - Full guide for updating docs, navigation, providers
   - Build/test procedures and common tasks
   - Guidelines for writing and link handling

Changes:
- config.mts: Transform link hrefs (not inline code), read llms.txt from template
- doc/llms.txt: New template with full doc/schema URLs
- .github/agents/docs.agent.md: New documentation maintenance agent
- BUILD_DOCS.md: Deleted (replaced by agent instructions)

Link transformer now only modifies existing <a> tags, preserving markdown styling.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): add metadata to docs agent, fix markdown syntax, add v4.1.json schema

Per user feedback (comment #3737334654):
1. Added YAML metadata to docs.agent.md (name, description) following new-provider.agent.md format
2. Fixed markdown syntax to be GitHub-compatible:
   - Changed inline code blocks in list items to properly formatted code blocks
   - Ensured all code examples are in fenced code blocks
3. Added missing v4.1.json schema to llms.txt (was only showing v4.0, v2.8, v2)

Changes:
- .github/agents/docs.agent.md: Added YAML frontmatter, fixed markdown formatting
- doc/llms.txt: Added v4.1 schema URL (first in list as newest version)

All schema files now documented: v4.1, v4.0, v2.8, v2

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): restructure to docs/ directory with cleaner organization

Per user feedback (comment #3737399407):
1. Renamed doc/ → docs/
2. Moved all .en.md files → docs/en/*.md (removed .en suffix)
3. Moved install.sh → docs/install.sh (source file, not copied)
4. Moved favicon.ico → docs/favicon.ico (source file)
5. Simplified setup-docs.mjs - no longer copies English files or install.sh
6. Updated all path references:
   - GitHub Actions workflow: doc/ → docs/
   - .gitignore: doc/ → docs/
   - VitePress config: edit links now map to docs/
   - Documentation agent: updated structure docs

New Structure:
- docs/ (was doc/)
  - config/, providers/, dev/ (Chinese markdown)
  - en/ (English markdown, no .en suffix)
    - config/, providers/, dev/
  - install.sh (source)
  - favicon.ico (source)
  - llms.txt (template)

Build command unchanged: cd docs && npm run build

All English documentation now sourced directly from docs/en/ instead of being generated.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): update documentation links from /doc/ to docs/ in README files

Per user feedback (comment #3737497400):
1. Updated setup-docs.mjs to properly replace /doc/ → docs/ → / in README processing
2. Updated all /doc/ links to docs/ in README.md:
   - Image src: /doc/img/ddns.svg → docs/img/ddns.svg
   - Docker docs: /doc/docker.md → docs/docker.md
   - Config docs: /doc/config/* → docs/config/*
   - Provider docs: /doc/providers/* → docs/providers/*
3. Updated all /doc/ links to docs/en/ in README.en.md:
   - Image src: /doc/img/ddns.svg → docs/img/ddns.svg
   - Docker docs: /doc/docker.en.md → docs/en/docker.md
   - Config docs: /doc/config/*.en.md → docs/en/config/*.md
   - Provider docs: /doc/providers/*.en.md → docs/en/providers/*.md

Changes:
- docs/setup-docs.mjs: Two-step replacement (/doc/ → docs/ → /) for GitHub links
- README.md: All documentation links now use docs/ prefix
- README.en.md: All documentation links now use docs/en/ prefix

Verified: No /doc/ links remain in README files or .github markdown files.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): simplify setup script and move to .vitepress directory

Per user feedback (comment #3737562776):
1. Moved setup-docs.mjs to docs/.vitepress/ directory
2. Simplified link replacement logic:
   - Removed unnecessary /doc/ processing code
   - Now only converts docs/ → / (Chinese version)
   - And docs/en/ → / (English version)
   - Since README files already use correct docs/ prefix
3. Updated package.json script paths to reference .vitepress/setup-docs.mjs
4. Updated path variables in script to work from .vitepress/ location

Changes:
- docs/.vitepress/setup-docs.mjs: New location, simplified logic
- docs/package.json: Updated setup script path
- Removed obsolete /doc/ → docs/ replacement steps

Build process now simpler and cleaner.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): fix all broken documentation links

Per user feedback (comment #3737640946):
Fixed all broken links throughout the documentation:

1. Fixed providers/README links → providers/ (clean URL)
2. Removed all .en.md suffixes from links (files now in docs/en/ with .md extension)
3. Fixed /doc/ prefix references → proper docs/ paths
4. Fixed cross-references between Chinese and English docs:
   - Chinese providers/README.md → ../en/providers/*.md for English docs
   - English docs use relative paths within en/ directory
5. Fixed redirect_to URLs in dnscom.md files
6. Fixed image URL: /doc/img/ → /img/

Changes affect 28 files:
- All config documentation (cli.md, env.md, json.md) in both languages
- All provider documentation in both languages
- Developer documentation (dev/config.md)
- Docker documentation
- Provider README files

All dead links now resolved. Documentation navigation works correctly.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): fix remaining dead links in generated index.md and provider files

Per user feedback (comment #3737692822):
Fixed all remaining dead links:

1. Enhanced setup-docs.mjs to handle ./doc/ prefix links:
   - Added replacement for (./doc/ → (/
   - Added replacement for /providers/index → /providers/
   - Now correctly converts README links to clean web URLs

2. Fixed provider documentation links:
   - callback.md and debug.md: Added "Return to All Providers" links
   - English versions: Added /en/providers/ links
   - Removed broken ./../../README links

All dead links now resolved:
- ./doc/install → /install
- ./doc/providers/* → /providers/*
- ./doc/config/* → /config/*
- /providers/index → /providers/
- Provider files now link to /providers/ and /en/providers/

Dead link checking should now pass successfully.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): fix all remaining dead links in documentation

Per user feedback (comment #3737728554):
Fixed all remaining dead links throughout documentation:

1. Enhanced setup-docs.mjs:
   - Added replacement for ](doc/ pattern
   - Handles more link format variations

2. Fixed config files (6 files):
   - config/cli.md: providers/ → ../providers/, providers/callback → ../providers/callback
   - config/json.md: docker.md → ../docker.md, providers/ → ../providers/
   - en/config/env.md: providers/callback → ../providers/callback, docker → ../docker, providers/ → ../providers/
   - en/config/json.md: docker.md → ../docker.md, providers/ → ../providers/

3. Fixed provider files (6 files):
   - providers/callback.md, debug.md, README.md: ../../README.md → /
   - en/providers/callback.md, debug.md: ../../README.md → /en/
   - en/providers/he.md: ../json.md → ../config/json.md

All dead links resolved:
✓ ./providers/index → ../providers/
✓ ./providers/callback → ../providers/callback
✓ ./docker → ../docker
✓ ./../../README → / (or /en/)
✓ ../json → ../config/json
✓ ](doc/ → ](/

Dead link checking should now pass successfully with zero errors.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): add VitePress rewrites to map providers/README.md to /providers/

Per user feedback (comment #3737780259):
Fixed `/providers/index` dead links by adding VitePress rewrites configuration.

Changes to docs/.vitepress/config.mts:
1. Added rewrites mapping:
   - providers/README.md → providers/index.md
   - en/providers/README.md → en/providers/index.md
2. Updated sidebar links:
   - /providers/index → /providers/
   - /en/providers/index → /en/providers/

This tells VitePress that the README.md files in providers directories should be accessible via the /providers/ URL (with cleanUrls enabled).

All /providers/index links now correctly resolve to /providers/

Dead link checking should now pass with zero errors.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): fix providers/index links and simplify setup script

Per user feedback (comment #3737836475):
1. Fixed dead links in config/env.md files:
   - ./providers/ → ../providers/ (both Chinese and English)
2. Simplified setup-docs.mjs:
   - Removed unnecessary doc/ processing (README no longer contains doc/)
   - Merged logic for both README files into single processReadme function
   - Cleaner, more maintainable code with less duplication

Changes:
- docs/config/env.md: Fixed providers/ link
- docs/en/config/env.md: Fixed providers/ link
- docs/.vitepress/setup-docs.mjs: Refactored with shared function

Dead link checking should now pass with zero errors.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): remove providers/index replacement from setup script

Per user feedback (comment #3737887893):
Removed `/providers/index` → `/providers/` replacement from setup-docs.mjs.
This should be fixed in markdown files instead, not in the setup script.

Simplified setup script by removing unnecessary transformation logic.

Changes:
- docs/.vitepress/setup-docs.mjs: Removed line 29 replacement

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): update remaining /doc/ references to docs/ in README files

Per user feedback (comment #3737970179):
Updated all remaining /doc/ references to docs/ or docs/en/ in both README files.

Changes in README.md:
- doc/install.md → docs/install.md
- All doc/providers/*.md → docs/providers/*.md (10 provider links)

Changes in README.en.md:
- doc/install.en.md → docs/en/install.md
- doc/providers/dnspod.en.md → docs/en/providers/dnspod.md
- doc/providers/alidns.en.md → docs/en/providers/alidns.md

All documentation links now correctly use docs/ prefix for GitHub navigation.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix(docs): update all remaining doc/ references to docs/ in README files

Per user feedback (comment #3738298603):
Updated ALL remaining doc/ references to docs/ or docs/en/ in both README files.

Changes in README.md (13 links):
- doc/providers/edgeone.md → docs/providers/edgeone.md
- doc/providers/noip.md → docs/providers/noip.md
- doc/config/cli.md → docs/config/cli.md (3 occurrences)
- doc/config/json.md → docs/config/json.md (2 occurrences)
- doc/config/env.md → docs/config/env.md (2 occurrences)
- doc/providers/ → docs/providers/ (3 occurrences)

Changes in README.en.md (13 links):
- doc/providers/*.en.md → docs/en/providers/*.md (9 provider links)
- doc/config/cli.en.md → docs/en/config/cli.md
- doc/config/json.en.md → docs/en/config/json.md
- doc/config/env.en.md → docs/en/config/env.md
- doc/providers/ → docs/en/providers/

All documentation links now use correct docs/ prefix with NO /doc/ references remaining.

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* refactor(docs): integrate setup logic into config.mts

Per user feedback (comment #3738600577):
Integrated setup-docs.mjs functionality into config.mts.

Changes:
1. Removed standalone setup-docs.mjs file
2. Added setupDocs() function in config.mts that runs before config export
3. Simplified package.json scripts - removed setup step
4. Setup now runs automatically when config loads (works for both dev and build)

Benefits:
- Single configuration file - easier to maintain
- No separate setup script needed
- Automatic execution on both dev and build
- Cleaner package.json scripts
- Same functionality, simpler implementation

Build command: `npm run build` or `npm run docs:dev`

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* update link

* /doc/img/ddns.svg

* fix docs paths

* fix docs

* fix docs url

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
Co-authored-by: New Future <NewFuture@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Copilot
2026-01-12 23:48:37 +08:00
committed by GitHub
co-authored by NewFuture New Future Copilot
parent 05c9896473
commit 0e466dc496
69 changed files with 1100 additions and 246 deletions
+196
View File
@@ -0,0 +1,196 @@
---
# Fill in the fields below to create a basic custom agent for your repository.
# The Copilot CLI can be used for local testing: https://gh.io/customagents/cli
# To make this agent available, merge this file into the default repository branch.
# For format details, see: https://gh.io/customagents/config
name: Documentation Maintenance Agent
description: Maintain DDNS project documentation built with VitePress 2.0
---
# Documentation Maintenance Agent
You are a specialized agent for maintaining the DDNS project documentation built with VitePress 2.0.
## Your Responsibilities
1. **Documentation Updates**: Update markdown files in `docs/` and `docs/en/` directories
2. **Configuration Management**: Maintain VitePress config in `docs/.vitepress/config.mts`
3. **Build Process**: Ensure documentation builds successfully
4. **Link Verification**: Check for broken links and fix them
5. **Content Accuracy**: Keep documentation in sync with code changes
## Documentation Structure
```
docs/
├── .vitepress/
│ ├── config.mts # VitePress configuration
│ └── theme/index.ts # Custom theme
├── setup-docs.mjs # Setup script (runs before build)
├── llms.txt # AI context template
├── install.sh # Installation script (source)
├── favicon.ico # Site favicon (source)
├── config/ # Configuration guides (Chinese)
│ ├── cli.md
│ ├── env.md
│ └── json.md
├── providers/ # DNS provider docs (Chinese)
│ ├── README.md # Overview
│ ├── dnspod.md
│ ├── cloudflare.md
│ └── ...
├── dev/ # Developer docs (Chinese)
│ └── provider.md # Provider development guide
├── en/ # English versions
│ ├── config/
│ ├── providers/
│ ├── dev/
│ ├── docker.md
│ └── install.md
├── docker.md
├── install.md
└── release.md
```
## Key Files
### VitePress Configuration (`docs/.vitepress/config.mts`)
- Bilingual navigation (Chinese/English)
- Sitemap generation
- Dead link checking (`ignoreDeadLinks: false`)
- Custom markdown transformers
- Edit links mapping to GitHub source
### Setup Script (`docs/setup-docs.mjs`)
- Copies README.md → docs/index.md
- Copies README.en.md → docs/en/index.md
- Copies schema/ to docs/public/schema/
- No longer copies install.sh or English .md files (use source files directly)
### llms.txt Template (`docs/llms.txt`)
- AI/LLM context file template
- Contains links to all documentation pages
- Contains links to all schema files (v4.1, v4.0, v2.8, v2)
- Updated with current date during build
## Build Commands
```bash
cd docs
npm install # Install dependencies
npm run build # Build production site
npm run docs:dev # Start dev server
npm run docs:preview # Preview production build
```
## Documentation Guidelines
### Writing Style
- Clear and concise
- Chinese primary, English secondary
- Code examples for all providers
- Step-by-step configuration guides
### Markdown Features
- Use VitePress containers (info, tip, warning, danger):
```markdown
::: tip
This is a tip
:::
```
- Code blocks with language tags:
```markdown
```bash
npm run build
```
```
- Tables for parameter documentation
- Internal links use relative paths
### Link Handling
- **Code file links**: Links to `.py`, `.md`, `.json`, `.sh`, `.txt` files are automatically transformed to GitHub blob URLs
- **Internal docs**: Use relative paths (e.g., `./cli.md`, `../providers/dnspod.md`)
- **External links**: Use full URLs
### Provider Documentation Template
Each provider doc should include:
1. Overview and official links
2. Authentication information
3. Configuration parameters
4. Complete configuration example
5. Troubleshooting
## Testing Documentation
Before committing:
1. Run `npm run build` to check for:
- Dead links (build fails if found)
- Markdown syntax errors
- Missing files
2. Preview locally with `npm run docs:dev`
3. Check both Chinese and English versions
4. Verify sitemap.xml and llms.txt generation
## Common Tasks
### Adding a New Provider
1. Create `doc/providers/newprovider.md` (Chinese)
2. Create `doc/providers/newprovider.en.md` (English) OR rely on auto-copy
3. Add to navigation in `doc/.vitepress/config.mts`:
- Chinese: `themeConfig.sidebar['/providers/']`
- English: `themeConfig.locales['/en/'].sidebar['/en/providers/']`
4. Update `doc/providers/README.md` overview
5. Add provider link to `doc/llms.txt`
### Updating Navigation
Edit `doc/.vitepress/config.mts`:
- Chinese navigation: `themeConfig.nav` and `themeConfig.sidebar`
- English navigation: `locales['/en/'].themeConfig.nav` and `locales['/en/'].themeConfig.sidebar`
### Fixing Broken Links
1. Build will fail if dead links detected
2. Check build output for link errors
3. Update links in markdown files
4. Re-run build to verify
## Automation
### GitHub Actions
Workflow: `.github/workflows/build-docs.yml`
- Triggers on changes to: `doc/**`, `README*`, `schema/**`
- Uses Node.js 24
- Builds documentation
- Uploads artifacts (7-day retention)
- Can deploy to GitHub Pages
### URL Redirects
Handled in `doc/esa.js` (Alibaba Cloud ESA edge function):
- `/index.en.html` → `/en/` (301)
- `/doc/xxx.en.html` → `/en/xxx.html` (301)
- `/doc/xxx` → `/xxx` (301)
## Important Notes
- **DO NOT** modify generated files (doc/index.md, doc/en/, doc/public/)
- **DO NOT** commit build artifacts (doc/.vitepress/dist/)
- **ALWAYS** test build before committing
- **KEEP** Chinese and English docs in sync
- **UPDATE** llms.txt when adding new pages
- **CHECK** that schema files are accessible at `/schema/*.json`
## Resources
- [VitePress Documentation](https://vitepress.dev/)
- [VitePress Markdown](https://vitepress.dev/guide/markdown)
- [VitePress Config](https://vitepress.dev/reference/site-config)
- Project repo: https://github.com/NewFuture/DDNS
- Documentation site: https://ddns.newfuture.cc
## Questions?
When unsure:
1. Check existing documentation files for examples
2. Review VitePress documentation
3. Test changes locally before committing
4. Ask the maintainer for clarification
+2 -2
View File
@@ -450,11 +450,11 @@ def main():
print("Usage: python patch.py [version|release|docker]")
exit(1)
elif mode == "release":
# 同步修改 doc/release.md 的版本与链接
# 同步修改 docs/release.md 的版本与链接
release_md_path = os.path.join(ROOT, "doc", "release.md")
if os.path.exists(release_md_path):
replace_links_for_release_in_file(
release_md_path, version, label="doc/release.md", tag=os.environ.get("GITHUB_REF_NAME")
release_md_path, version, label="docs/release.md", tag=os.environ.get("GITHUB_REF_NAME")
)
exit(0)
+58
View File
@@ -0,0 +1,58 @@
name: Build Documentation
on:
push:
branches: [ master, main ]
paths:
- 'docs/**'
- 'README.md'
- 'README.en.md'
- 'schema/**'
- '.github/workflows/build-docs.yml'
pull_request:
branches: [ master, main ]
paths:
- 'docs/**'
- 'README.md'
- 'README.en.md'
- 'schema/**'
- '.github/workflows/build-docs.yml'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'npm'
cache-dependency-path: 'docs/package.json'
- name: Install dependencies
working-directory: docs
run: npm install
- name: Build documentation
working-directory: docs
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: docs-dist
path: docs/.vitepress/dist/
retention-days: 7
- name: Deploy to GitHub Pages (on push to main/master)
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/.vitepress/dist
cname: ddns.newfuture.cc
+5 -5
View File
@@ -105,7 +105,7 @@ jobs:
run: pip install build
- run: python3 .github/patch.py version
- name: Replace url in Readme
run: sed -i'' -E 's#([("'\''`])(/doc/[^)"'\''`]+)\.md([)"'\''`])#\1https://ddns.newfuture.cc\2.html\3#g; s#([("'\''`])/doc/#\1https://ddns.newfuture.cc/doc/#g' README.md
run: sed -i'' -E 's#([("'\''`])(/docs/[^)"'\''`]+)\.md([)"'\''`])#\1https://ddns.newfuture.cc\2.html\3#g; s#([("'\''`])/docs/#\1https://ddns.newfuture.cc/docs/#g' README.md
- name: Build package
run: python -m build --sdist --wheel --outdir dist/
@@ -205,11 +205,11 @@ jobs:
lto: yes
file-description: "DDNS客户端[测试版 Alpha]"
windows-console-mode: ${{ runner.os == 'Windows' && 'attach' || '' }}
windows-icon-from-ico: ${{ runner.os == 'Windows' && 'favicon.ico' || '' }}
linux-icon: ${{ runner.os == 'Linux' && 'doc/img/ddns.svg' || '' }}
windows-icon-from-ico: ${{ runner.os == 'Windows' && 'docs/favicon.ico' || '' }}
linux-icon: ${{ runner.os == 'Linux' && 'docs/img/ddns.svg' || '' }}
static-libpython: ${{ runner.os == 'Linux' && 'yes' || 'auto' }}
macos-app-name: ${{ runner.os == 'macOS' && 'DDNS' || '' }}
macos-app-icon: ${{ runner.os == 'macOS' && 'doc/img/ddns.png' || '' }}
macos-app-icon: ${{ runner.os == 'macOS' && 'docs/img/ddns.png' || '' }}
- run: ./dist/ddns -v
- run: ./dist/ddns -h
@@ -242,7 +242,7 @@ jobs:
lto: yes
file-description: "DDNS客户端[测试版 Alpha]"
windows-console-mode: attach
windows-icon-from-ico: favicon.ico
windows-icon-from-ico: docs/favicon.ico
- name: Package Windows app as ddns.zip
if: runner.os == 'Windows'
+6 -6
View File
@@ -84,7 +84,7 @@ jobs:
run: pip install build
- run: python3 .github/patch.py version
- name: Replace url in Readme
run: sed -i'' -E 's#([("'\''`])(/doc/[^)"'\''`]+)\.md([)"'\''`])#\1https://ddns.newfuture.cc\2.html\3#g; s#([("'\''`])/doc/#\1https://ddns.newfuture.cc/doc/#g' README.md
run: sed -i'' -E 's#([("'\''`])(/docs/[^)"'\''`]+)\.md([)"'\''`])#\1https://ddns.newfuture.cc\2.html\3#g; s#([("'\''`])/docs/#\1https://ddns.newfuture.cc/docs/#g' README.md
- name: run unit tests
run: python -m unittest discover tests -v
@@ -154,11 +154,11 @@ jobs:
mode: onefile
output-dir: dist
lto: yes
windows-icon-from-ico: ${{ runner.os == 'Windows' && 'favicon.ico' || '' }}
linux-icon: ${{ runner.os == 'Linux' && 'doc/img/ddns.svg' || '' }}
windows-icon-from-ico: ${{ runner.os == 'Windows' && 'docs/favicon.ico' || '' }}
linux-icon: ${{ runner.os == 'Linux' && 'docs/img/ddns.svg' || '' }}
static-libpython: ${{ runner.os == 'Linux' && 'yes' || 'auto' }}
macos-app-name: ${{ runner.os == 'macOS' && 'DDNS' || '' }}
macos-app-icon: ${{ runner.os == 'macOS' && 'doc/img/ddns.png' || '' }}
macos-app-icon: ${{ runner.os == 'macOS' && 'docs/img/ddns.png' || '' }}
- run: ./dist/ddns || test -e config.json
- run: ./dist/ddns -v
@@ -182,7 +182,7 @@ jobs:
lto: yes
file-description: "DDNS客户端 ${{ github.ref_name }}"
windows-console-mode: attach
windows-icon-from-ico: favicon.ico
windows-icon-from-ico: docs/favicon.ico
- name: Package Windows app as ddns.zip
if: runner.os == 'Windows'
@@ -281,5 +281,5 @@ jobs:
run: |
gh release view ${{ github.ref_name }} --json body -q '.body' > changelog.md
gh release upload ${{ github.ref_name }} changelog.md --clobber
cat doc/release.md >> changelog.md
cat docs/release.md >> changelog.md
gh release edit ${{ github.ref_name }} --notes-file changelog.md
+2 -2
View File
@@ -16,7 +16,7 @@ jobs:
runs-on: ${{ matrix.os }}
env:
# Remote installer from the current repository and commit
RAW_URL: ${{ format('https://raw.githubusercontent.com/{0}/{1}/install.sh', github.repository, github.sha) }}
RAW_URL: ${{ format('https://raw.githubusercontent.com/{0}/{1}/docs/install.sh', github.repository, github.sha) }}
strategy:
fail-fast: false
matrix:
@@ -63,7 +63,7 @@ jobs:
container: ${{ matrix.container }}
env:
# Remote installer from the current repository and commit
RAW_URL: ${{ format('https://raw.githubusercontent.com/{0}/{1}/install.sh', github.repository, github.sha) }}
RAW_URL: ${{ format('https://raw.githubusercontent.com/{0}/{1}/docs/install.sh', github.repository, github.sha) }}
steps:
- name: install wget
+12
View File
@@ -5,6 +5,18 @@ config.*.json
# Generated files from workflows
.github/issue_body.md
# VitePress generated files and dependencies
node_modules/
docs/.vitepress/dist/
docs/.vitepress/cache/
package-lock.json
.DS_Store
# VitePress intermediate files (generated during setup) - don't commit these
docs/index.md
docs/en/index.md
docs/public/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
+39 -39
View File
@@ -1,4 +1,4 @@
# [<img src="/doc/img/ddns.svg" width="32px" height="32px"/>](https://ddns.newfuture.cc) [DDNS](https://github.com/NewFuture/DDNS)
# [<img src="docs/img/ddns.svg" width="32px" height="32px"/>](https://ddns.newfuture.cc) [DDNS](https://github.com/NewFuture/DDNS)
> Automatically update DNS records to the current IP address, supporting IPv4 and IPv6, local (private) IP and public IP.
> Proxy mode supported, with automatic DNS record creation.
@@ -19,10 +19,10 @@
- [Binary files](https://github.com/NewFuture/DDNS/releases/latest) ![cross platform](https://img.shields.io/badge/system-windows_%7C%20linux_%7C%20mac-success.svg?style=social)
- **Configuration Methods:**
- [Command Line Arguments](/doc/config/cli.en.md)
- [JSON Configuration File](/doc/config/json.en.md) (supports single-file multi-provider, multiple config files, and remote URL)
- [Environment Variables](/doc/config/env.en.md)
- [Provider Configuration Guide](/doc/providers/)
- [Command Line Arguments](docs/en/config/cli.md)
- [JSON Configuration File](docs/en/config/json.md) (supports single-file multi-provider, multiple config files, and remote URL)
- [Environment Variables](docs/en/config/env.md)
- [Provider Configuration Guide](docs/en/providers/)
- **Domain Support:**
- Multiple domain support
@@ -38,19 +38,19 @@
- HTTP proxy support
- Automatic multi-proxy switching
- **DNS Provider Support:**
- [DNSPOD China](https://www.dnspod.cn/) ([Configuration Guide](doc/providers/dnspod.en.md))
- [Alibaba Cloud DNS](http://www.alidns.com/) ([Configuration Guide](doc/providers/alidns.en.md)) ⚡
- [Alibaba Cloud ESA](https://esa.console.aliyun.com/) ([Configuration Guide](doc/providers/aliesa.en.md)) ⚡
- [DNS.COM](https://www.dns.com/) ([Configuration Guide](doc/providers/dnscom.en.md)) (@loftor-git)
- [DNSPOD International](https://www.dnspod.com/) ([Configuration Guide](doc/providers/dnspod_com.en.md))
- [CloudFlare](https://www.cloudflare.com/) ([Configuration Guide](doc/providers/cloudflare.en.md)) (@tongyifan)
- [HE.net](https://dns.he.net/) ([Configuration Guide](doc/providers/he.en.md)) (@NN708) (Does not support auto-record creation)
- [Huawei Cloud](https://huaweicloud.com/) ([Configuration Guide](doc/providers/huaweidns.en.md)) (@cybmp3) ⚡
- [NameSilo](https://www.namesilo.com/) ([Configuration Guide](doc/providers/namesilo.en.md))
- [Tencent Cloud DNS](https://cloud.tencent.com/) ([Configuration Guide](doc/providers/tencentcloud.en.md)) ⚡
- [Tencent Cloud EdgeOne](https://cloud.tencent.com/product/teo) ([Configuration Guide](doc/providers/edgeone.en.md)) ⚡
- [No-IP](https://www.noip.com/) ([Configuration Guide](doc/providers/noip.en.md))
- Custom Callback API ([Configuration Guide](doc/providers/callback.en.md))
- [DNSPOD China](https://www.dnspod.cn/) ([Configuration Guide](docs/en/providers/dnspod.md))
- [Alibaba Cloud DNS](http://www.alidns.com/) ([Configuration Guide](docs/en/providers/alidns.md)) ⚡
- [Alibaba Cloud ESA](https://esa.console.aliyun.com/) ([Configuration Guide](docs/en/providers/aliesa.md)) ⚡
- [DNS.COM](https://www.dns.com/) ([Configuration Guide](docs/en/providers/dnscom.md)) (@loftor-git)
- [DNSPOD International](https://www.dnspod.com/) ([Configuration Guide](docs/en/providers/dnspod_com.md))
- [CloudFlare](https://www.cloudflare.com/) ([Configuration Guide](docs/en/providers/cloudflare.md)) (@tongyifan)
- [HE.net](https://dns.he.net/) ([Configuration Guide](docs/en/providers/he.md)) (@NN708) (Does not support auto-record creation)
- [Huawei Cloud](https://huaweicloud.com/) ([Configuration Guide](docs/en/providers/huaweidns.md)) (@cybmp3) ⚡
- [NameSilo](https://www.namesilo.com/) ([Configuration Guide](docs/en/providers/namesilo.md))
- [Tencent Cloud DNS](https://cloud.tencent.com/) ([Configuration Guide](docs/en/providers/tencentcloud.md)) ⚡
- [Tencent Cloud EdgeOne](https://cloud.tencent.com/product/teo) ([Configuration Guide](docs/en/providers/edgeone.md)) ⚡
- [No-IP](https://www.noip.com/) ([Configuration Guide](docs/en/providers/noip.md))
- Custom Callback API ([Configuration Guide](docs/en/providers/callback.md))
> ⚡ Providers marked with lightning use advanced HMAC-SHA256 signature authentication for enterprise-level security
- **Other Features:**
@@ -70,7 +70,7 @@ Docker version is recommended for best compatibility, small size, and optimized
- #### Docker (Recommended)
For detailed instructions and advanced usage, see [Docker Usage Documentation](/doc/docker.en.md)
For detailed instructions and advanced usage, see [Docker Usage Documentation](docs/en/docker.md)
<details>
<summary markdown="span">Supports command line, configuration file, and environment variable parameters</summary>
@@ -112,7 +112,7 @@ Docker version is recommended for best compatibility, small size, and optimized
```
Note: Installing to system directories (e.g., /usr/local/bin) may require root or sudo; if permissions are insufficient, run as `sudo sh`.
For detailed instructions, see [Installation Documentation](doc/install.en.md)
For detailed instructions, see [Installation Documentation](docs/en/install.md)
- #### pip Installation (Requires pip or easy_install)
@@ -128,17 +128,17 @@ Docker version is recommended for best compatibility, small size, and optimized
1. Apply for API `token`, fill in the corresponding `id` and `token` fields:
- **DNSPOD (China)**: [Create token](https://support.dnspod.cn/Kb/showarticle/tsid/227/) | [Detailed Configuration](doc/providers/dnspod.en.md)
- **Alibaba Cloud DNS**: [Apply for accesskey](https://help.aliyun.com/document_detail/87745.htm) | [Detailed Configuration](doc/providers/alidns.en.md)
- **Alibaba Cloud ESA**: [Apply for accesskey](https://help.aliyun.com/document_detail/87745.htm) | [Detailed Configuration](doc/providers/aliesa.en.md)
- **DNS.COM**: [API Key/Secret](https://www.dns.com/member/apiSet) | [Detailed Configuration](doc/providers/dnscom.en.md)
- **DNSPOD (International)**: [Get token](https://www.dnspod.com/docs/info.html#get-the-user-token) | [Detailed Configuration](doc/providers/dnspod_com.en.md)
- **CloudFlare**: [API Key](https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-my-Cloudflare-API-key-) (Besides `email + API KEY`, you can also use `Token`, **requires list Zone permission**) | [Detailed Configuration](doc/providers/cloudflare.en.md)
- **HE.net**: [DDNS Documentation](https://dns.he.net/docs.html) (Only fill the set password in the `token` field, `id` field can be left empty) | [Detailed Configuration](doc/providers/he.en.md)
- **Huawei Cloud DNS**: [APIKEY Application](https://console.huaweicloud.com/iam/) (Click Access Keys on the left, then click Create Access Key) | [Detailed Configuration](doc/providers/huaweidns.en.md)
- **NameSilo**: [API Key](https://www.namesilo.com/account/api-manager) (Get API Key from API Manager) | [Detailed Configuration](doc/providers/namesilo.en.md)
- **Tencent Cloud DNS**: [Detailed Configuration](doc/providers/tencentcloud.en.md)
- **No-IP**: [Username and Password](https://www.noip.com/) (Use No-IP account username and password) | [Detailed Configuration](doc/providers/noip.en.md)
- **DNSPOD (China)**: [Create token](https://support.dnspod.cn/Kb/showarticle/tsid/227/) | [Detailed Configuration](docs/en/providers/dnspod.md)
- **Alibaba Cloud DNS**: [Apply for accesskey](https://help.aliyun.com/document_detail/87745.htm) | [Detailed Configuration](docs/en/providers/alidns.md)
- **Alibaba Cloud ESA**: [Apply for accesskey](https://help.aliyun.com/document_detail/87745.htm) | [Detailed Configuration](docs/en/providers/aliesa.en.md)
- **DNS.COM**: [API Key/Secret](https://www.dns.com/member/apiSet) | [Detailed Configuration](docs/en/providers/dnscom.en.md)
- **DNSPOD (International)**: [Get token](https://www.dnspod.com/docs/info.html#get-the-user-token) | [Detailed Configuration](docs/en/providers/dnspod_com.en.md)
- **CloudFlare**: [API Key](https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-my-Cloudflare-API-key-) (Besides `email + API KEY`, you can also use `Token`, **requires list Zone permission**) | [Detailed Configuration](docs/en/providers/cloudflare.en.md)
- **HE.net**: [DDNS Documentation](https://dns.he.net/docs.html) (Only fill the set password in the `token` field, `id` field can be left empty) | [Detailed Configuration](docs/en/providers/he.en.md)
- **Huawei Cloud DNS**: [APIKEY Application](https://console.huaweicloud.com/iam/) (Click Access Keys on the left, then click Create Access Key) | [Detailed Configuration](docs/en/providers/huaweidns.en.md)
- **NameSilo**: [API Key](https://www.namesilo.com/account/api-manager) (Get API Key from API Manager) | [Detailed Configuration](docs/en/providers/namesilo.en.md)
- **Tencent Cloud DNS**: [Detailed Configuration](docs/en/providers/tencentcloud.en.md)
- **No-IP**: [Username and Password](https://www.noip.com/) (Use No-IP account username and password) | [Detailed Configuration](docs/en/providers/noip.en.md)
- **Custom Callback**: For parameter configuration, please refer to the custom callback configuration instructions below
2. Modify the configuration file, `ipv4` and `ipv6` fields for domains to be updated, refer to configuration instructions for details
@@ -147,11 +147,11 @@ Docker version is recommended for best compatibility, small size, and optimized
All fields can be configured through three methods, with priority: **Command Line Parameters > JSON Configuration File > Environment Variables**
1. [Command Line Parameters](doc/config/cli.en.md) `ddns --key=value` (use `ddns -h` for details), highest priority
2. [JSON Configuration File](doc/config/json.en.md) (null values are considered valid and will override environment variable settings; if no corresponding key exists, environment variables will be used)
3. [Environment Variables](doc/config/env.en.md) with DDNS_ prefix plus key in uppercase or lowercase, dots converted to underscores (`${ddns_id}` or `${DDNS_ID}`, `${DDNS_LOG_LEVEL}`)
1. [Command Line Parameters](docs/en/config/cli.en.md) `ddns --key=value` (use `ddns -h` for details), highest priority
2. [JSON Configuration File](docs/en/config/json.en.md) (null values are considered valid and will override environment variable settings; if no corresponding key exists, environment variables will be used)
3. [Environment Variables](docs/en/config/env.en.md) with DDNS_ prefix plus key in uppercase or lowercase, dots converted to underscores (`${ddns_id}` or `${DDNS_ID}`, `${DDNS_LOG_LEVEL}`)
> 📖 **Environment Variables Documentation**: See [Environment Variables Configuration](doc/config/env.en.md) for detailed usage and examples of all environment variables
> 📖 **Environment Variables Documentation**: See [Environment Variables Configuration](docs/en/config/env.en.md) for detailed usage and examples of all environment variables
<details open>
<summary markdown="span">config.json Configuration File</summary>
@@ -159,7 +159,7 @@ All fields can be configured through three methods, with priority: **Command Lin
- A template configuration file will be automatically generated on first run
- Use `-c` to specify a configuration file (defaults to config.json in the current directory)
- Recommended to use editors that support JsonSchema like VSCode for editing configuration files
- See [JSON Configuration File Documentation](doc/config/json.en.md) for complete configuration options and examples
- See [JSON Configuration File Documentation](docs/en/config/json.en.md) for complete configuration options and examples
```bash
ddns -c path/to/config.json
@@ -175,7 +175,7 @@ ddns -c https://ddns.newfuture.cc/tests/config/debug.json
| :----: | :----------------: | :------: | :---------: | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id | string | √ | N/A | API Access ID | Cloudflare uses email (leave empty when using Token)<br>HE.net can be left empty<br>Huawei Cloud uses Access Key ID (AK) |
| token | string | √ | N/A | API Auth Token | Some platforms call it secret key, **remove when sharing feedback** |
| dns | string | No | `"dnspod"` | DNS Provider | Alibaba DNS: `alidns`, Alibaba ESA: `aliesa`, Cloudflare: `cloudflare`, DNS.COM: `dnscom`, DNSPOD China: `dnspod`, DNSPOD International: `dnspod_com`, HE.net: `he`, Huawei Cloud: `huaweidns`, NameSilo: `namesilo`, Tencent Cloud: `tencentcloud`, Tencent EdgeOne: `edgeone`, No-IP: `noip`, Custom Callback: `callback`. Some providers have [detailed configuration docs](doc/providers/) |
| dns | string | No | `"dnspod"` | DNS Provider | Alibaba DNS: `alidns`, Alibaba ESA: `aliesa`, Cloudflare: `cloudflare`, DNS.COM: `dnscom`, DNSPOD China: `dnspod`, DNSPOD International: `dnspod_com`, HE.net: `he`, Huawei Cloud: `huaweidns`, NameSilo: `namesilo`, Tencent Cloud: `tencentcloud`, Tencent EdgeOne: `edgeone`, No-IP: `noip`, Custom Callback: `callback`. Some providers have [detailed configuration docs](docs/en/providers/) |
| ipv4 | array | No | `[]` | IPv4 Domain List | When `[]`, IPv4 address will not be retrieved and updated |
| ipv6 | array | No | `[]` | IPv6 Domain List | When `[]`, IPv6 address will not be retrieved and updated |
| index4 | string\|int\|array | No | `"default"` | IPv4 Get Method | Can set `network interface`, `private`, `public`, `regex` etc. |
@@ -207,7 +207,7 @@ ddns -c https://ddns.newfuture.cc/tests/config/debug.json
- `id` field: Fill in callback URL starting with HTTP or HTTPS, HTTPS recommended, supports variable replacement
- `token` field: POST request parameters (JSON object or JSON string), use GET request if this field is empty or missing. When JSON parameter values contain constants from the table below, they will be automatically replaced with actual content
For detailed configuration guide, see: [Callback Provider Configuration](doc/providers/callback.en.md)
For detailed configuration guide, see: [Callback Provider Configuration](docs/en/providers/callback.en.md)
| Constant Name | Constant Content | Description |
| ---------------- | ---------------------------- | ----------- |
@@ -299,7 +299,7 @@ ddns task --disable
> - ✅ Supports all DDNS configuration parameters
> - ✅ Unified command-line interface
For detailed configuration guide, see: [CLI Parameters Documentation](/doc/config/cli.en.md#task-management)
For detailed configuration guide, see: [CLI Parameters Documentation](docs/en/config/cli.md#task-management)
#### Docker
+33 -33
View File
@@ -1,4 +1,4 @@
# [<img src="/doc/img/ddns.svg" width="32px" height="32px"/>](https://ddns.newfuture.cc) DDNS
# [<img src="docs/img/ddns.svg" width="32px" height="32px"/>](https://ddns.newfuture.cc) DDNS
> 自动更新 DNS 解析到本机 IP 地址,支持 IPv4/IPv6,内网/公网 IP,自动创建 DNS 记录
@@ -15,26 +15,26 @@
### 🚀 多平台支持
- **Docker**: 推荐方式,支持 `amd64`、`arm64`、`arm/v7` 等多架构 ([使用文档](doc/docker.md))
- **Docker**: 推荐方式,支持 `amd64`、`arm64`、`arm/v7` 等多架构 ([使用文档](docs/docker.md))
- **二进制文件**: 单文件运行,支持 Windows/Linux/macOS ([下载地址](https://github.com/NewFuture/DDNS/releases/latest))
- **pip 安装**: `pip install ddns`
- **源码运行**: 无依赖,仅需 Python 环境
### ⚙️ 灵活配置
- **命令行参数**: `ddns --dns=dnspod --id=xxx --token=xxx` ([配置文档](doc/config/cli.md))
- **JSON 配置文件**: 支持多域名、多服务商配置,支持远程URL配置 ([配置文档](doc/config/json.md))
- **环境变量**: Docker 友好的配置方式 ([配置文档](doc/config/env.md))
- **命令行参数**: `ddns --dns=dnspod --id=xxx --token=xxx` ([配置文档](docs/config/cli.md))
- **JSON 配置文件**: 支持多域名、多服务商配置,支持远程URL配置 ([配置文档](docs/config/json.md))
- **环境变量**: Docker 友好的配置方式 ([配置文档](docs/config/env.md))
### 🌍 DNS 服务商支持
支持 15+ 主流 DNS 服务商,包括:
- **国内**: [阿里DNS](doc/providers/alidns.md) ⚡、[阿里云ESA](doc/providers/aliesa.md) ⚡、[DNSPOD](doc/providers/dnspod.md)、[腾讯云DNS](doc/providers/tencentcloud.md) ⚡、[腾讯云EdgeOne](doc/providers/edgeone.md) ⚡、[华为云DNS](doc/providers/huaweidns.md) ⚡、[DNS.COM](doc/providers/51dns.md)
- **国际**: [Cloudflare](doc/providers/cloudflare.md)、[DNSPOD国际版](doc/providers/dnspod_com.md)、[HE.net](doc/providers/he.md)、[NameSilo](doc/providers/namesilo.md)、[No-IP](doc/providers/noip.md)
- **自定义**: [回调 API](doc/providers/callback.md)、[调试模式](doc/providers/debug.md)
- **国内**: [阿里DNS](docs/providers/alidns.md) ⚡、[阿里云ESA](docs/providers/aliesa.md) ⚡、[DNSPOD](docs/providers/dnspod.md)、[腾讯云DNS](docs/providers/tencentcloud.md) ⚡、[腾讯云EdgeOne](docs/providers/edgeone.md) ⚡、[华为云DNS](docs/providers/huaweidns.md) ⚡、[DNS.COM](docs/providers/51dns.md)
- **国际**: [Cloudflare](docs/providers/cloudflare.md)、[DNSPOD国际版](docs/providers/dnspod_com.md)、[HE.net](docs/providers/he.md)、[NameSilo](docs/providers/namesilo.md)、[No-IP](docs/providers/noip.md)
- **自定义**: [回调 API](docs/providers/callback.md)、[调试模式](docs/providers/debug.md)
> ⚡ 表示支持 HMAC-SHA256 企业级安全认证 | [查看所有服务商](doc/providers/)
> ⚡ 表示支持 HMAC-SHA256 企业级安全认证 | [查看所有服务商](docs/providers/)
### 🔧 高级功能
@@ -44,7 +44,7 @@
- 内网/公网 IP 自动检测
- HTTP 代理和多代理切换
- 本地缓存减少 API 调用
- [定时任务](doc/config/cli.md#task-management-定时任务管理)和日志管理
- [定时任务](docs/config/cli.md#task-management-定时任务管理)和日志管理
## 使用
@@ -56,7 +56,7 @@
- #### Docker(推荐)
详细说明和高级用法请查看 [Docker 使用文档](/doc/docker.md)
详细说明和高级用法请查看 [Docker 使用文档](docs/docker.md)
<details>
<summary markdown="span">支持命令行,配置文件,和环境变量传参</summary>
@@ -98,7 +98,7 @@
```
提示:安装到系统目录(如 /usr/local/bin)可能需要 root 或 sudo 权限;若权限不足,可改为 `sudo sh` 运行。
详细说明请查看 [一键安装文档](doc/install.md)
详细说明请查看 [一键安装文档](docs/install.md)
- #### pip 安装(需要 pip 或 easy_install)
@@ -114,18 +114,18 @@
1. 申请 api `token`,填写到对应的 `id` 和 `token` 字段:
- **DNSPOD(中国版)**: [创建 token](https://support.dnspod.cn/Kb/showarticle/tsid/227/) | [详细配置文档](doc/providers/dnspod.md)
- **阿里云 DNS**: [申请 accesskey](https://help.aliyun.com/document_detail/87745.htm) | [详细配置文档](doc/providers/alidns.md)
- **阿里云边缘安全加速(ESA)**: [申请 accesskey](https://help.aliyun.com/document_detail/87745.htm) | [详细配置文档](doc/providers/aliesa.md)
- **51DNS(dns.com)**: [API Key/Secret](https://www.dns.com/member/apiSet) | [详细配置文档](doc/providers/51dns.md)
- **DNSPOD(国际版)**: [获取 token](https://www.dnspod.com/docs/info.html#get-the-user-token) | [详细配置文档](doc/providers/dnspod_com.md)
- **CloudFlare**: [API Key](https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-my-Cloudflare-API-key-)(除了 `email + API KEY`,也可使用 `Token`,**需要list Zone 权限**) | [详细配置文档](doc/providers/cloudflare.md)
- **HE.net**: [DDNS 文档](https://dns.he.net/docs.html)(仅需将设置的密码填入 `token` 字段,`id` 字段可留空) | [详细配置文档](doc/providers/he.md)
- **华为云 DNS**: [APIKEY 申请](https://console.huaweicloud.com/iam/)(点左边访问密钥,然后点新增访问密钥) | [详细配置文档](doc/providers/huaweidns.md)
- **NameSilo**: [API Key](https://www.namesilo.com/account/api-manager)(API Manager 中获取 API Key) | [详细配置文档](doc/providers/namesilo.md)
- **腾讯云 DNS**: [API Secret](https://console.cloud.tencent.com/cam/capi) | [详细配置文档](doc/providers/tencentcloud.md)
- **腾讯云 EdgeOne**: [API Secret](https://console.cloud.tencent.com/cam/capi) | [详细配置文档](doc/providers/edgeone.md)
- **No-IP**: [用户名和密码](https://www.noip.com/)(使用 No-IP 账户的用户名和密码) | [详细配置文档](doc/providers/noip.md)
- **DNSPOD(中国版)**: [创建 token](https://support.dnspod.cn/Kb/showarticle/tsid/227/) | [详细配置文档](docs/providers/dnspod.md)
- **阿里云 DNS**: [申请 accesskey](https://help.aliyun.com/document_detail/87745.htm) | [详细配置文档](docs/providers/alidns.md)
- **阿里云边缘安全加速(ESA)**: [申请 accesskey](https://help.aliyun.com/document_detail/87745.htm) | [详细配置文档](docs/providers/aliesa.md)
- **51DNS(dns.com)**: [API Key/Secret](https://www.dns.com/member/apiSet) | [详细配置文档](docs/providers/51dns.md)
- **DNSPOD(国际版)**: [获取 token](https://www.dnspod.com/docs/info.html#get-the-user-token) | [详细配置文档](docs/providers/dnspod_com.md)
- **CloudFlare**: [API Key](https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-my-Cloudflare-API-key-)(除了 `email + API KEY`,也可使用 `Token`,**需要list Zone 权限**) | [详细配置文档](docs/providers/cloudflare.md)
- **HE.net**: [DDNS 文档](https://dns.he.net/docs.html)(仅需将设置的密码填入 `token` 字段,`id` 字段可留空) | [详细配置文档](docs/providers/he.md)
- **华为云 DNS**: [APIKEY 申请](https://console.huaweicloud.com/iam/)(点左边访问密钥,然后点新增访问密钥) | [详细配置文档](docs/providers/huaweidns.md)
- **NameSilo**: [API Key](https://www.namesilo.com/account/api-manager)(API Manager 中获取 API Key) | [详细配置文档](docs/providers/namesilo.md)
- **腾讯云 DNS**: [API Secret](https://console.cloud.tencent.com/cam/capi) | [详细配置文档](docs/providers/tencentcloud.md)
- **腾讯云 EdgeOne**: [API Secret](https://console.cloud.tencent.com/cam/capi) | [详细配置文档](docs/providers/edgeone.md)
- **No-IP**: [用户名和密码](https://www.noip.com/)(使用 No-IP 账户的用户名和密码) | [详细配置文档](docs/providers/noip.md)
- **自定义回调**: 参数填写方式请查看下方的自定义回调配置说明
2. 修改配置文件,`ipv4` 和 `ipv6` 字段,为待更新的域名,详细参照配置说明
@@ -134,9 +134,9 @@
所有字段可通过三种方式进行配置,优先级为:**命令行参数 > JSON配置文件 > 环境变量**
1. [命令行参数](doc/config/cli.md) `ddns --key=value`(`ddns -h` 查看详情),优先级最高
2. [JSON 配置文件](doc/config/json.md)(值为 null 认为是有效值,会覆盖环境变量的设置,如果没有对应的 key 则会尝试使用环境变量)
3. [环境变量](doc/config/env.md) DDNS_ 前缀加上 key (`${ddns_id}` 或 `${DDNS_ID}`,`${DDNS_LOG_LEVEL}`)
1. [命令行参数](docs/config/cli.md) `ddns --key=value`(`ddns -h` 查看详情),优先级最高
2. [JSON 配置文件](docs/config/json.md)(值为 null 认为是有效值,会覆盖环境变量的设置,如果没有对应的 key 则会尝试使用环境变量)
3. [环境变量](docs/config/env.md) DDNS_ 前缀加上 key (`${ddns_id}` 或 `${DDNS_ID}`,`${DDNS_LOG_LEVEL}`)
### 配置优先级和字段覆盖关系
@@ -152,9 +152,9 @@
- `debug`参数只在命令行中有效,JSON配置文件中的同名设置无效
- 多值参数(如`ipv4`、`ipv6`等)在命令行中使用方式为重复使用参数,如`--ipv4 domain1 --ipv4 domain2`
各配置方式的详细说明请查看对应文档:[命令行](doc/config/cli.md)、[JSON配置](doc/config/json.md)、[环境变量](doc/config/env.md)、[服务商配置](doc/providers/)
各配置方式的详细说明请查看对应文档:[命令行](docs/config/cli.md)、[JSON配置](docs/config/json.md)、[环境变量](docs/config/env.md)、[服务商配置](docs/providers/)
> 📖 **环境变量详细配置**: 查看 [环境变量配置文档](doc/config/env.md) 了解所有环境变量的详细用法和示例
> 📖 **环境变量详细配置**: 查看 [环境变量配置文档](docs/config/env.md) 了解所有环境变量的详细用法和示例
<details open>
<summary markdown="span">config.json 配置文件</summary>
@@ -162,7 +162,7 @@
- 首次运行会自动生成一个模板配置文件
- 可以使用 `-c` 使用指定的配置文件(默认读取当前目录的 config.json)
- 推荐使用 vscode 等支持 JsonSchema 的编辑器编辑配置文件
- 查看 [JSON配置文件详细文档](doc/config/json.md) 了解完整的配置选项和示例
- 查看 [JSON配置文件详细文档](docs/config/json.md) 了解完整的配置选项和示例
```bash
ddns -c path/to/config.json
@@ -178,7 +178,7 @@ ddns -c https://ddns.newfuture.cc/tests/config/debug.json
| :----: | :----------------: | :------: | :---------: | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id | string | √ | 无 | api 访问 ID | Cloudflare 为邮箱(使用 Token 时留空)<br>HE.net 可留空<br>华为云为 Access Key ID (AK) |
| token | string | √ | 无 | api 授权 token | 部分平台叫 secret key,**反馈粘贴时删除** |
| dns | string | No | `"dnspod"` | dns 服务商 | 阿里 DNS 为 `alidns`,阿里ESA为 `aliesa`,Cloudflare 为 `cloudflare`,dns.com 为 `dnscom`,DNSPOD 国内为 `dnspod`,DNSPOD 国际为 `dnspod_com`,HE.net 为 `he`,华为云为 `huaweidns`,NameSilo 为 `namesilo`,腾讯云为 `tencentcloud`,腾讯云EdgeOne为 `edgeone`,No-IP 为 `noip`,自定义回调为 `callback`。部分服务商有[详细配置文档](doc/providers/) |
| dns | string | No | `"dnspod"` | dns 服务商 | 阿里 DNS 为 `alidns`,阿里ESA为 `aliesa`,Cloudflare 为 `cloudflare`,dns.com 为 `dnscom`,DNSPOD 国内为 `dnspod`,DNSPOD 国际为 `dnspod_com`,HE.net 为 `he`,华为云为 `huaweidns`,NameSilo 为 `namesilo`,腾讯云为 `tencentcloud`,腾讯云EdgeOne为 `edgeone`,No-IP 为 `noip`,自定义回调为 `callback`。部分服务商有[详细配置文档](docs/providers/) |
| ipv4 | array | No | `[]` | ipv4 域名列表 | 为 `[]` 时,不会获取和更新 IPv4 地址 |
| ipv6 | array | No | `[]` | ipv6 域名列表 | 为 `[]` 时,不会获取和更新 IPv6 地址 |
| index4 | string\|int\|array | No | `"default"` | ipv4 获取方式 | 可设置 `网卡`、`内网`、`公网`、`正则` 等方式 |
@@ -210,7 +210,7 @@ ddns -c https://ddns.newfuture.cc/tests/config/debug.json
- `id` 字段填写回调地址,以 HTTP 或 HTTPS 开头,推荐采用 HTTPS 方式的回调 API,支持变量替换功能。
- `token` 字段为 POST 请求参数(JSON对象或JSON字符串),本字段为空或不存在则使用 GET 方式发起回调。当 JSON 的参数值包含下表所示的常量字符串时,会自动替换为实际内容。
详细配置指南请查看:[Callback Provider 配置文档](doc/providers/callback.md)
详细配置指南请查看:[Callback Provider 配置文档](docs/providers/callback.md)
| 常量名称 | 常量内容 | 说明 |
| ---------------- | ------------------------ | -------- |
@@ -262,7 +262,7 @@ ddns task --enable
ddns task --disable
```
详细配置指南请参考:[命令行参数文档](/doc/config/cli.md#task-management-定时任务管理)
详细配置指南请参考:[命令行参数文档](docs/config/cli.md#task-management-定时任务管理)
### Docker
+1 -1
View File
@@ -31,7 +31,7 @@ WORKDIR /app
FROM ${BUILDER} AS builder
# 拷贝项目文件
COPY run.py .github/patch.py doc/img/ddns.svg .
COPY run.py .github/patch.py docs/img/ddns.svg .
COPY ddns ddns
ARG GITHUB_REF_NAME
ENV GITHUB_REF_NAME=${GITHUB_REF_NAME}
+440
View File
@@ -0,0 +1,440 @@
import { defineConfig } from 'vitepress'
import * as fs from 'fs'
import * as path from 'path'
import { fileURLToPath } from 'url'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
// Setup documentation structure before VitePress processes files
function setupDocs() {
const rootDir = path.resolve(__dirname, '../..')
const docsDir = path.resolve(__dirname, '..')
console.log('Setting up documentation structure...\n')
// Process README files
const processReadme = (sourcePath, targetPath, pathPrefix) => {
if (!fs.existsSync(sourcePath)) return false
const content = fs.readFileSync(sourcePath, 'utf8')
const modifiedContent = content
.replace(new RegExp(`\\(${pathPrefix}`, 'g'), '(/')
.replace(/src="docs\//g, 'src="/')
const targetDir = path.dirname(targetPath)
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir, { recursive: true })
}
fs.writeFileSync(targetPath, modifiedContent)
return true
}
// Copy README.md as docs/index.md (Chinese)
if (processReadme(
path.join(rootDir, 'README.md'),
path.join(docsDir, 'index.md'),
'docs/'
)) {
console.log('✓ Copied README.md to docs/index.md')
}
// Copy README.en.md as docs/en/index.md (English)
if (processReadme(
path.join(rootDir, 'README.en.md'),
path.join(docsDir, 'en', 'index.md'),
'docs/en/'
)) {
console.log('✓ Copied README.en.md to docs/en/index.md')
}
// Copy schema directory to docs/public/schema
const schemaDir = path.join(rootDir, 'schema')
const publicDir = path.join(docsDir, 'public')
if (fs.existsSync(schemaDir)) {
if (!fs.existsSync(publicDir)) {
fs.mkdirSync(publicDir, { recursive: true })
}
const targetSchemaDir = path.join(publicDir, 'schema')
fs.cpSync(schemaDir, targetSchemaDir, { recursive: true, force: true })
console.log('✓ Copied schema/ to docs/public directory')
}
console.log('\nDocumentation structure setup complete!\n')
}
// Run setup before exporting config
setupDocs()
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "DDNS Documentation",
description: "自动更新 DNS 解析到本机 IP 地址",
// 站点配置
base: '/',
lang: 'zh-CN',
lastUpdated: true,
cleanUrls: true,
// 启用死链接检查
ignoreDeadLinks: false,
// URL rewrites to handle /providers/index -> /providers/
rewrites: {
'providers/README.md': 'providers/index.md',
'en/providers/README.md': 'en/providers/index.md'
},
// 生成站点地图
sitemap: {
hostname: 'https://ddns.newfuture.cc'
},
// 构建完成后生成 llms.txt (从模板文件)
buildEnd: async (siteConfig) => {
const templatePath = path.resolve(__dirname, '../llms.txt')
const distPath = path.join(siteConfig.outDir, 'llms.txt')
// Read template and replace variables
let content = fs.readFileSync(templatePath, 'utf-8')
content = content.replace('{{DATE}}', new Date().toISOString().split('T')[0])
fs.writeFileSync(distPath, content, 'utf-8')
console.log('✓ Generated llms.txt from template')
},
// 主题配置
themeConfig: {
// Logo
logo: '/img/ddns.svg',
siteTitle: 'DDNS',
// 导航栏
nav: [
{ text: '首页', link: '/' },
{ text: 'Docker', link: '/docker' },
{ text: '安装', link: '/install' },
{
text: '配置方式',
items: [
{ text: '命令行参数', link: '/config/cli' },
{ text: '环境变量', link: '/config/env' },
{ text: 'JSON配置', link: '/config/json' }
]
},
{
text: 'DNS服务商',
items: [
{ text: '概述', link: '/providers/' },
{ text: '阿里DNS', link: '/providers/alidns' },
{ text: 'DNSPod', link: '/providers/dnspod' },
{ text: 'Cloudflare', link: '/providers/cloudflare' }
]
},
{
text: '开发文档',
items: [
{ text: '配置文档', link: '/dev/config' },
{ text: 'Provider开发', link: '/dev/provider' }
]
}
],
// 侧边栏
sidebar: {
'/config/': [
{
text: '配置方式',
items: [
{ text: '命令行参数', link: '/config/cli' },
{ text: '环境变量', link: '/config/env' },
{ text: 'JSON配置文件', link: '/config/json' }
]
}
],
'/providers/': [
{
text: 'DNS 服务商',
items: [
{ text: '所有服务商', link: '/providers/' },
{ text: '阿里DNS', link: '/providers/alidns' },
{ text: '阿里云ESA', link: '/providers/aliesa' },
{ text: '51DNS', link: '/providers/51dns' },
{ text: 'Cloudflare', link: '/providers/cloudflare' },
{ text: 'DNSPod', link: '/providers/dnspod' },
{ text: 'DNSPod国际版', link: '/providers/dnspod_com' },
{ text: '腾讯云DNS', link: '/providers/tencentcloud' },
{ text: '腾讯云EdgeOne', link: '/providers/edgeone' },
{ text: '华为云DNS', link: '/providers/huaweidns' },
{ text: 'HE.net', link: '/providers/he' },
{ text: 'NameSilo', link: '/providers/namesilo' },
{ text: 'No-IP', link: '/providers/noip' },
{ text: '回调API', link: '/providers/callback' },
{ text: '调试模式', link: '/providers/debug' }
]
}
],
'/dev/': [
{
text: '开发文档',
items: [
{ text: '配置文档', link: '/dev/config' },
{ text: 'Provider开发指南', link: '/dev/provider' }
]
}
]
},
// 编辑链接 - 修复 README.md -> index.html 的映射
editLink: {
pattern: ({ filePath }) => {
// 特殊处理:index.md 实际对应 README.md
if (filePath === 'index.md') {
return 'https://github.com/NewFuture/DDNS/edit/master/README.md';
}
if (filePath === 'en/index.md') {
return 'https://github.com/NewFuture/DDNS/edit/master/README.en.md';
}
// 其他文件:映射到 docs/ 目录
return `https://github.com/NewFuture/DDNS/edit/master/docs/${filePath}`;
},
text: '在 GitHub 上编辑此页'
},
// 最后更新时间
lastUpdated: {
text: '最后更新时间',
formatOptions: {
dateStyle: 'short',
timeStyle: 'short'
}
},
// 社交链接
socialLinks: [
{ icon: 'github', link: 'https://github.com/NewFuture/DDNS' }
],
// 页脚
footer: {
message: 'Released under the MIT License',
copyright: `Copyright © 2016 ~ ${new Date().getFullYear()} NewFuture`
},
// 搜索
search: {
provider: 'local',
options: {
locales: {
root: {
translations: {
button: {
buttonText: '搜索文档',
buttonAriaLabel: '搜索文档'
},
modal: {
noResultsText: '无法找到相关结果',
resetButtonTitle: '清除查询条件',
footer: {
selectText: '选择',
navigateText: '切换'
}
}
}
}
}
}
},
// 大纲配置
outline: {
level: [2, 3],
label: '页面导航'
},
// 文档页脚
docFooter: {
prev: '上一页',
next: '下一页'
},
// 返回顶部
returnToTopLabel: '返回顶部',
// 侧边栏菜单标签
sidebarMenuLabel: '菜单',
// 深色模式开关标签
darkModeSwitchLabel: '主题',
// 浅色模式开关标题
lightModeSwitchTitle: '切换到浅色模式',
// 深色模式开关标题
darkModeSwitchTitle: '切换到深色模式'
},
// Markdown 配置
markdown: {
lineNumbers: true,
theme: {
light: 'github-light',
dark: 'github-dark'
},
config: (md) => {
// Transform link hrefs that point to code files to GitHub blob URLs
md.core.ruler.after('inline', 'transform-code-links', (state) => {
const tokens = state.tokens;
for (let i = 0; i < tokens.length; i++) {
if (tokens[i].type === 'inline' && tokens[i].children) {
const children = tokens[i].children;
for (let j = 0; j < children.length; j++) {
if (children[j].type === 'link_open') {
const attrs = children[j].attrs || [];
for (let k = 0; k < attrs.length; k++) {
if (attrs[k][0] === 'href') {
const href = attrs[k][1];
// Match project file paths like /ddns/xxx.py, /tests/xxx.py
if (href.match(/^\/[a-zA-Z0-9_/.-]+\.(py|md|json|sh|txt)$/)) {
attrs[k][1] = `https://github.com/NewFuture/DDNS/blob/master${href}`;
// Add target="_blank" if not present
const hasTarget = attrs.some(attr => attr[0] === 'target');
if (!hasTarget) {
attrs.push(['target', '_blank']);
}
}
}
}
}
}
}
}
});
}
},
// 多语言支持
locales: {
root: {
label: '简体中文',
lang: 'zh-CN'
},
en: {
label: 'English',
lang: 'en-US',
link: '/en/',
themeConfig: {
nav: [
{ text: 'Home', link: '/en/' },
{ text: 'Docker', link: '/en/docker' },
{ text: 'Install', link: '/en/install' },
{
text: 'Configuration',
items: [
{ text: 'CLI', link: '/en/config/cli' },
{ text: 'Environment', link: '/en/config/env' },
{ text: 'JSON Config', link: '/en/config/json' }
]
},
{
text: 'DNS Providers',
items: [
{ text: 'Overview', link: '/en/providers/' },
{ text: 'AliDNS', link: '/en/providers/alidns' },
{ text: 'DNSPod', link: '/en/providers/dnspod' },
{ text: 'Cloudflare', link: '/en/providers/cloudflare' }
]
},
{
text: 'Development',
items: [
{ text: 'Config Docs', link: '/en/dev/config' },
{ text: 'Provider Guide', link: '/en/dev/provider' }
]
}
],
sidebar: {
'/en/config/': [
{
text: 'Configuration',
items: [
{ text: 'CLI Parameters', link: '/en/config/cli' },
{ text: 'Environment Variables', link: '/en/config/env' },
{ text: 'JSON Configuration', link: '/en/config/json' }
]
}
],
'/en/providers/': [
{
text: 'DNS Providers',
items: [
{ text: 'All Providers', link: '/en/providers/' },
{ text: 'AliDNS', link: '/en/providers/alidns' },
{ text: 'Ali ESA', link: '/en/providers/aliesa' },
{ text: '51DNS', link: '/en/providers/51dns' },
{ text: 'Cloudflare', link: '/en/providers/cloudflare' },
{ text: 'DNSPod', link: '/en/providers/dnspod' },
{ text: 'DNSPod Global', link: '/en/providers/dnspod_com' },
{ text: 'Tencent Cloud DNS', link: '/en/providers/tencentcloud' },
{ text: 'Tencent Cloud EdgeOne', link: '/en/providers/edgeone' },
{ text: 'Huawei Cloud DNS', link: '/en/providers/huaweidns' },
{ text: 'HE.net', link: '/en/providers/he' },
{ text: 'NameSilo', link: '/en/providers/namesilo' },
{ text: 'No-IP', link: '/en/providers/noip' },
{ text: 'Callback API', link: '/en/providers/callback' },
{ text: 'Debug Mode', link: '/en/providers/debug' }
]
}
],
'/en/dev/': [
{
text: 'Development',
items: [
{ text: 'Config Documentation', link: '/en/dev/config' },
{ text: 'Provider Development', link: '/en/dev/provider' }
]
}
]
},
editLink: {
pattern: ({ filePath }) => {
// 特殊处理:index.md 实际对应 README.md
if (filePath === 'index.md') {
return 'https://github.com/NewFuture/DDNS/edit/master/README.md';
}
if (filePath === 'en/index.md') {
return 'https://github.com/NewFuture/DDNS/edit/master/README.en.md';
}
// 其他文件:映射到 docs/ 目录
return `https://github.com/NewFuture/DDNS/edit/master/docs/${filePath}`;
},
text: 'Edit this page on GitHub'
},
lastUpdated: {
text: 'Last updated',
formatOptions: {
dateStyle: 'short',
timeStyle: 'short'
}
},
footer: {
message: 'Released under the MIT License',
copyright: `Copyright © 2016 ~ ${new Date().getFullYear()} NewFuture`
},
outline: {
label: 'On this page'
},
docFooter: {
prev: 'Previous',
next: 'Next'
},
returnToTopLabel: 'Return to top',
sidebarMenuLabel: 'Menu',
darkModeSwitchLabel: 'Appearance',
lightModeSwitchTitle: 'Switch to light mode',
darkModeSwitchTitle: 'Switch to dark mode'
}
}
}
})
+6
View File
@@ -0,0 +1,6 @@
import DefaultTheme from 'vitepress/theme'
import type { Theme } from 'vitepress'
export default {
extends: DefaultTheme
} satisfies Theme
+3 -3
View File
@@ -69,7 +69,7 @@ ddns --ipv4=example.com,www.example.com
| `-c, --config` | 字符串列表 | 指定配置文件路径,支持多个配置文件和远程HTTP(S) URL | `--config config.json` <br> `--config config1.json --config config2.json` <br> `--config https://ddns.newfuture.cc/tests/config/debug.json` |
| `--new-config` | 标志/字符串 | 生成新的配置文件(可指定路径) | `--new-config` <br> `--new-config=config.json` |
| `--debug` | 标志 | 开启调试模式 | `--debug` |
| `--dns` | 选择项 | [DNS服务提供商](providers/README.md)包括:<br>51dns, alidns, aliesa, callback, cloudflare,<br>debug, dnscom, dnspod\_com, dnspod, edgeone, he,<br>huaweidns, noip, tencentcloud | `--dns cloudflare` |
| `--dns` | 选择项 | [DNS服务提供商](../providers/)包括:<br>51dns, alidns, aliesa, callback, cloudflare,<br>debug, dnscom, dnspod\_com, dnspod, edgeone, he,<br>huaweidns, noip, tencentcloud | `--dns cloudflare` |
| `--endpoint` | 字符串 | 自定义API 端点 URL(更换服务节点) | `--endpoint https://api.private.com` |
| `--id` | 字符串 | API 访问 ID、邮箱或 Access ID | `--id user@example.com` |
| `--token` | 字符串 | API 授权令牌或密钥(Secret Key) | `--token abcdef123456` |
@@ -136,7 +136,7 @@ ddns -c local-config.json -c https://remote.example.com/config.json
### `--dns DNS_PROVIDER`
[DNS服务提供商](providers/README.md)详细列表。
[DNS服务提供商](../providers/)详细列表。
### `--id ID`
@@ -170,7 +170,7 @@ ddns --dns callback --id "https://api.example.com/ddns?domain=__DOMAIN__&ip=__IP
ddns --dns callback --id "https://api.example.com/ddns" --token '{"api_key": "your_key", "domain": "__DOMAIN__"}'
```
详细配置请参考:[Callback Provider 配置文档](providers/callback.md)
详细配置请参考:[Callback Provider 配置文档](../providers/callback.md)
## 域名配置参数
+1 -1
View File
@@ -14,7 +14,7 @@ DDNS 支持通过环境变量进行配置,环境变量的优先级为:**[命
| 环境变量 | 参数格式 | 描述 | 示例 |
|------------------------|------------------------------------------------------------------------------------------------------|-----------------------------------|----------------------------------------------------------|
| `DDNS_CONFIG` | 文件路径,支持逗号或分号分隔多个路径,支持远程HTTP(S) URL | 指定配置文件路径,支持多个配置文件和远程配置 | `DDNS_CONFIG="config.json"` 或 `DDNS_CONFIG="cloudflare.json,dnspod.json"` <br> `DDNS_CONFIG="https://ddns.newfuture.cc/tests/config/debug.json"` |
| `DDNS_DNS` | `51dns`、`alidns`、`aliesa`、`callback`、`cloudflare`、`debug`、`dnscom`、`dnspod_com`、`dnspod`、`edgeone`、`he`、`huaweidns`、`noip`、`tencentcloud` | [DNS 服务商](./providers/README.md) | `DDNS_DNS=cloudflare` |
| `DDNS_DNS` | `51dns`、`alidns`、`aliesa`、`callback`、`cloudflare`、`debug`、`dnscom`、`dnspod_com`、`dnspod`、`edgeone`、`he`、`huaweidns`、`noip`、`tencentcloud` | [DNS 服务商](../providers/) | `DDNS_DNS=cloudflare` |
| `DDNS_ID` | 依 DNS 服务商而定 | API 账号 或 ID | `DDNS_ID="user@example.com"` |
| `DDNS_TOKEN` | 依 DNS 服务商而定 | API 授权令牌或 Secret | `DDNS_TOKEN="abcdef123456"` |
| `DDNS_ENDPOINT` | URL(http 或 https 协议) | 自定义 API 地址 | `DDNS_ENDPOINT=https://api.dns.cn` |
+2 -2
View File
@@ -13,7 +13,7 @@ description: 了解DDNS工具的JSON配置文件格式和参数,如何使用
* 当前用户目录 `~/.ddns/config.json`
* Linux当前系统 `/etc/ddns/config.json`
> 注意:在Docker中使用配置文件时,需要通过卷映射将配置文件挂载到容器的`/ddns/`目录。详情请参考[Docker使用文档](docker.md)。
> 注意:在Docker中使用配置文件时,需要通过卷映射将配置文件挂载到容器的`/ddns/`目录。详情请参考[Docker使用文档](../docker.md)。
```bash
# 生成配置文件
@@ -68,7 +68,7 @@ DDNS配置文件遵循JSON模式(Schema),推荐在配置文件中添加`$schem
### dns
`dns`参数指定使用的DNS服务商标识,支持以下值, 请参考 [服务商列表](providers/README.md):
`dns`参数指定使用的DNS服务商标识,支持以下值, 请参考 [服务商列表](../providers/):
> 当 debug 模式,且未配置dns参数时,使用 debug provider。
View File
@@ -66,7 +66,7 @@ ddns --ipv4=example.com,www.example.com
| `-c, --config` | String List | Specify configuration file path, supports multiple config files and remote HTTP(S) URLs | `--config config.json` or `--config config1.json --config config2.json` <br> `--config https://ddns.newfuture.cc/tests/config/debug.json` |
| `--new-config` | Flag/String | Generate a new config file (optional file path) | `--new-config` <br> `--new-config=config.json` |
| `--debug` | Flag | Enable debug mode | `--debug` |
| `--dns` | Choice | [DNS Providers](../providers/README.en.md) include:<br>51dns, alidns, aliesa, callback, cloudflare,<br>debug, dnscom, dnspod\_com, dnspod, edgeone, he,<br>huaweidns, noip, tencentcloud | `--dns cloudflare` |
| `--dns` | Choice | [DNS Providers](../providers/) include:<br>51dns, alidns, aliesa, callback, cloudflare,<br>debug, dnscom, dnspod\_com, dnspod, edgeone, he,<br>huaweidns, noip, tencentcloud | `--dns cloudflare` |
| `--endpoint` | String | Custom API endpoint URL (useful for self-hosted services) | `--endpoint https://api.private.com` |
| `--id` | String | API Access ID, email, or Access Key | `--id user@example.com` |
| `--token` | String | API token or secret key | `--token abcdef123456` |
@@ -500,7 +500,7 @@ This means command line arguments will override any settings in configuration fi
## See Also
- [Environment Variables Configuration](env.en.md)
- [JSON Configuration File](json.en.md)
- [Docker Usage](../docker.en.md)
- [Environment Variables Configuration](env.md)
- [JSON Configuration File](json.md)
- [Docker Usage](../docker.md)
- [Provider-specific Configuration](../providers/)
@@ -2,7 +2,7 @@
## Overview
DDNS supports configuration through environment variables with the following priority order: **[Command Line Arguments](cli.en.md) > [Configuration File](json.en.md) > Environment Variables**
DDNS supports configuration through environment variables with the following priority order: **[Command Line Arguments](cli.md) > [Configuration File](json.md) > Environment Variables**
All environment variables use the `DDNS_` prefix followed by the parameter name (recommended uppercase).
@@ -14,7 +14,7 @@ All environment variables use the `DDNS_` prefix followed by the parameter name
| Environment Variable | Accepted Values | Description | Example |
|--------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------|-------------------------------------------------------------|
| `DDNS_CONFIG` | File path, supports comma or semicolon-separated multiple paths, supports remote HTTP(S) URLs | Specify config file path, supports multiple files and remote configs | `DDNS_CONFIG="config.json"` or `DDNS_CONFIG="cloudflare.json,dnspod.json"` <br> `DDNS_CONFIG="https://ddns.newfuture.cc/tests/config/debug.json"` |
| `DDNS_DNS` | `51dns`, `alidns`, `aliesa`, `callback`, `cloudflare`, `debug`, `dnscom`, `dnspod_com`, `dnspod`, `edgeone`, `he`, `huaweidns`, `noip`, `tencentcloud` | [DNS Provider](./providers/README.en.md) | `DDNS_DNS=cloudflare` |
| `DDNS_DNS` | `51dns`, `alidns`, `aliesa`, `callback`, `cloudflare`, `debug`, `dnscom`, `dnspod_com`, `dnspod`, `edgeone`, `he`, `huaweidns`, `noip`, `tencentcloud` | [DNS Provider](../providers/) | `DDNS_DNS=cloudflare` |
| `DDNS_ID` | Depends on the provider | API account or ID | `DDNS_ID="user@example.com"` |
| `DDNS_TOKEN` | Depends on the provider | API token or secret | `DDNS_TOKEN="abcdef123456"` |
| `DDNS_ENDPOINT` | URL (starting with http or https) | Custom API endpoint | `DDNS_ENDPOINT=https://api.dns.cn` |
@@ -146,7 +146,7 @@ When using `DDNS_DNS="callback"`, configure custom callbacks with these environm
- **DDNS_ID**: Callback URL address with variable substitution support
- **DDNS_TOKEN**: POST request parameters (JSON string), empty for GET requests
For detailed configuration, see: [Callback Provider Configuration Documentation](providers/callback.en.md)
For detailed configuration, see: [Callback Provider Configuration Documentation](../providers/callback.md)
**Examples**:
@@ -605,7 +605,7 @@ When using environment variables, DDNS will validate the configuration and provi
## See Also
- [Command Line Arguments](cli.en.md)
- [JSON Configuration File](json.en.md)
- [Docker Usage](docker.en.md)
- [Provider-specific Configuration](providers/)
- [Command Line Arguments](cli.md)
- [JSON Configuration File](json.md)
- [Docker Usage](../docker.md)
- [Provider-specific Configuration](../providers/)
@@ -2,9 +2,9 @@
title: DDNS JSON Configuration
post_tile: JSON File Configuration
header_pages:
- /README.en.md
- /doc/config/
- /docs/proivders/README.en.md
- /
- /config/
- /docs/proivders/
---
# DDNS JSON Configuration File Reference
@@ -18,7 +18,7 @@ By default, DDNS looks for a `config.json` file in the current directory. You ca
* Current user directory `~/.ddns/config.json`
* Linux system directory `/etc/ddns/config.json`
> Note: When using configuration files in Docker, you need to mount the configuration file to the container's `/ddns/` directory through volume mapping. For details, please refer to the [Docker documentation](docker.en.md).
> Note: When using configuration files in Docker, you need to mount the configuration file to the container's `/ddns/` directory through volume mapping. For details, please refer to the [Docker documentation](../docker.md).
```bash
# Generate configuration file
@@ -73,7 +73,7 @@ Configuration Parameters Table
### dns
The `dns` parameter specifies the DNS provider identifier. For supported values, please refer to the [Provider List](providers/README.en.md):
The `dns` parameter specifies the DNS provider identifier. For supported values, please refer to the [Provider List](../providers/):
> When in debug mode and no dns parameter is configured, the debug provider is used.
@@ -114,9 +114,9 @@ class Config(object):
Update the relevant documentation files:
- `doc/config/cli.en.md` - Add CLI parameter documentation
- `doc/config/env.en.md` - Add environment variable documentation
- `doc/config/json.en.md` - Add JSON configuration documentation
- `config/cli.md` - Add CLI parameter documentation
- `config/env.md` - Add environment variable documentation
- `config/json.md` - Add JSON configuration documentation
## Configuration Value Processing
+9 -9
View File
@@ -6,9 +6,9 @@
- Built-in scheduler, automatic updates every 5 minutes by default
- No external dependencies, ready to use, optimized performance with low resource usage
- Configuration Methods:
- [CLI Command Line Parameters](config/cli.en.md)
- [JSON Configuration File](config/json.en.md)
- [Environment Variables](config/env.en.md)
- [CLI Command Line Parameters](config/cli.md)
- [JSON Configuration File](config/json.md)
- [Environment Variables](config/env.md)
## Image Information
@@ -56,7 +56,7 @@ DDNS Docker image supports three configuration methods: command line, environmen
### Using Command Line Parameters (CLI)
You can refer to the [CLI parameter documentation](config/cli.en.md) for a detailed parameter list.
You can refer to the [CLI parameter documentation](config/cli.md) for a detailed parameter list.
In this case, `docker run -v /local/config/:/ddns/ --name=ddns --network=host newfuture/ddns` is equivalent to the `ddns` command line and will not execute scheduled tasks.
This method is suitable for one-time runs or debugging scenarios. Parameters are identical to DDNS command line parameters.
@@ -79,7 +79,7 @@ docker run -d -v /host/config/:/ddns/ newfuture/ddns
```
Where `/host/config/` is your local directory containing `config.json`.
For details on `config.json` content, refer to [JSON Configuration File Documentation](config/json.en.md).
For details on `config.json` content, refer to [JSON Configuration File Documentation](config/json.md).
### Using Environment Variables (ENV)
@@ -99,7 +99,7 @@ docker run -d \
newfuture/ddns
```
To learn about all supported environment variables, please refer to [Environment Variable Configuration Documentation](config/env.en.md).
To learn about all supported environment variables, please refer to [Environment Variable Configuration Documentation](config/env.md).
## Network Modes
@@ -381,9 +381,9 @@ RUN chmod +x /bin/custom-script.sh
- [DDNS GitHub Repository](https://github.com/NewFuture/DDNS)
- [Docker Hub - newfuture/ddns](https://hub.docker.com/r/newfuture/ddns)
- [Environment Variable Configuration Details](config/env.en.md)
- [JSON Configuration File Details](config/json.en.md)
- [Command Line Parameter Details](config/cli.en.md)
- [Environment Variable Configuration Details](config/env.md)
- [JSON Configuration File Details](config/json.md)
- [Command Line Parameter Details](config/cli.md)
## Configuration Examples for Different DNS Providers
@@ -53,16 +53,16 @@ Official Website: <https://www.51dns.com/>
| dns | Provider ID | String | `dnscom` | None | Provider |
| id | Authentication ID| String | 51DNS API Key | None | Provider |
| token | Authentication Key| String | 51DNS Secret Key | None | Provider |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| line | Resolution line | String | [See below](#line) | `1` | Provider |
| ttl | TTL time | Integer (seconds) | [See below](#ttl) | `600` | Provider |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration| Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration| Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -6,20 +6,20 @@ This directory contains detailed configuration guides for various DNS providers.
| Provider | Service Provider | Chinese Doc | Configuration Doc | Features |
|----------|------------------|-------------|-------------------|----------|
| `alidns` | [Alibaba Cloud DNS](https://dns.console.aliyun.com/) | [alidns 中文文档](alidns.md) | [alidns English Doc](alidns.en.md) | Alibaba Cloud ecosystem integration |
| `aliesa` | [Alibaba Cloud ESA](https://esa.console.aliyun.com/) | [aliesa 中文文档](aliesa.md) | [aliesa English Doc](aliesa.en.md) | Alibaba Cloud Edge Security Acceleration |
| `callback` | Custom API (Webhook) | [callback 中文文档](callback.md) | [callback English Doc](callback.en.md) | Custom HTTP API |
| `cloudflare` | [Cloudflare](https://www.cloudflare.com/) | [cloudflare 中文文档](cloudflare.md) | [cloudflare English Doc](cloudflare.en.md) | Global CDN and DNS service |
| `debug` | Debug Provider | [debug 中文文档](debug.md) | [debug English Doc](debug.en.md) | IP address printing for debugging |
| `dnscom` | [DNS.COM](https://www.dns.com/) | [51dns 中文文档](51dns.md) | [51DNS English Doc](51dns.en.md) | ⚠️ Pending verification |
| `dnspod_com` | [DNSPod Global](https://www.dnspod.com/) | [dnspod_com 中文文档](dnspod_com.md) | [dnspod_com English Doc](dnspod_com.en.md) | ⚠️ Pending verification |
| `dnspod` | [DNSPod China](https://www.dnspod.cn/) | [dnspod 中文文档](dnspod.md) | [dnspod English Doc](dnspod.en.md) | Largest DNS provider in China |
| `he` | [HE.net](https://dns.he.net/) | [he 中文文档](he.md) | [he English Doc](he.en.md) | ⚠️ Pending verification, no auto-record creation |
| `huaweidns` | [Huawei Cloud DNS](https://www.huaweicloud.com/product/dns.html) | [huaweidns 中文文档](huaweidns.md) | [huaweidns English Doc](huaweidns.en.md) | ⚠️ Pending verification |
| `noip` | [No-IP](https://www.noip.com/) | [noip 中文文档](noip.md) | [noip English Doc](noip.en.md) | Popular dynamic DNS service |
| `tencentcloud` | [Tencent Cloud DNSPod](https://cloud.tencent.com/product/dns) | [tencentcloud 中文文档](tencentcloud.md) | [tencentcloud English Doc](tencentcloud.en.md) | Tencent Cloud DNSPod service |
| `edgeone` | [Tencent Cloud EdgeOne](https://edgeone.ai) | [edgeone 中文文档](edgeone.md) | [edgeone English Doc](edgeone.en.md) | Tencent Cloud Edge Security Platform (Acceleration Domains) |
| `edgeone_dns` | [Tencent Cloud EdgeOne DNS](https://edgeone.ai) | [edgeone_dns 中文文档](edgeone_dns.md) | [edgeone_dns English Doc](edgeone_dns.en.md) | Tencent Cloud EdgeOne DNS Records |
| `alidns` | [Alibaba Cloud DNS](https://dns.console.aliyun.com/) | [alidns 中文文档](../../providers/alidns.md) | [alidns English Doc](alidns.md) | Alibaba Cloud ecosystem integration |
| `aliesa` | [Alibaba Cloud ESA](https://esa.console.aliyun.com/) | [aliesa 中文文档](../../providers/aliesa.md) | [aliesa English Doc](aliesa.md) | Alibaba Cloud Edge Security Acceleration |
| `callback` | Custom API (Webhook) | [callback 中文文档](../../providers/callback.md) | [callback English Doc](callback.md) | Custom HTTP API |
| `cloudflare` | [Cloudflare](https://www.cloudflare.com/) | [cloudflare 中文文档](../../providers/cloudflare.md) | [cloudflare English Doc](cloudflare.md) | Global CDN and DNS service |
| `debug` | Debug Provider | [debug 中文文档](../../providers/debug.md) | [debug English Doc](debug.md) | IP address printing for debugging |
| `dnscom` | [DNS.COM](https://www.dns.com/) | [51dns 中文文档](../../providers/51dns.md) | [51DNS English Doc](51dns.md) | ⚠️ Pending verification |
| `dnspod_com` | [DNSPod Global](https://www.dnspod.com/) | [dnspod_com 中文文档](../../providers/dnspod_com.md) | [dnspod_com English Doc](dnspod_com.md) | ⚠️ Pending verification |
| `dnspod` | [DNSPod China](https://www.dnspod.cn/) | [dnspod 中文文档](../../providers/dnspod.md) | [dnspod English Doc](dnspod.md) | Largest DNS provider in China |
| `he` | [HE.net](https://dns.he.net/) | [he 中文文档](../../providers/he.md) | [he English Doc](he.md) | ⚠️ Pending verification, no auto-record creation |
| `huaweidns` | [Huawei Cloud DNS](https://www.huaweicloud.com/product/dns.html) | [huaweidns 中文文档](../../providers/huaweidns.md) | [huaweidns English Doc](huaweidns.md) | ⚠️ Pending verification |
| `noip` | [No-IP](https://www.noip.com/) | [noip 中文文档](../../providers/noip.md) | [noip English Doc](noip.md) | Popular dynamic DNS service |
| `tencentcloud` | [Tencent Cloud DNSPod](https://cloud.tencent.com/product/dns) | [tencentcloud 中文文档](../../providers/tencentcloud.md) | [tencentcloud English Doc](tencentcloud.md) | Tencent Cloud DNSPod service |
| `edgeone` | [Tencent Cloud EdgeOne](https://edgeone.ai) | [edgeone 中文文档](../../providers/edgeone.md) | [edgeone English Doc](edgeone.md) | Tencent Cloud Edge Security Platform (Acceleration Domains) |
| `edgeone_dns` | [Tencent Cloud EdgeOne DNS](https://edgeone.ai) | [edgeone_dns 中文文档](../../providers/edgeone_dns.md) | [edgeone_dns English Doc](edgeone_dns.md) | Tencent Cloud EdgeOne DNS Records |
> To add a new provider, [create an issue and fill in the template](https://github.com/NewFuture/DDNS/issues/new?template=new-dns-provider.md)
@@ -34,7 +34,7 @@ Most providers support automatic creation of non-existent DNS records, with exce
### Command Line Configuration
[CLI provides command line configuration](../config/cli.en.md), here are some common command line examples:
[CLI provides command line configuration](../config/cli.md), here are some common command line examples:
```bash
# DNSPod China
@@ -55,7 +55,7 @@ ddns --dns noip --id your_username --token your_password --ipv4 ddns.newfuture.c
### JSON Configuration File
[JSON configuration file](../config/json.en.md) provides a more flexible configuration method, here are some common JSON configuration examples:
[JSON configuration file](../config/json.md) provides a more flexible configuration method, here are some common JSON configuration examples:
#### Traditional Single-Provider Format
@@ -137,7 +137,7 @@ ddns
### Environment Variable Configuration
[Environment variable configuration](../config/env.en.md) provides another configuration method, here are some common environment variable examples:
[Environment variable configuration](../config/env.md) provides another configuration method, here are some common environment variable examples:
```bash
export DDNS_DNS=dnspod
@@ -150,12 +150,12 @@ ddns --debug
## 📚 Related Documentation
- [Command Line Configuration](../config/cli.en.md) - Detailed command line parameter documentation
- [JSON Configuration](../config/json.en.md) - JSON configuration file format documentation
- [Environment Variable Configuration](../config/env.en.md) - Environment variable configuration method
- [Provider Development Guide](../dev/provider.en.md) - How to develop new providers
- [Command Line Configuration](../config/cli.md) - Detailed command line parameter documentation
- [JSON Configuration](../config/json.md) - JSON configuration file format documentation
- [Environment Variable Configuration](../config/env.md) - Environment variable configuration method
- [Provider Development Guide](../dev/provider.md) - How to develop new providers
- [JSON Schema](../../schema/v4.0.json) - Configuration file validation schema
---
If you have questions or need help, please check the [FAQ](../../README.en.md#FAQ) or ask in [GitHub Issues](https://github.com/NewFuture/DDNS/issues).
If you have questions or need help, please check the [FAQ](../../#FAQ) or ask in [GitHub Issues](https://github.com/NewFuture/DDNS/issues).
@@ -65,17 +65,17 @@ You can view and configure permissions in the [RAM Console](https://ram.console.
| dns | Provider identifier | String | `alidns` | None | Provider Parameter |
| id | Authentication ID | String | Alibaba Cloud AccessKey ID | None | Provider Parameter |
| token | Authentication key | String | Alibaba Cloud AccessKey Secret | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| endpoint | API endpoint | URL | [See below](#endpoint) | `https://alidns.aliyuncs.com` | Provider Parameter |
| line | Resolution line | String | [See below](#ttl) | `default` | Provider Parameter |
| ttl | TTL time | Integer (seconds) | [See below](#line)| None | Provider Parameter |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `auto`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -65,16 +65,16 @@ You can view and configure permissions in the [RAM Console](https://ram.console.
| dns | Provider identifier | String | `aliesa` | None | Provider Parameter |
| id | Authentication ID | String | Alibaba Cloud AccessKey ID | None | Provider Parameter |
| token | Authentication key | String | Alibaba Cloud AccessKey Secret | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| endpoint | API endpoint | URL | [See below](#endpoint) | `https://esa.cn-hangzhou.aliyuncs.com` | Provider Parameter |
| ttl | TTL time | Integer (seconds) | 1-86400 | None | Provider Parameter |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `auto`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -2,6 +2,8 @@
Callback Provider is a universal custom callback interface that allows you to forward DDNS update requests to any custom HTTP API endpoint or webhook. This provider is highly flexible, supporting GET and POST requests with variable substitution functionality.
Return to [All Providers](/en/providers/) to see more options
## Basic Configuration
| Parameter | Description | Required | Example |
@@ -31,14 +33,14 @@ Callback Provider is a universal custom callback interface that allows you to fo
| Parameter | Description | Type | Range/Options | Default | Parameter Type |
| :-------: | :---------- | :--- | :------------ | :------ | :------------- |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
## Request Methods
@@ -163,7 +165,7 @@ curl -X POST "https://httpbin.org/post" \
## Related Links
- [DDNS Project Homepage](../../README.md)
- [Configuration File Format](../config/json.en.md)
- [Command Line Usage](../config/cli.en.md)
- [Developer Guide](../dev/provider.en.md)
- [DDNS Project Homepage](/en/)
- [Configuration File Format](../config/json.md)
- [Command Line Usage](../config/cli.md)
- [Developer Guide](../dev/provider.md)
@@ -89,16 +89,16 @@ You can view and configure permissions in [Cloudflare API Token Management](http
| dns | Provider identifier | String | `cloudflare` | None | Provider Parameter |
| id | Authentication email | String | Cloudflare account email (Global API Key only) | None | Provider Parameter |
| token | Authentication key | String | Cloudflare API Token or Global API Key | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| ttl | TTL time | Integer (seconds) | [Reference below](#ttl) | `300/auto` | Provider Parameter |
| proxied | Proxy status | Boolean | `true`, `false` | None | Provider Parameter |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -1,5 +1,7 @@
# Debug Provider Configuration Guide
Return to [All Providers](/en/providers/) to see more options
## Overview
Debug Provider is a virtual DNS provider specifically designed for debugging and testing purposes. It simulates the DNS record update process but does not perform any actual operations, only outputs relevant information to the console to help developers debug DDNS configuration and functionality.
@@ -7,7 +9,7 @@ Debug Provider is a virtual DNS provider specifically designed for debugging and
Official Links:
- Project Homepage: [DDNS Project](https://github.com/NewFuture/DDNS)
- Development Documentation: [Provider Development Guide](../dev/provider.en.md)
- Development Documentation: [Provider Development Guide](../dev/provider.md)
### Important Notice
@@ -47,12 +49,12 @@ Debug Provider does not require any authentication information, no need to confi
| Parameter | Description | Type | Range/Options | Default | Parameter Type |
| :-------: | :---------- | :--- | :------------ | :------ | :------------- |
| dns | Provider identifier | String | `debug` | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `false` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -91,7 +93,7 @@ Debug Provider also simulates some common error scenarios to help test error han
## Support and Resources
- [DDNS Project Documentation](../../README.md)
- [Configuration File Format](../config/json.en.md)
- [Command Line Usage Guide](../config/cli.en.md)
- [Developer Guide](../dev/provider.en.md)
- [DDNS Project Documentation](/en/)
- [Configuration File Format](../config/json.md)
- [Command Line Usage Guide](../config/cli.md)
- [Developer Guide](../dev/provider.md)
@@ -1,9 +1,9 @@
---
redirect_to: /doc/providers/51dns.en.html
redirect_to: /providers/51dns.en.html
---
# DNS.COM Configuration Guide
**DNS.COM has been renamed to 51DNS, redirecting to the new page...**
If the page doesn't redirect automatically, please click: [51DNS Configuration Guide](51dns.en.md)
If the page doesn't redirect automatically, please click: [51DNS Configuration Guide](51dns.md)
@@ -1,6 +1,6 @@
# DNSPod China Configuration Guide
> For International DNSPod, see [DNSPod Global Configuration Guide](dnspod_com.en.md).
> For International DNSPod, see [DNSPod Global Configuration Guide](dnspod_com.md).
## Overview
@@ -46,7 +46,7 @@ Uses DNSPod account email and password. Lower security, only recommended for spe
### 3. Tencent Cloud AccessKey Method
For users using Tencent Cloud AccessKey, please refer to [Tencent Cloud DNSPod Configuration Guide](tencentcloud.en.md).
For users using Tencent Cloud AccessKey, please refer to [Tencent Cloud DNSPod Configuration Guide](tencentcloud.md).
## Complete Configuration Example
@@ -72,16 +72,16 @@ For users using Tencent Cloud AccessKey, please refer to [Tencent Cloud DNSPod C
| dns | Provider identifier | String | `dnspod` | None | Provider Parameter |
| id | Authentication ID | String | DNSPod API Token ID or email | None | Provider Parameter |
| token | Authentication key | String | DNSPod API Token secret or password | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| line | Resolution line | String | [Reference below](#line) | `默认` | Provider Parameter |
| ttl | TTL time | Integer (seconds) | [Reference below](#ttl) | `600` | Provider Parameter |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -141,6 +141,6 @@ ddns -c config.json --debug
- [DNSPod Product Documentation](https://docs.dnspod.cn/)
- [DNSPod API Reference](https://docs.dnspod.cn/api/)
- [DNSPod Console](https://console.dnspod.cn/)
- [Tencent Cloud DNSPod (AccessKey Method)](./tencentcloud.en.md)
- [Tencent Cloud DNSPod (AccessKey Method)](./tencentcloud.md)
> **Recommendation**: Use API Token method to improve security and management convenience, avoid using email/password method.
@@ -65,16 +65,16 @@ Uses DNSPod account email and password. Lower security, only recommended for spe
| dns | Provider identifier | String | `dnspod_com` | None | Provider Parameter |
| id | Authentication ID | String | DNSPod API Token ID or email | None | Provider Parameter |
| token | Authentication key | String | DNSPod API Token secret or password | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Config |
| line | Resolution line | String | [Reference below](#line) | `default` | Provider Parameter |
| ttl | TTL time | Integer (seconds) | [Reference below](#ttl) | `600` | Provider Parameter |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -136,6 +136,6 @@ ddns -c config.json --debug
- [DNSPod International Product Documentation](https://www.dnspod.com/docs/)
- [DNSPod International API Reference](https://www.dnspod.com/docs/index.html)
- [DNSPod International Console](https://www.dnspod.com/)
- [DNSPod China Configuration Guide](./dnspod.en.md)
- [DNSPod China Configuration Guide](./dnspod.md)
> **Recommendation**: Use API Token method to improve security and management convenience, avoid using email/password method. For mainland China users, it is recommended to use [DNSPod China version](./dnspod.en.md).
> **Recommendation**: Use API Token method to improve security and management convenience, avoid using email/password method. For mainland China users, it is recommended to use [DNSPod China version](./dnspod.md).
@@ -4,7 +4,7 @@
Tencent Cloud EdgeOne is an edge computing and acceleration service provided by Tencent Cloud, supporting dynamic management of acceleration domain origin server IP addresses. This DDNS project dynamically updates origin server IP addresses of acceleration domains through the EdgeOne API.
> **Note**: This provider is for managing EdgeOne acceleration domains. For managing regular DNS records of non-accelerated domains, please use the [EdgeOne DNS Provider](./edgeone_dns.en.md).
> **Note**: This provider is for managing EdgeOne acceleration domains. For managing regular DNS records of non-accelerated domains, please use the [EdgeOne DNS Provider](./edgeone_dns.md).
Official Links:
@@ -18,7 +18,7 @@ Official Links:
Uses Tencent Cloud SecretId and SecretKey for authentication, same as Tencent Cloud DNS.
> Same as [Tencent Cloud DNS](tencentcloud.en.md), EdgeOne uses SecretId and SecretKey for authentication. However, the permission requirements are different, and you need to ensure that the account has EdgeOne operation permissions.
> Same as [Tencent Cloud DNS](tencentcloud.md), EdgeOne uses SecretId and SecretKey for authentication. However, the permission requirements are different, and you need to ensure that the account has EdgeOne operation permissions.
#### Getting Authentication Information
@@ -90,7 +90,7 @@ The EdgeOne provider supports flexible switching between acceleration domains an
> **Note**:
>
> - `teoDomainType` parameter is case-insensitive (`dns`, `DNS`, `Dns` are all valid)
> - It is recommended to use the dedicated [EdgeOne DNS Provider](./edgeone_dns.en.md) for cleaner and clearer code
> - It is recommended to use the dedicated [EdgeOne DNS Provider](./edgeone_dns.md) for cleaner and clearer code
### Parameter Description
@@ -100,16 +100,16 @@ The EdgeOne provider supports flexible switching between acceleration domains an
| id | Authentication ID | String | Tencent Cloud SecretId | None | Provider |
| token | Authentication Key| String | Tencent Cloud SecretKey | None | Provider |
| teoDomainType | Domain Type | String | `acceleration`, `dns` | `acceleration` | Provider |
| index4 | IPv4 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 Domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 Domains | Array | Domain list | None | Common Config |
| extra | Extra Parameters | Object | `{"teoDomainType": "dns"}` etc. | None | Provider |
| endpoint | API Endpoint | URL | [Reference below](#endpoint) | `https://teo.tencentcloudapi.com` | Provider |
| proxy | Proxy Settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy Settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL Verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache Settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log Configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log Configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -157,4 +157,4 @@ ddns -c config.json --debug
- [EdgeOne Console](https://console.cloud.tencent.com/edgeone)
- [Tencent Cloud Technical Support](https://cloud.tencent.com/document/product/282)
> **Note**: EdgeOne is primarily designed for edge acceleration scenarios. For traditional DNS resolution services, consider using [Tencent Cloud DNS](./tencentcloud.en.md). For managing DNS records of non-accelerated domains hosted in EdgeOne, please use the [EdgeOne DNS Provider](./edgeone_dns.en.md).
> **Note**: EdgeOne is primarily designed for edge acceleration scenarios. For traditional DNS resolution services, consider using [Tencent Cloud DNS](./tencentcloud.md). For managing DNS records of non-accelerated domains hosted in EdgeOne, please use the [EdgeOne DNS Provider](./edgeone_dns.md).
@@ -21,7 +21,7 @@ Official Links:
Uses Tencent Cloud SecretId and SecretKey for authentication, same as Tencent Cloud DNS.
> Same as [Tencent Cloud DNS](tencentcloud.en.md), EdgeOne uses SecretId and SecretKey for authentication. However, the permission requirements are different, and you need to ensure that the account has EdgeOne operation permissions.
> Same as [Tencent Cloud DNS](tencentcloud.md), EdgeOne uses SecretId and SecretKey for authentication. However, the permission requirements are different, and you need to ensure that the account has EdgeOne operation permissions.
#### Getting Authentication Information
@@ -71,15 +71,15 @@ Permissions can be viewed and configured in [Access Management](https://console.
| dns | Provider ID | String | `edgeone_dns`, `teo_dns`, `edgeone_noacc` | None | Provider |
| id | Authentication ID | String | Tencent Cloud SecretId | None | Provider |
| token | Authentication Key| String | Tencent Cloud SecretKey | None | Provider |
| index4 | IPv4 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 Domains | Array | Domain list | None | Common Config |
| ipv6 | IPv6 Domains | Array | Domain list | None | Common Config |
| endpoint | API Endpoint | URL | [Reference below](#endpoint) | `https://teo.tencentcloudapi.com` | Provider |
| proxy | Proxy Settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy Settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL Verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache Settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log Configuration | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log Configuration | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -133,4 +133,4 @@ ddns -c config.json --debug
- [EdgeOne Console](https://console.cloud.tencent.com/edgeone)
- [Tencent Cloud Technical Support](https://cloud.tencent.com/document/product/282)
> **Tip**: To use EdgeOne's edge acceleration features, use the [EdgeOne Acceleration Domain Provider](./edgeone.en.md). For traditional DNS resolution services without EdgeOne, consider using [Tencent Cloud DNS](./tencentcloud.en.md).
> **Tip**: To use EdgeOne's edge acceleration features, use the [EdgeOne Acceleration Domain Provider](./edgeone.md). For traditional DNS resolution services without EdgeOne, consider using [Tencent Cloud DNS](./tencentcloud.md).
@@ -51,14 +51,14 @@ DNS records and DNS must be created in advance
| :-------: | :--------------- | :------------- | :------------------------------------- | :-------- | :------------- |
| dns | Provider ID | String | `he` | None | Provider Param |
| token | Authentication | String | HE.net DDNS password | None | Provider Param |
| index4 | IPv4 Source | Array | [Reference](../json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 Domain | Array | Domain list | None | Common Config |
| ipv6 | IPv6 Domain | Array | Domain list | None | Common Config |
| proxy | Proxy Settings | Array | [Reference](../json.en.md#proxy) | None | Common Network |
| proxy | Proxy Settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL Verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache Settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log Config | Object | [Reference](../json.en.md#log) | None | Common Config |
| log | Log Config | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -67,17 +67,17 @@ You can view and configure permissions in [Identity and Access Management](https
| dns | Provider ID | String | `huaweidns` | None | Provider Param |
| id | Authentication ID| String | Huawei Cloud Access Key ID | None | Provider Param |
| token | Authentication Key| String | Huawei Cloud Secret Access Key | None | Provider Param |
| index4 | IPv4 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 Domain | Array | Domain list | None | Common Config |
| ipv6 | IPv6 Domain | Array | Domain list | None | Common Config |
| endpoint | API Endpoint | URL | [Reference below](#endpoint) | `https://dns.myhuaweicloud.com`| Provider Param |
| line | Resolution Line | String | [Reference below](#line) | `default` | Provider Param |
| ttl | TTL Time | Integer (seconds)| 1~2147483647 | `300` | Provider Param |
| proxy | Proxy Settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy Settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL Verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache Settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log Config | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log Config | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -53,15 +53,15 @@ NameSilo uses API Key for authentication, which is the only authentication metho
| :-------: | :--------------- | :------------- | :------------------------------------- | :-------- | :------------- |
| dns | Provider ID | String | `namesilo` | None | Provider Param |
| token | Authentication Key| String | NameSilo API Key | None | Provider Param |
| index4 | IPv4 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 Domain | Array | Domain list | None | Common Config |
| ipv6 | IPv6 Domain | Array | Domain list | None | Common Config |
| ttl | TTL Time | Integer (seconds)| 300 ~ 2592000 | `7200` | Provider Param |
| proxy | Proxy Settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy Settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL Verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache Settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log Config | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log Config | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -71,14 +71,14 @@ Use No-IP account username and password for authentication, which is the simples
| dns | Provider ID | String | `noip` | None | Provider Param |
| id | Authentication ID| String | No-IP username or DDNS ID | None | Provider Param |
| token | Authentication Key| String | No-IP password or DDNS KEY | None | Provider Param |
| index4 | IPv4 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Config |
| index4 | IPv4 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| index6 | IPv6 Source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Config |
| ipv4 | IPv4 Domain | Array | Domain list | `all.ddnskey.com` | Common Config |
| ipv6 | IPv6 Domain | Array | Domain list | `all.ddnskey.com` | Common Config |
| proxy | Proxy Settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy Settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL Verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache Settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Config |
| log | Log Config | Object | [Reference](../config/json.en.md#log) | None | Common Config |
| log | Log Config | Object | [Reference](../config/json.md#log) | None | Common Config |
> **Parameter Type Description**:
>
@@ -68,17 +68,17 @@ The simplest and quickest way to obtain keys
| dns | Provider identifier | String | `tencentcloud` | None | Provider Parameter |
| id | Authentication ID | String | TencentCloud SecretId | None | Provider Parameter |
| token | Authentication key | String | TencentCloud SecretKey | None | Provider Parameter |
| index4 | IPv4 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Configuration |
| index6 | IPv6 source | Array | [Reference](../config/json.en.md#ipv4-ipv6) | `default` | Common Configuration |
| index4 | IPv4 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Configuration |
| index6 | IPv6 source | Array | [Reference](../config/json.md#ipv4-ipv6) | `default` | Common Configuration |
| ipv4 | IPv4 domains | Array | Domain list | None | Common Configuration |
| ipv6 | IPv6 domains | Array | Domain list | None | Common Configuration |
| endpoint | API endpoint | URL | [See below](#endpoint) | `https://dnspod.tencentcloudapi.com` | Provider Parameter |
| line | Resolution line | String | [See below](#line) | `默认` | Provider Parameter |
| ttl | TTL time | Integer (seconds) | [See below](#ttl) | `600` | Provider Parameter |
| proxy | Proxy settings | Array | [Reference](../config/json.en.md#proxy) | None | Common Network |
| proxy | Proxy settings | Array | [Reference](../config/json.md#proxy) | None | Common Network |
| ssl | SSL verification | Boolean/String | `"auto"`, `true`, `false` | `auto` | Common Network |
| cache | Cache settings | Boolean/String | `true`, `false`, `filepath` | `true` | Common Configuration |
| log | Log configuration | Object | [Reference](../config/json.en.md#log) | None | Common Configuration |
| log | Log configuration | Object | [Reference](../config/json.md#log) | None | Common Configuration |
> **Parameter Type Description**:
>
+19
View File
@@ -164,6 +164,25 @@ async function handleRequest(request) {
const url = new URL(request.url);
const path = url.pathname;
// Handle redirects for old /doc/ URLs
// Redirect /index.en.html to /en/
if (path === '/index.en.html') {
return Response.redirect(url.origin + '/en/' + url.search + url.hash, 301);
}
// Redirect /doc/xxx.en.html to /en/xxx.html (must be before /doc/ redirect)
const enHtmlMatch = path.match(/^\/doc\/(.+)\.en\.html$/);
if (enHtmlMatch) {
const pagePath = enHtmlMatch[1];
return Response.redirect(url.origin + `/en/${pagePath}.html` + url.search + url.hash, 301);
}
// Redirect /doc/xxx to /xxx (301 permanent redirect)
if (path.startsWith('/doc/')) {
const newPath = path.replace('/doc/', '/');
return Response.redirect(url.origin + newPath + url.search + url.hash, 301);
}
// 解析请求路径 (Parse the request path)
// 格式: /releases/{version}/{binary_file}
// version 可以是 v4.1.3-beta1、latest 或 beta
View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File
View File
+100
View File
@@ -0,0 +1,100 @@
# DDNS Documentation - AI/LLM Context
> This file provides structured documentation for AI language models and assistants.
## Project Overview
**Name:** DDNS - Dynamic DNS Client
**Repository:** https://github.com/NewFuture/DDNS
**Documentation:** https://ddns.newfuture.cc
**License:** MIT
## Description
DDNS is a Python-based dynamic DNS client that automatically updates DNS records to match your current IP address. It supports multiple DNS providers including DNSPod, Cloudflare, AliDNS, and many others. The project supports both IPv4 and IPv6, and can be run via command line, Docker, or as a system service.
## Key Features
- Automatic IP detection (IPv4/IPv6)
- Multiple DNS provider support (20+ providers)
- Multiple configuration methods (CLI, Environment Variables, JSON)
- Docker support with multi-architecture images
- Python 2.7+ and 3.x compatible
- Standard library only (no external dependencies)
## Documentation Structure
### Core Documentation
- Homepage: https://ddns.newfuture.cc/
- Installation: https://ddns.newfuture.cc/install.html
- Docker Guide: https://ddns.newfuture.cc/docker.html
- Release Notes: https://ddns.newfuture.cc/release.html
### Configuration Guides
- CLI Arguments: https://ddns.newfuture.cc/config/cli.html
- Environment Variables: https://ddns.newfuture.cc/config/env.html
- JSON Configuration: https://ddns.newfuture.cc/config/json.html
### DNS Provider Guides
- Provider Overview: https://ddns.newfuture.cc/providers/
- DNSPod (Tencent): https://ddns.newfuture.cc/providers/dnspod.html
- Cloudflare: https://ddns.newfuture.cc/providers/cloudflare.html
- AliDNS (Alibaba): https://ddns.newfuture.cc/providers/alidns.html
- Huawei Cloud: https://ddns.newfuture.cc/providers/huaweicloud.html
- Namecheap: https://ddns.newfuture.cc/providers/namecheap.html
- GoDaddy: https://ddns.newfuture.cc/providers/godaddy.html
- DynDNS: https://ddns.newfuture.cc/providers/dyndns.html
- HE.net: https://ddns.newfuture.cc/providers/he.html
- 51Dns: https://ddns.newfuture.cc/providers/51dns.html
- Aliesa: https://ddns.newfuture.cc/providers/aliesa.html
- Callback: https://ddns.newfuture.cc/providers/callback.html
### Developer Documentation
- Provider Development Guide: https://ddns.newfuture.cc/dev/provider.html
### Configuration Schemas
- v4.1 Schema: https://ddns.newfuture.cc/schema/v4.1.json
- v4.0 Schema: https://ddns.newfuture.cc/schema/v4.0.json
- v2.8 Schema: https://ddns.newfuture.cc/schema/v2.8.json
- v2 Schema: https://ddns.newfuture.cc/schema/v2.json
## Usage Examples
### Docker:
```bash
docker run -it --rm -e DNS=dnspod -e ID=your_id -e TOKEN=your_token newfuture/ddns
```
### Command Line:
```bash
python3 run.py --dns dnspod --id your_id --token your_token
```
### pip Install:
```bash
pip install ddns
ddns --dns dnspod --id your_id --token your_token
```
## Supported DNS Providers
DNSPod, Cloudflare, AliDNS (Alibaba Cloud), Tencent Cloud, Huawei Cloud, GoDaddy, Namecheap, CloudXNS, HE.net, DynDNS, NoIP, 51Dns, Aliesa, Callback, and more.
## Technical Details
- **Language:** Python 2.7+ and 3.x
- **Dependencies:** Standard library only
- **Platform:** Cross-platform (Windows, Linux, macOS)
- **Docker:** Multi-architecture support (amd64, arm64, arm/v7)
## Links
- GitHub: https://github.com/NewFuture/DDNS
- Documentation: https://ddns.newfuture.cc
- Docker Hub: https://hub.docker.com/r/newfuture/ddns
- PyPI: https://pypi.org/project/ddns/
- Sitemap: https://ddns.newfuture.cc/sitemap.xml
---
*Generated by VitePress documentation builder. Last updated: {{DATE}}*
+15
View File
@@ -0,0 +1,15 @@
{
"name": "ddns-docs",
"version": "1.0.0",
"description": "DDNS Documentation Website",
"type": "module",
"scripts": {
"docs:dev": "vitepress dev .",
"docs:build": "vitepress build .",
"docs:preview": "vitepress preview .",
"build": "vitepress build ."
},
"devDependencies": {
"vitepress": "2.0.0-alpha.15"
}
}
@@ -6,21 +6,21 @@
| Provider | 服务商 | 配置文档 | 英文文档 | 特点 |
|----------|--------|----------|----------|------|
| `alidns` | [阿里云DNS](https://dns.console.aliyun.com/) | [alidns 中文文档](alidns.md) | [alidns English Doc](alidns.en.md) | 阿里云生态集成 |
| `aliesa` | [阿里云ESA](https://esa.console.aliyun.com/) | [aliesa 中文文档](aliesa.md) | [aliesa English Doc](aliesa.en.md) | 阿里云边缘安全加速 |
| `callback` | 自定义API (Webhook) | [callback 中文文档](callback.md) | [callback English Doc](callback.en.md) | 自定义HTTP API |
| `cloudflare` | [Cloudflare](https://www.cloudflare.com/) | [cloudflare 中文文档](cloudflare.md) | [cloudflare English Doc](cloudflare.en.md) | 全球CDN和DNS服务 |
| `debug` | 调试Provider | [debug 中文文档](debug.md) | [debug English Doc](debug.en.md) | 仅打印IP地址,用于调试|
| `dnscom`(51dns) | [51DNS](https://www.51dns.com/) | [51dns 中文文档](51dns.md) | [51dns English Doc](51dns.en.md) | ⚠️ 等待验证 |
| `dnspod_com` | [DNSPod Global](https://www.dnspod.com/) | [dnspod_com 中文文档](dnspod_com.md) | [dnspod_com English Doc](dnspod_com.en.md) | ⚠️ 等待验证 |
| `dnspod` | [DNSPod 中国版](https://www.dnspod.cn/) | [dnspod 中文文档](dnspod.md) | [dnspod English Doc](dnspod.en.md) | 国内最大DNS服务商|
| `he` | [HE.net](https://dns.he.net/) | [he 中文文档](he.md) | [he English Doc](he.en.md) | ⚠️ 等待验证,不支持自动创建记录 |
| `huaweidns` | [华为云 DNS](https://www.huaweicloud.com/product/dns.html) | [huaweidns 中文文档](huaweidns.md) | [huaweidns English Doc](huaweidns.en.md) | ⚠️ 等待验证 |
| `namesilo` | [NameSilo](https://www.namesilo.com/) | [namesilo 中文文档](namesilo.md) | [namesilo English Doc](namesilo.en.md) | ⚠️ 等待验证 |
| `noip` | [No-IP](https://www.noip.com/) | [noip 中文文档](noip.md) | [noip English Doc](noip.en.md) | 不支持自动创建记录 |
| `tencentcloud` | [腾讯云DNSPod](https://cloud.tencent.com/product/dns) | [tencentcloud 中文文档](tencentcloud.md) | [tencentcloud English Doc](tencentcloud.en.md) | 腾讯云DNSPod服务 |
| `edgeone` | [腾讯云EdgeOne](https://cloud.tencent.com/product/teo) | [edgeone 中文文档](edgeone.md) | [edgeone English Doc](edgeone.en.md) | 腾讯云边缘安全加速平台(加速域名) |
| `edgeone_dns` | [腾讯云EdgeOne DNS](https://cloud.tencent.com/product/teo) | [edgeone_dns 中文文档](edgeone_dns.md) | [edgeone_dns English Doc](edgeone_dns.en.md) | 腾讯云EdgeOne DNS记录管理 |
| `alidns` | [阿里云DNS](https://dns.console.aliyun.com/) | [alidns 中文文档](alidns.md) | [alidns English Doc](../en/providers/alidns.md) | 阿里云生态集成 |
| `aliesa` | [阿里云ESA](https://esa.console.aliyun.com/) | [aliesa 中文文档](aliesa.md) | [aliesa English Doc](../en/providers/aliesa.md) | 阿里云边缘安全加速 |
| `callback` | 自定义API (Webhook) | [callback 中文文档](callback.md) | [callback English Doc](../en/providers/callback.md) | 自定义HTTP API |
| `cloudflare` | [Cloudflare](https://www.cloudflare.com/) | [cloudflare 中文文档](cloudflare.md) | [cloudflare English Doc](../en/providers/cloudflare.md) | 全球CDN和DNS服务 |
| `debug` | 调试Provider | [debug 中文文档](debug.md) | [debug English Doc](../en/providers/debug.md) | 仅打印IP地址,用于调试|
| `dnscom`(51dns) | [51DNS](https://www.51dns.com/) | [51dns 中文文档](51dns.md) | [51dns English Doc](../en/providers/51dns.md) | ⚠️ 等待验证 |
| `dnspod_com` | [DNSPod Global](https://www.dnspod.com/) | [dnspod_com 中文文档](dnspod_com.md) | [dnspod_com English Doc](../en/providers/dnspod_com.md) | ⚠️ 等待验证 |
| `dnspod` | [DNSPod 中国版](https://www.dnspod.cn/) | [dnspod 中文文档](dnspod.md) | [dnspod English Doc](../en/providers/dnspod.md) | 国内最大DNS服务商|
| `he` | [HE.net](https://dns.he.net/) | [he 中文文档](he.md) | [he English Doc](../en/providers/he.md) | ⚠️ 等待验证,不支持自动创建记录 |
| `huaweidns` | [华为云 DNS](https://www.huaweicloud.com/product/dns.html) | [huaweidns 中文文档](huaweidns.md) | [huaweidns English Doc](../en/providers/huaweidns.md) | ⚠️ 等待验证 |
| `namesilo` | [NameSilo](https://www.namesilo.com/) | [namesilo 中文文档](namesilo.md) | [namesilo English Doc](../en/providers/namesilo.md) | ⚠️ 等待验证 |
| `noip` | [No-IP](https://www.noip.com/) | [noip 中文文档](noip.md) | [noip English Doc](../en/providers/noip.md) | 不支持自动创建记录 |
| `tencentcloud` | [腾讯云DNSPod](https://cloud.tencent.com/product/dns) | [tencentcloud 中文文档](tencentcloud.md) | [tencentcloud English Doc](../en/providers/tencentcloud.md) | 腾讯云DNSPod服务 |
| `edgeone` | [腾讯云EdgeOne](https://cloud.tencent.com/product/teo) | [edgeone 中文文档](edgeone.md) | [edgeone English Doc](../en/providers/edgeone.md) | 腾讯云边缘安全加速平台(加速域名) |
| `edgeone_dns` | [腾讯云EdgeOne DNS](https://cloud.tencent.com/product/teo) | [edgeone_dns 中文文档](edgeone_dns.md) | [edgeone_dns English Doc](../en/providers/edgeone_dns.md) | 腾讯云EdgeOne DNS记录管理 |
> 添加新的Provider, [创建Issue,并按照模板填好链接](https://github.com/NewFuture/DDNS/issues/new?template=new-dns-provider.md)
@@ -162,4 +162,4 @@ ddns --debug
---
如有疑问或需要帮助,请查看[FAQ](../../README.md#FAQ) 或在 [GitHub Issues](https://github.com/NewFuture/DDNS/issues) 中提问。
如有疑问或需要帮助,请查看[FAQ](/#FAQ) 或在 [GitHub Issues](https://github.com/NewFuture/DDNS/issues) 中提问。
@@ -2,6 +2,8 @@
Callback Provider 是一个通用的自定义回调接口,允许您将 DDNS 更新请求转发到任何自定义的 HTTP API 端点或者webhook。这个 Provider 非常灵活,支持 GET 和 POST 请求,并提供变量替换功能。
返回 [所有服务商](/providers/) 查看更多选项
## 基本配置
| 参数 | 说明 | 必填 | 示例 |
@@ -161,7 +163,7 @@ curl -X POST "https://httpbin.org/post" \
## 相关链接
- [DDNS 项目首页](../../README.md)
- [DDNS 项目首页](/)
- [配置文件格式](../config/json.md)
- [命令行使用](../config/cli.md)
- [开发者指南](../dev/provider.md)
@@ -1,5 +1,7 @@
# Debug Provider 配置指南
返回 [所有服务商](/providers/) 查看更多选项
## 概述
Debug Provider 是一个专门用于调试和测试的虚拟 DNS 服务商。它模拟 DNS 记录更新过程,但不进行任何查询修改操作,只是将相关信息输出到控制台,帮助开发者调试 DDNS 配置和功能。
@@ -91,7 +93,7 @@ Debug Provider 也会模拟一些常见错误场景,帮助测试错误处理
## 支持与资源
- [DDNS 项目文档](../../README.md)
- [DDNS 项目文档](/)
- [配置文件格式说明](../config/json.md)
- [命令行使用指南](../config/cli.md)
- [开发者指南](../dev/provider.md)
@@ -1,5 +1,5 @@
---
redirect_to: /doc/providers/51dns.html
redirect_to: /providers/51dns.html
---
# DNS.COM 配置指南
+1 -1
View File
@@ -1,6 +1,6 @@
# DDNS Release Information
[<img src="https://ddns.newfuture.cc/doc/img/ddns.svg" height="32px"/>](https://ddns.newfuture.cc)[![Github Release](https://img.shields.io/github/v/release/newfuture/ddns?style=for-the-badge&logo=github&label=DDNS)](https://github.com/NewFuture/DDNS/releases/latest)[![Docker Image Version](https://img.shields.io/docker/v/newfuture/ddns/latest?label=Docker&logo=docker&style=for-the-badge)](https://hub.docker.com/r/newfuture/ddns/tags?name=latest)[![PyPI version](https://img.shields.io/pypi/v/ddns?logo=python&style=for-the-badge)](https://pypi.org/project/ddns)
[<img src="https://ddns.newfuture.cc/img/ddns.svg" height="32px"/>](https://ddns.newfuture.cc)[![Github Release](https://img.shields.io/github/v/release/newfuture/ddns?style=for-the-badge&logo=github&label=DDNS)](https://github.com/NewFuture/DDNS/releases/latest)[![Docker Image Version](https://img.shields.io/docker/v/newfuture/ddns/latest?label=Docker&logo=docker&style=for-the-badge)](https://hub.docker.com/r/newfuture/ddns/tags?name=latest)[![PyPI version](https://img.shields.io/pypi/v/ddns?logo=python&style=for-the-badge)](https://pypi.org/project/ddns)
## 各版本一览表 | Download Methods Overview