Enable Holesail tunnels by default; keep holesail as required dep
CI / test (push) Successful in 9m59s

Holesail is on unless ENABLE_HOLESAIL=0/false/off. The holesail package remains a required dependency; docs and UI copy match the new default.
This commit is contained in:
2026-07-10 22:56:17 -04:00
parent 02f25e0981
commit 244ff569f5
14 changed files with 50 additions and 26 deletions
+10 -3
View File
@@ -4,7 +4,8 @@
* peardock control plane: HyperDHT + protomux-rpc
* Data plane tunnels: Holesail L4 TCP/UDP reverse proxy (hs:// keys)
*
* Gated by ENABLE_HOLESAIL=1. Package: holesail (AGPL-3.0).
* Enabled by default. Set ENABLE_HOLESAIL=0 to disable.
* Package: holesail (AGPL-3.0) — required dependency.
*
* @see https://github.com/holesail/holesail
* @see docs/HOLESAIL.md
@@ -62,8 +63,14 @@ function loadHolesail() {
}
}
/**
* Holesail tunnels are on by default.
* Opt out with ENABLE_HOLESAIL=0 / false / off / no.
*/
export function isHolesailEnabled() {
return process.env.ENABLE_HOLESAIL === '1' || process.env.ENABLE_HOLESAIL === 'true'
const v = String(process.env.ENABLE_HOLESAIL ?? '1').trim().toLowerCase()
if (v === '0' || v === 'false' || v === 'off' || v === 'no') return false
return true
}
export function isHolesailAvailable() {
@@ -219,7 +226,7 @@ export function getTunnel(id) {
*/
export async function createTunnel(opts = {}) {
if (!isHolesailEnabled()) {
const err = new Error('Holesail tunnels disabled. Set ENABLE_HOLESAIL=1 to enable.')
const err = new Error('Holesail tunnels disabled. Remove ENABLE_HOLESAIL=0 to re-enable (on by default).')
err.code = 'FEATURE_DISABLED'
throw err
}
+4 -2
View File
@@ -89,8 +89,10 @@ export function getMetricsSnapshot(extra = {}) {
features: {
swarm: process.env.ENABLE_SWARM === '1' || process.env.ENABLE_SWARM === 'true',
plugins: process.env.ENABLE_PLUGINS === '1' || process.env.ENABLE_PLUGINS === 'true',
holesail:
process.env.ENABLE_HOLESAIL === '1' || process.env.ENABLE_HOLESAIL === 'true',
holesail: (() => {
const v = String(process.env.ENABLE_HOLESAIL ?? '1').trim().toLowerCase()
return !(v === '0' || v === 'false' || v === 'off' || v === 'no')
})(),
peerAllowlist:
process.env.PEARDOCK_PEER_ALLOWLIST === '1' ||
process.env.PEARDOCK_PEER_ALLOWLIST === 'true',