Preface¶
Want to continue adjusting DSH at home during the commute? The common approach is intranet penetration: either hand the traffic over to a third-party relay, or install a tunnel client on the router and desktop with scheduled tasks. dsh-ipv6-gate is a DSH plugin maintained by fzcohq, taking a different path: domestic home broadband generally already allocates public IPv6 addresses. The plugin directly exposes DSH via IPv6, completing the domain, certificate, DDNS, and authentication entirely within the plugin; data does not go through third-party relays. Below is an introduction to its capabilities, the installation and configuration process, and the applicable prerequisites.
What is this¶
One-sentence positioning: Exposes DeepSeek Harness remote access gateway directly to the public internet via home broadband IPv6, zero relay, zero cost, zero system configuration.
| Item | Value |
|---|---|
| Plugin Name | fzcohq/dsh-ipv6-gate |
| Maintainer | fzcohq |
| Category | Networking Tools |
| License | MIT |
| package.json Version | 0.1.1 |
| Node Requirement | engines >=22.19.0 |
| Directory Page | https://www.skillhub.cn/plugins/fzcohq/dsh-ipv6-gate |
| Source Code | https://github.com/fzcohq/dsh-ipv6-gate |
The specific problem it solves is: mobile cellular networks have IPv6 natively, and home computers also have public IPv6 addresses; what is truly missing is the domain, certificate, and entry authentication. The plugin bundles these three things; installing one plugin and filling in one DuckDNS Token is sufficient. There is no need for external binaries like Caddy/cloudflared, nor system-level configurations like scheduled tasks or the registry.
Core Features¶
All features come from the README description.
| Feature | Description |
|---|---|
| HTTPS Remote Access | Let’s Encrypt certificate automatic issuance/renewal (DNS-01 via DuckDNS) |
| DDNS | Detect local IPv6 change → automatically update DNS AAAA record (hourly) |
| Settings Page UI | “Mobile IPv6 Remote Access” tab appears in DSH settings |
| QR Code Scan | Scan to direct, password embedded in URL, auto-authentication, no browser history |
| Dual Channel | HTTPS (8787, encrypted) + HTTP (8788, plaintext, default off), independent password/switch |
| Security | PIN authentication + Cookie + Lockout + IP rate limiting |
The reverse proxy layer handles Host rewriting, PIN authentication, and WebSocket passthrough. The scan entry auto-authenticates via ?key=. HTTP/2 ALPN handles protocol splitting. The architecture does not depend on any external processes:
┌─────────────────────────────────────────────┐
│ DSH Settings Page "Mobile IPv6 Remote Access" │
│ ├─ IPv6 Address Detection (excluding Temporary addresses) │
│ ├─ HTTP Connection (port 8788, default off) │
│ ├─ DuckDNS Domain Management (subdomain + Token) │
│ └─ HTTPS Connection (port 8787, TLS cert auto-managed) │
├─────────────────────────────────────────────┤
│ gate-manager (Dual channel lifecycle + persistence) │
├─────────────────────────────────────────────┤
│ Reverse Proxy Layer: Host rewriting + PIN auth + WS passthrough │
│ + ?key= Scan auto-auth + HTTP/2 ALPN splitting │
├─────────────────────────────────────────────┤
│ ACME DNS-01 (DuckDNS API) + Cert renewal │
│ DDNS Timer (stable address → AAAA record, hourly) │
└─────────────────────────────────────────────┘
Installation and Enablement¶
Execute in the terminal; this is the official command provided in the README:
dsh plugin add github:fzcohq/dsh-ipv6-gate
If using the desktop version and the plugin does not appear on the settings page after installation, try the command with --profile desktop:
dsh plugin --profile desktop add github:fzcohq/dsh-ipv6-gate
Then restart the desktop. Restart DSH after installation, and the “Mobile IPv6 Remote Access” tab will appear in the settings. The dependency requirement is node >=22.19.0; you can verify with node -v first.
Configuration: Three Steps¶
First, register a DuckDNS domain (free). Open https://www.duckdns.org, log in with a GitHub account, enter a subdomain (e.g., myhome) and click Add Domain, then copy the Token (36-bit UUID) from the top right of the page.
Return to the DSH settings page to configure. The path is DSH -> Settings -> “Mobile IPv6 Remote Access”; first confirm that the IPv6 address detection shows green, then enter “Domain Zone” -> “Config”, fill in the subdomain and Token, save, and wait for “Configuring domain…” to complete. Automatic DDNS + certificate issuance takes about 30 seconds.
Finally, enable HTTPS. Open the “HTTPS Connection” switch, expand the panel, and scan the QR code with your phone to reach DSH directly. If you prefer manual input, the address looks like:
https://<subdomain>.duckdns.org:8787
Daily operations are all completed on the settings page:
| Operation | Method |
|---|---|
| Change Password | Settings page → Expand HTTP/HTTPS → “Custom” password, takes effect immediately |
| Close Remote Access | Close the corresponding switch on the settings page; the port stops listening and is unreachable externally |
| Temporary Test | Enable HTTP connection, plaintext, only recommended for LAN debugging |
Applicable Scenarios and Notes¶
Suitable for users who have public IPv6 on home broadband, have IPv6 on mobile cellular, and are willing to register a DuckDNS domain. The prerequisites are:
| Condition | Description |
|---|---|
| Computer has public IPv6 | Domestic Telecom/Mobile/Unicom home broadband generally allocates this; check in the settings page |
| Mobile has IPv6 | 4G/5G cellular default supports this; WiFi requires router IPv6 to be enabled |
| Router Firewall | Needs to allow inbound 8787/8788 ports (most home broadband allow high ports by default) |
A few points to note. The plugin runs with the permissions of the current dsh process; it holds the DuckDNS Token, TLS private key, and listens on ports 8787/8788. Read the source code and MIT license before installing. HTTPS uses DNS-01 for certificate issuance, and the domain and Token are required inputs. The HTTP plaintext channel is default off, only temporarily opened for LAN debugging. IPv6 address changes are backed by an hourly DDNS timer, not real-time switching. Currently, GitHub shows 0 stars; it is a small project, so you can directly open an issue in the repository if you encounter problems.
Conclusion¶
The value of this plugin lies in: without introducing relays or installing external binaries, compressing DSH remote access to one plugin plus a free domain. Installation, configuration, and verification all go through the DSH settings page; turn off the switch after use and the port stops listening. The directory page and source code are respectively:
- https://www.skillhub.cn/plugins/fzcohq/dsh-ipv6-gate
- https://github.com/fzcohq/dsh-ipv6-gate