Compare commits

...

2 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
jkunz fba143d918 fix: update onebox installer credentials output
Release / build-and-release (push) Successful in 2m32s
2026-05-08 16:12:22 +00:00
7 changed files with 23 additions and 10 deletions
+13
View File
@@ -1,5 +1,18 @@
# 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
- update installer output to point operators to the service logs or `ONEBOX_ADMIN_PASSWORD` for initial credentials
## 2026-05-08 - 1.24.3 - fix(runtime)
upgrade runtime dependencies and harden registry/shutdown behavior
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@serve.zone/onebox",
"version": "1.24.3",
"version": "1.24.5",
"exports": "./mod.ts",
"tasks": {
"test": "deno test --allow-all test/",
+1 -1
View File
@@ -305,6 +305,6 @@ else
echo " onebox service add myapp --image nginx:latest --domain app.example.com"
echo ""
echo " Web UI: http://localhost:3000"
echo " Default credentials: admin / admin"
echo " Initial admin credentials are written to the service logs unless ONEBOX_ADMIN_PASSWORD is set."
fi
echo ""
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@serve.zone/onebox",
"version": "1.24.3",
"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",
+1 -1
View File
@@ -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');
}
}
+1 -1
View File
@@ -217,7 +217,7 @@ export class SmartProxyManager {
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++) {
try {
const response = await fetch(`${this.adminUrl}/ready`);
+5 -5
View File
@@ -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) => {