From cc6a81012cb876e5f39f12b8cbd8fec99ba0c994 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Fri, 8 May 2026 16:23:45 +0000 Subject: [PATCH] fix: restore onebox daemon startup --- changelog.md | 7 +++++++ deno.json | 2 +- package.json | 2 +- ts/classes/reverseproxy.ts | 2 +- ts/classes/smartproxy.ts | 2 +- ts/opsserver/classes.opsserver.ts | 10 +++++----- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/changelog.md b/changelog.md index 21b8e89..18e824f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2026-05-08 - 1.24.5 - fix(opsserver) + +start the OpsServer with typedserver custom routes registered through the UtilityWebsiteServer hook + +- fixes daemon startup with the current typedserver lifecycle +- cap SmartProxy readiness waiting at 10 seconds during daemon startup + ## 2026-05-08 - 1.24.4 - fix(installer) avoid documenting a hardcoded initial admin password for fresh installs diff --git a/deno.json b/deno.json index 929324a..34d3a57 100644 --- a/deno.json +++ b/deno.json @@ -1,6 +1,6 @@ { "name": "@serve.zone/onebox", - "version": "1.24.4", + "version": "1.24.5", "exports": "./mod.ts", "tasks": { "test": "deno test --allow-all test/", diff --git a/package.json b/package.json index 632edbe..41d2764 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@serve.zone/onebox", - "version": "1.24.4", + "version": "1.24.5", "description": "Self-hosted container platform with automatic SSL and DNS - a mini Heroku for single servers", "main": "mod.ts", "type": "module", diff --git a/ts/classes/reverseproxy.ts b/ts/classes/reverseproxy.ts index f1210d5..161ec1c 100644 --- a/ts/classes/reverseproxy.ts +++ b/ts/classes/reverseproxy.ts @@ -77,7 +77,7 @@ export class OneboxReverseProxy { if (status.running) { logger.info(`HTTPS already running on port ${this.httpsPort} via SmartProxy`); } else { - await this.smartProxy.start(); + logger.warn('Skipping HTTPS reverse proxy startup because SmartProxy is not running'); } } diff --git a/ts/classes/smartproxy.ts b/ts/classes/smartproxy.ts index 5384d07..d0fb074 100644 --- a/ts/classes/smartproxy.ts +++ b/ts/classes/smartproxy.ts @@ -217,7 +217,7 @@ export class SmartProxyManager { return network.Id; } - private async waitForReady(maxAttempts = 120, intervalMs = 1000): Promise { + private async waitForReady(maxAttempts = 10, intervalMs = 1000): Promise { for (let i = 0; i < maxAttempts; i++) { try { const response = await fetch(`${this.adminUrl}/ready`); diff --git a/ts/opsserver/classes.opsserver.ts b/ts/opsserver/classes.opsserver.ts index 77061fa..e2db571 100644 --- a/ts/opsserver/classes.opsserver.ts +++ b/ts/opsserver/classes.opsserver.ts @@ -36,6 +36,7 @@ export class OpsServer { domain: 'localhost', feedMetadata: undefined, bundledContent: bundledFiles, + addCustomRoutes: async (typedserver) => this.registerCustomRoutes(typedserver), }); // Chain typedrouters: server -> opsServer -> individual handlers @@ -43,7 +44,6 @@ export class OpsServer { // Set up all handlers await this.setupHandlers(); - this.registerCustomRoutes(); await this.server.start(port); logger.success(`OpsServer started on http://localhost:${port}`); @@ -73,18 +73,18 @@ export class OpsServer { logger.success('OpsServer TypedRequest handlers initialized'); } - private registerCustomRoutes(): void { - this.server.typedserver.addRoute( + private registerCustomRoutes(typedserver: plugins.typedserver.TypedServer): void { + typedserver.addRoute( '/v2', 'ALL', async (ctx) => this.oneboxRef.registry.handleRequest(ctx.request), ); - this.server.typedserver.addRoute( + typedserver.addRoute( '/v2/*', 'ALL', async (ctx) => this.oneboxRef.registry.handleRequest(ctx.request), ); - this.server.typedserver.addRoute( + typedserver.addRoute( '/backups/:backupId/download', 'GET', async (ctx) => {