* feat(rust): add Web dashboard and MCP services Share configuration, status and synchronization between Web and MCP; add authenticated HTTP, stdio lifecycle support, in-process scheduling and offline regression tests. Exercise native tests on the existing Windows/macOS/Linux CI matrix. Co-authored-by: openhands <openhands@all-hands.dev> * ci(rust): allow manual cross-platform validation Enable workflow_dispatch for feature-branch CI without requiring PR creation. Preserve matrices, permissions, publishing boundaries and trusted-branch cache policy. Co-authored-by: openhands <openhands@all-hands.dev> * ci(rust): validate feature branch pushes Run the existing Rust cross-platform matrix for feat/** pushes while retaining trusted-branch-only cache writes and unchanged release triggers. Co-authored-by: openhands <openhands@all-hands.dev> * ci(rust): remove temporary branch trigger The v5 pull request now exists and runs the complete native matrix, so restore the original trusted push branches while retaining Web/MCP paths and tests. Co-authored-by: openhands <openhands@all-hands.dev> --------- Co-authored-by: openhands <openhands@all-hands.dev>
5.5 KiB
One-Click Installation Script
DDNS one-click installation script with support for automatic download and installation on Linux and macOS systems.
Quick Installation
The default installer installs the stable Python ddns. The Rust client uses
the separate ddns-rs command and never overwrites ddns:
# Install latest stable version online
curl -#fSL https://ddns.newfuture.cc/install.sh | sh
# Use sudo if root permission is needed for system directory
curl -#fSL https://ddns.newfuture.cc/install.sh | sudo sh
# Or using wget
wget -qO- https://ddns.newfuture.cc/install.sh | sh
Note: Default installation to
/usr/local/bin. If the directory requires administrator privileges, the script will automatically prompt to use sudo, or you can run with sudo in advance.
Rust V5 development version
Rust V5 is developed on v5; the current 5.0.0-alpha1 has not been published.
Build from source or use the Rust CI's five-platform binary artifacts. Do not
treat Python's latest / beta channels as V5 downloads:
cargo build --manifest-path rust/Cargo.toml --release --locked
rust/target/release/ddns-rs --help
Source builds and CI binaries support Web and MCP:
rust/target/release/ddns-rs web -c config.json --interval 5
rust/target/release/ddns-rs mcp -c config.json
Web embeds the dashboard and exposes /mcp; standalone HTTP MCP uses
mcp --transport http. Web/MCP manage one local config only; non-loopback HTTP
listeners require --http-token. In-process scheduling does not migrate or
detect OS tasks: manually disable old Python/host tasks to avoid duplicate runs.
See the Rust V5 development guide for options, security boundaries,
and compatibility limits.
The retained Rust installer is future release tooling for Linux x64/arm64 and
macOS x64/arm64. It downloads
the separate ddns-rs-linux-x64, ddns-rs-linux-arm64, ddns-rs-macos-x64,
or ddns-rs-macos-arm64 Release asset and its .sha256 checksum. The Windows x64
artifact is named ddns-rs-windows-x64.exe.
Linux assets use static musl targets and run on both glibc and musl distributions.
It installs to ~/.local/bin/ddns-rs by default without requiring administrator
privileges. Pass --install-dir /usr/local/bin explicitly for a system-wide
installation and provide the required permission yourself.
The installer applies only to tagged releases that contain ddns-rs-* assets;
version selection must be isolated before publishing V5. See the
Rust V5 development guide for the preparation boundaries.
When sha256sum or shasum is available, the installer verifies the published
checksum. Use --verify to require it, or --no-verify only when the risk is
understood.
Version Selection
# Install latest stable version
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- latest
# Install latest beta version
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- beta
# Install specific version
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- v4.0.2
Command Line Options
| Option | Description |
|---|---|
latest |
Install latest stable version (default) |
beta |
Install latest beta version |
v4.0.2 |
Install specific version |
--install-dir PATH |
Specify installation directory (default: /usr/local/bin) |
--proxy URL |
Specify proxy domain/prefix (e.g., https://hub.gitmirror.com/), overrides auto-detection |
--force |
Force reinstallation |
--uninstall |
Uninstall installed ddns |
--help |
Show help information |
Advanced Usage
# Custom installation directory
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- beta --install-dir ~/.local/bin
# Force reinstallation
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- --force
# Uninstall
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- --uninstall
# Specify proxy domain (override auto-detection)
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- --proxy https://hub.gitmirror.com/
System Support
Operating Systems: Linux (glibc/musl), macOS
Architectures: x86_64, ARM64, ARM v7, ARM v6, i386
Dependencies: curl or wget
Auto-Detection Features
- System Detection: Automatically identifies operating system, architecture and libc type
- Tool Detection: Automatically selects curl or wget download tool
- Network Optimization: Automatically tests and selects the best download mirror (github.com → China mirror sites)
- Manual Override: Use
--proxyto specify a proxy domain/mirror prefix, which takes precedence over auto-detection
Verify Installation
ddns --version # Check version
which ddns # Check installation location
Update & Uninstall
# Update to latest version
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- latest
# Uninstall
curl -#fSL https://ddns.newfuture.cc/install.sh | sh -s -- --uninstall
# Manual uninstall
sudo rm -f /usr/local/bin/ddns
Troubleshooting
Permission Issues: Use sudo or install to user directory
Network Issues: Script automatically uses mirror sites (hub.gitmirror.com, proxy.gitwarp.com, etc.)
Unsupported Architecture: Check releases page for supported architectures
Proxy Environment: The script respects system proxy settings (HTTP_PROXY/HTTPS_PROXY); you can also use --proxy https://hub.gitmirror.com/ to specify a GitHub mirror prefix (overrides auto-detection)