diff --git a/uptime.config.ts b/uptime.config.ts index cf80328..1c329c2 100644 --- a/uptime.config.ts +++ b/uptime.config.ts @@ -1,134 +1,76 @@ -// This is a simplified example config file for quickstart -// Some not frequently used features are omitted/commented out here -// For a full-featured example, please refer to `uptime.config.full.ts` +// OpenShopGraph public status page configuration (UptimeFlare) +// Governance: PUBLIC page — component states + uptime only. +// No internal IPs/ports, vendor names, SHAs, quotas or percentages here. // Don't edit this line import { MaintenanceConfig, PageConfig, WorkerConfig } from './types/config' const pageConfig: PageConfig = { - // Title for your status page - title: "lyc8503's Status Page", - // Links shown at the header of your status page, could set `highlight` to `true` + title: 'OpenShopGraph Status', links: [ - { link: 'https://github.com/lyc8503', label: 'GitHub' }, - { link: 'https://blog.lyc8503.net/', label: 'Blog' }, - { link: 'mailto:me@lyc8503.net', label: 'Email Me', highlight: true }, + { link: 'https://openshopgraph.org', label: 'openshopgraph.org', highlight: true }, ], } const workerConfig: WorkerConfig = { - // Define all your monitors here + // Reduce D1 write frequency (free-tier friendly); checks still run every minute. + kvWriteCooldownMinutes: 3, monitors: [ - // Example HTTP Monitor { - // `id` should be unique, history will be kept if the `id` remains constant - id: 'foo_monitor', - // `name` is used at status page and callback message - name: 'My API Monitor', - // `method` should be a valid HTTP Method + id: 'website', + name: 'Website', method: 'GET', - // `target` is a valid URL - target: 'https://example.com', - // [OPTIONAL] `tooltip` is ONLY used at status page to show a tooltip - tooltip: 'This is a tooltip for this monitor', - // [OPTIONAL] `statusPageLink` is ONLY used for clickable link at status page - statusPageLink: 'https://example.com', - // [OPTIONAL] `expectedCodes` is an array of acceptable HTTP response codes, if not specified, default to 2xx + target: 'https://openshopgraph.org/en/', + tooltip: 'Public website (external HTTPS check)', + statusPageLink: 'https://openshopgraph.org', expectedCodes: [200], - // [OPTIONAL] `timeout` in millisecond, if not specified, default to 10000 timeout: 10000, - // [OPTIONAL] headers to be sent - headers: { - 'User-Agent': 'Uptimeflare', - Authorization: 'Bearer YOUR_TOKEN_HERE', - }, - // [OPTIONAL] body to be sent (require POST/PUT/PATCH method) - // body: 'Hello, world!', - // [OPTIONAL] if specified, the response must contains the keyword to be considered as operational. - // responseKeyword: 'success', - // [OPTIONAL] if specified, the response must NOT contains the keyword to be considered as operational. - // responseForbiddenKeyword: 'bad gateway', - // [OPTIONAL] if specified, will call the check proxy to check the monitor, mainly for geo-specific checks - // refer to docs https://github.com/lyc8503/UptimeFlare/wiki/Check-proxy-setup before setting this value - // currently supports `worker://`, `globalping://` and `http(s)://` proxies - // checkProxy: 'worker://weur', - // [OPTIONAL] if true, the check will fallback to local if the specified proxy is down - // checkProxyFallback: true, + headers: { 'User-Agent': 'OSG-StatusCheck/1.0 (UptimeFlare)' }, }, - // Example TCP Monitor { - id: 'test_tcp_monitor', - name: 'Example TCP Monitor', - // `method` should be `TCP_PING` for tcp monitors - method: 'TCP_PING', - // `target` should be `host:port` for tcp monitors - target: '1.2.3.4:22', - tooltip: 'My production server SSH', - statusPageLink: 'https://example.com', - timeout: 5000, - }, - ], - // [Optional] Notification settings - notification: { - // [Optional] Notification webhook settings, if not specified, no notification will be sent - // More info at Wiki: https://github.com/lyc8503/UptimeFlare/wiki/Setup-notification - webhook: { - // [Required] webhook URL (example: Telegram Bot API) - url: 'https://api.telegram.org/bot123456:ABCDEF/sendMessage', - // [Optional] HTTP method, default to 'GET' for payloadType=param, 'POST' otherwise - // method: 'POST', - // [Optional] headers to be sent - // headers: { - // foo: 'bar', - // }, - // [Required] Specify how to encode the payload - // Should be one of 'param', 'json' or 'x-www-form-urlencoded' - // 'param': append url-encoded payload to URL search parameters - // 'json': POST json payload as body, set content-type header to 'application/json' - // 'x-www-form-urlencoded': POST url-encoded payload as body, set content-type header to 'x-www-form-urlencoded' - payloadType: 'x-www-form-urlencoded', - // [Required] payload to be sent - // $MSG will be replaced with the human-readable notification message - payload: { - chat_id: 12345678, - text: '$MSG', - }, - // [Optional] timeout calling this webhook, in millisecond, default to 5000 + id: 'api_health', + name: 'API', + method: 'GET', + target: 'https://api.openshopgraph.org/health', + tooltip: 'Public API health endpoint', + expectedCodes: [200], timeout: 10000, + headers: { 'User-Agent': 'OSG-StatusCheck/1.0 (UptimeFlare)' }, }, - // [Optional] timezone used in notification messages, default to "Etc/GMT" - timeZone: 'Asia/Shanghai', - // [Optional] grace period in minutes before sending a notification - // notification will be sent only if the monitor is down for N continuous checks after the initial failure - // if not specified, notification will be sent immediately - gracePeriod: 5, + { + id: 'mcp', + name: 'AI Agent Interface (MCP)', + method: 'GET', + target: 'https://api.openshopgraph.org/mcp', + tooltip: 'MCP endpoint reachability (auth required, 401 = alive)', + // Endpoint requires auth; a 401 proves the service is up and routing. + expectedCodes: [200, 401, 405, 406], + timeout: 10000, + headers: { 'User-Agent': 'OSG-StatusCheck/1.0 (UptimeFlare)' }, + }, + // NOTE (internal, not a leak — this comment is only in the repo): + // Enrichment worker / database / deploy pipeline have no public endpoints. + // They stay on the internal admin view (public-admin behind Cloudflare + // Access) fed by the Mini collectors. If a stable tunnel hostname for + // Mini health is created later, add it here as an HTTP monitor. + ], + notification: { + // Wire Pushover here (same account as ops/minimax-usage.sh) — needs the + // owner's Pushover token/user key; do not commit real keys, use the + // full-config option of reading from env if desired. + // webhook: { + // url: 'https://api.pushover.net/1/messages.json', + // payloadType: 'x-www-form-urlencoded', + // payload: { token: 'APP_TOKEN', user: 'USER_KEY', message: '$MSG' }, + // }, + timeZone: 'Europe/Berlin', + // Avoid flapping alerts: notify only after 3 consecutive failed checks. + gracePeriod: 3, }, } -// You can define multiple maintenances here -// During maintenance, an alert will be shown at status page -// Also, related downtime notifications will be skipped (if any) -// Of course, you can leave it empty if you don't need this feature - -// const maintenances: MaintenanceConfig[] = [] - -const maintenances: MaintenanceConfig[] = [ - { - // [Optional] Monitor IDs to be affected by this maintenance - monitors: ['foo_monitor', 'bar_monitor'], - // [Optional] default to "Scheduled Maintenance" if not specified - title: 'Test Maintenance', - // Description of the maintenance, will be shown at status page - body: 'This is a test maintenance, server software upgrade', - // Start time of the maintenance, in UNIX timestamp or ISO 8601 format - start: '2020-01-01T00:00:00+08:00', - // [Optional] end time of the maintenance, in UNIX timestamp or ISO 8601 format - // if not specified, the maintenance will be considered as on-going - end: '2050-01-01T00:00:00+08:00', - // [Optional] color of the maintenance alert at status page, default to "yellow" - color: 'blue', - }, -] +// No scheduled maintenances currently. +const maintenances: MaintenanceConfig[] = [] // Don't edit this line -export { maintenances, pageConfig, workerConfig } +export { pageConfig, workerConfig, maintenances }