// Konfiguration aus Umgebungsvariablen. Pfade sind HOST-Pfade (R6): der Runner mountet sie identisch. export function loadConfig(env = process.env) { const analyticsPublicBase = env.ANALYTICS_PUBLIC_BASE || 'https://project.webklar.com/a/'; if (!/^https:\/\/[^\s"'<>]+\/$/.test(analyticsPublicBase)) throw new Error('ANALYTICS_PUBLIC_BASE muss mit https:// beginnen und mit / enden'); const zeitenPublicBase = env.ZEITEN_PUBLIC_BASE || 'https://project.webklar.com/embed/'; if (!/^https:\/\/[^\s"'<>]+\/$/.test(zeitenPublicBase)) throw new Error('ZEITEN_PUBLIC_BASE muss mit https:// beginnen und mit / enden'); return { analyticsPublicBase, zeitenPublicBase, token: env.PREVIEW_RUNNER_TOKEN || '', giteaUrl: env.GITEA_URL || '', giteaToken: env.GITEA_TOKEN || '', baseHost: env.PREVIEW_BASE_HOST || 'project.webklar.com', previewsRoot: env.PREVIEWS_ROOT || '/var/www/previews', workRoot: env.RUNNER_WORK_ROOT || '/srv/webklar-preview-runner/work', cacheRoot: env.RUNNER_CACHE_ROOT || '/srv/webklar-preview-runner/cache', sandboxSubnet: env.PREVIEW_SANDBOX_SUBNET || '172.30.0.0/24', apiPort: 8080, proxyPort: 8081, minFreeBytes: 1.5 * 1024 ** 3, buildTimeoutMs: 15 * 60e3, devIdleMs: 20 * 60e3, devMax: 3, devReadyMs: 180e3, }; }