Compare commits

...

1 Commits

Author SHA1 Message Date
jkunz cc6a81012c fix: restore onebox daemon startup
Release / build-and-release (push) Successful in 2m28s
2026-05-08 16:23:45 +00:00
6 changed files with 16 additions and 9 deletions
+7
View File
@@ -1,5 +1,12 @@
# Changelog # 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) ## 2026-05-08 - 1.24.4 - fix(installer)
avoid documenting a hardcoded initial admin password for fresh installs avoid documenting a hardcoded initial admin password for fresh installs
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@serve.zone/onebox", "name": "@serve.zone/onebox",
"version": "1.24.4", "version": "1.24.5",
"exports": "./mod.ts", "exports": "./mod.ts",
"tasks": { "tasks": {
"test": "deno test --allow-all test/", "test": "deno test --allow-all test/",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@serve.zone/onebox", "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", "description": "Self-hosted container platform with automatic SSL and DNS - a mini Heroku for single servers",
"main": "mod.ts", "main": "mod.ts",
"type": "module", "type": "module",
+1 -1
View File
@@ -77,7 +77,7 @@ export class OneboxReverseProxy {
if (status.running) { if (status.running) {
logger.info(`HTTPS already running on port ${this.httpsPort} via SmartProxy`); logger.info(`HTTPS already running on port ${this.httpsPort} via SmartProxy`);
} else { } else {
await this.smartProxy.start(); logger.warn('Skipping HTTPS reverse proxy startup because SmartProxy is not running');
} }
} }
+1 -1
View File
@@ -217,7 +217,7 @@ export class SmartProxyManager {
return network.Id; return network.Id;
} }
private async waitForReady(maxAttempts = 120, intervalMs = 1000): Promise<void> { private async waitForReady(maxAttempts = 10, intervalMs = 1000): Promise<void> {
for (let i = 0; i < maxAttempts; i++) { for (let i = 0; i < maxAttempts; i++) {
try { try {
const response = await fetch(`${this.adminUrl}/ready`); const response = await fetch(`${this.adminUrl}/ready`);
+5 -5
View File
@@ -36,6 +36,7 @@ export class OpsServer {
domain: 'localhost', domain: 'localhost',
feedMetadata: undefined, feedMetadata: undefined,
bundledContent: bundledFiles, bundledContent: bundledFiles,
addCustomRoutes: async (typedserver) => this.registerCustomRoutes(typedserver),
}); });
// Chain typedrouters: server -> opsServer -> individual handlers // Chain typedrouters: server -> opsServer -> individual handlers
@@ -43,7 +44,6 @@ export class OpsServer {
// Set up all handlers // Set up all handlers
await this.setupHandlers(); await this.setupHandlers();
this.registerCustomRoutes();
await this.server.start(port); await this.server.start(port);
logger.success(`OpsServer started on http://localhost:${port}`); logger.success(`OpsServer started on http://localhost:${port}`);
@@ -73,18 +73,18 @@ export class OpsServer {
logger.success('OpsServer TypedRequest handlers initialized'); logger.success('OpsServer TypedRequest handlers initialized');
} }
private registerCustomRoutes(): void { private registerCustomRoutes(typedserver: plugins.typedserver.TypedServer): void {
this.server.typedserver.addRoute( typedserver.addRoute(
'/v2', '/v2',
'ALL', 'ALL',
async (ctx) => this.oneboxRef.registry.handleRequest(ctx.request), async (ctx) => this.oneboxRef.registry.handleRequest(ctx.request),
); );
this.server.typedserver.addRoute( typedserver.addRoute(
'/v2/*', '/v2/*',
'ALL', 'ALL',
async (ctx) => this.oneboxRef.registry.handleRequest(ctx.request), async (ctx) => this.oneboxRef.registry.handleRequest(ctx.request),
); );
this.server.typedserver.addRoute( typedserver.addRoute(
'/backups/:backupId/download', '/backups/:backupId/download',
'GET', 'GET',
async (ctx) => { async (ctx) => {