opencodekit 0.15.4 → 0.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/template/.opencode/command/cloudflare.md +70 -0
- package/dist/template/.opencode/package.json +1 -1
- package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
- package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
- package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
- package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
- package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
- package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
- package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
- package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
- package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Cloudflare Tunnel
|
|
2
|
+
|
|
3
|
+
Secure outbound-only connections between infrastructure and Cloudflare's global network.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Cloudflare Tunnel (formerly Argo Tunnel) enables:
|
|
8
|
+
- **Outbound-only connections** - No inbound ports or firewall changes
|
|
9
|
+
- **Public hostname routing** - Expose local services to internet
|
|
10
|
+
- **Private network access** - Connect internal networks via WARP
|
|
11
|
+
- **Zero Trust integration** - Built-in access policies
|
|
12
|
+
|
|
13
|
+
**Architecture**: Tunnel (persistent object) → Connector (`cloudflared` process) → Origin services
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Install cloudflared
|
|
19
|
+
brew install cloudflared # macOS
|
|
20
|
+
|
|
21
|
+
# Authenticate
|
|
22
|
+
cloudflared tunnel login
|
|
23
|
+
|
|
24
|
+
# Create tunnel
|
|
25
|
+
cloudflared tunnel create my-tunnel
|
|
26
|
+
|
|
27
|
+
# Route DNS
|
|
28
|
+
cloudflared tunnel route dns my-tunnel app.example.com
|
|
29
|
+
|
|
30
|
+
# Run tunnel
|
|
31
|
+
cloudflared tunnel run my-tunnel
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Core Commands
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Tunnel lifecycle
|
|
38
|
+
cloudflared tunnel create <name>
|
|
39
|
+
cloudflared tunnel list
|
|
40
|
+
cloudflared tunnel info <name>
|
|
41
|
+
cloudflared tunnel delete <name>
|
|
42
|
+
|
|
43
|
+
# DNS routing
|
|
44
|
+
cloudflared tunnel route dns <tunnel> <hostname>
|
|
45
|
+
cloudflared tunnel route list
|
|
46
|
+
|
|
47
|
+
# Private network
|
|
48
|
+
cloudflared tunnel route ip add 10.0.0.0/8 <tunnel>
|
|
49
|
+
|
|
50
|
+
# Run tunnel
|
|
51
|
+
cloudflared tunnel run <name>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Configuration Example
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
# ~/.cloudflared/config.yml
|
|
58
|
+
tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
|
|
59
|
+
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json
|
|
60
|
+
|
|
61
|
+
ingress:
|
|
62
|
+
- hostname: app.example.com
|
|
63
|
+
service: http://localhost:8000
|
|
64
|
+
- hostname: api.example.com
|
|
65
|
+
service: https://localhost:8443
|
|
66
|
+
originRequest:
|
|
67
|
+
noTLSVerify: true
|
|
68
|
+
- service: http_status:404
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## In This Reference
|
|
72
|
+
|
|
73
|
+
- [configuration.md](./configuration.md) - Config file options, ingress rules, TLS settings
|
|
74
|
+
- [api.md](./api.md) - Cloudflare API, remotely-managed tunnels, programmatic control
|
|
75
|
+
- [patterns.md](./patterns.md) - Docker, Kubernetes, HA, service types, use cases
|
|
76
|
+
- [gotchas.md](./gotchas.md) - Troubleshooting, limitations, best practices
|
|
77
|
+
|
|
78
|
+
## See Also
|
|
79
|
+
|
|
80
|
+
- [workers](../workers/) - Workers with Tunnel integration
|
|
81
|
+
- [access](../access/) - Zero Trust access policies
|
|
82
|
+
- [warp](../warp/) - WARP client for private networks
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Tunnel API
|
|
2
|
+
|
|
3
|
+
## Cloudflare API Access
|
|
4
|
+
|
|
5
|
+
**Base URL**: `https://api.cloudflare.com/client/v4`
|
|
6
|
+
|
|
7
|
+
**Authentication**:
|
|
8
|
+
```bash
|
|
9
|
+
Authorization: Bearer ${CF_API_TOKEN}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Create Tunnel
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
curl -X POST "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels" \
|
|
16
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}" \
|
|
17
|
+
-H "Content-Type: application/json" \
|
|
18
|
+
--data '{
|
|
19
|
+
"name": "my-tunnel",
|
|
20
|
+
"tunnel_secret": "<base64-secret>"
|
|
21
|
+
}'
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## List Tunnels
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
curl -X GET "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels" \
|
|
28
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Get Tunnel Info
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
curl -X GET "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}" \
|
|
35
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Update Tunnel Config
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}/configurations" \
|
|
42
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}" \
|
|
43
|
+
-H "Content-Type: application/json" \
|
|
44
|
+
--data '{
|
|
45
|
+
"config": {
|
|
46
|
+
"ingress": [
|
|
47
|
+
{"hostname": "app.example.com", "service": "http://localhost:8000"},
|
|
48
|
+
{"service": "http_status:404"}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}'
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Delete Tunnel
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}" \
|
|
58
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Remotely-Managed Tunnels
|
|
62
|
+
|
|
63
|
+
### Via Dashboard
|
|
64
|
+
1. **Zero Trust** > **Networks** > **Tunnels**
|
|
65
|
+
2. **Create a tunnel** > **Cloudflared**
|
|
66
|
+
3. Copy install command with token
|
|
67
|
+
4. Run on origin:
|
|
68
|
+
```bash
|
|
69
|
+
cloudflared service install <TOKEN>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Via Token
|
|
73
|
+
```bash
|
|
74
|
+
# Run with token (no config file needed)
|
|
75
|
+
cloudflared tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
|
|
76
|
+
|
|
77
|
+
# Docker
|
|
78
|
+
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## DNS Routes API
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Create DNS route
|
|
85
|
+
curl -X POST "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}/connections" \
|
|
86
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}" \
|
|
87
|
+
--data '{"hostname": "app.example.com"}'
|
|
88
|
+
|
|
89
|
+
# Delete route
|
|
90
|
+
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}/connections/{route_id}" \
|
|
91
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Private Network Routes API
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Add IP route
|
|
98
|
+
curl -X POST "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}/routes" \
|
|
99
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}" \
|
|
100
|
+
--data '{"ip_network": "10.0.0.0/8"}'
|
|
101
|
+
|
|
102
|
+
# List IP routes
|
|
103
|
+
curl -X GET "https://api.cloudflare.com/client/v4/accounts/{account_id}/tunnels/{tunnel_id}/routes" \
|
|
104
|
+
-H "Authorization: Bearer ${CF_API_TOKEN}"
|
|
105
|
+
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Tunnel Configuration
|
|
2
|
+
|
|
3
|
+
## Config File Location
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
~/.cloudflared/config.yml # User config
|
|
7
|
+
/etc/cloudflared/config.yml # System-wide (Linux)
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Basic Structure
|
|
11
|
+
|
|
12
|
+
```yaml
|
|
13
|
+
tunnel: <UUID>
|
|
14
|
+
credentials-file: /path/to/<UUID>.json
|
|
15
|
+
|
|
16
|
+
ingress:
|
|
17
|
+
- hostname: app.example.com
|
|
18
|
+
service: http://localhost:8000
|
|
19
|
+
- service: http_status:404 # Required catch-all
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Ingress Rules
|
|
23
|
+
|
|
24
|
+
Rules evaluated **top to bottom**, first match wins.
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
ingress:
|
|
28
|
+
# Exact hostname + path regex
|
|
29
|
+
- hostname: static.example.com
|
|
30
|
+
path: \.(jpg|png|css|js)$
|
|
31
|
+
service: https://localhost:8001
|
|
32
|
+
|
|
33
|
+
# Wildcard hostname
|
|
34
|
+
- hostname: "*.example.com"
|
|
35
|
+
service: https://localhost:8002
|
|
36
|
+
|
|
37
|
+
# Path only (all hostnames)
|
|
38
|
+
- path: /api/.*
|
|
39
|
+
service: http://localhost:9000
|
|
40
|
+
|
|
41
|
+
# Catch-all (required)
|
|
42
|
+
- service: http_status:404
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Validation**:
|
|
46
|
+
```bash
|
|
47
|
+
cloudflared tunnel ingress validate
|
|
48
|
+
cloudflared tunnel ingress rule https://foo.example.com
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Service Types
|
|
52
|
+
|
|
53
|
+
| Protocol | Format | Client Requirement |
|
|
54
|
+
|----------|--------|-------------------|
|
|
55
|
+
| HTTP | `http://localhost:8000` | Browser |
|
|
56
|
+
| HTTPS | `https://localhost:8443` | Browser |
|
|
57
|
+
| TCP | `tcp://localhost:2222` | `cloudflared access tcp` |
|
|
58
|
+
| SSH | `ssh://localhost:22` | `cloudflared access ssh` |
|
|
59
|
+
| RDP | `rdp://localhost:3389` | `cloudflared access rdp` |
|
|
60
|
+
| Unix | `unix:/path/to/socket` | Browser |
|
|
61
|
+
| Test | `hello_world` | Browser |
|
|
62
|
+
|
|
63
|
+
## Origin Configuration
|
|
64
|
+
|
|
65
|
+
### Connection Settings
|
|
66
|
+
```yaml
|
|
67
|
+
originRequest:
|
|
68
|
+
connectTimeout: 30s
|
|
69
|
+
tlsTimeout: 10s
|
|
70
|
+
tcpKeepAlive: 30s
|
|
71
|
+
keepAliveTimeout: 90s
|
|
72
|
+
keepAliveConnections: 100
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### TLS Settings
|
|
76
|
+
```yaml
|
|
77
|
+
originRequest:
|
|
78
|
+
noTLSVerify: true # Disable cert verification
|
|
79
|
+
originServerName: "app.internal" # Override SNI
|
|
80
|
+
caPool: /path/to/ca.pem # Custom CA
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### HTTP Settings
|
|
84
|
+
```yaml
|
|
85
|
+
originRequest:
|
|
86
|
+
disableChunkedEncoding: true
|
|
87
|
+
httpHostHeader: "app.internal"
|
|
88
|
+
http2Origin: true
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Private Network Mode
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
tunnel: <UUID>
|
|
95
|
+
credentials-file: /path/to/creds.json
|
|
96
|
+
|
|
97
|
+
warp-routing:
|
|
98
|
+
enabled: true
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
cloudflared tunnel route ip add 10.0.0.0/8 my-tunnel
|
|
103
|
+
cloudflared tunnel route ip add 192.168.1.100/32 my-tunnel
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Environment Variables
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
TUNNEL_TOKEN=<token> # Remotely-managed token
|
|
110
|
+
TUNNEL_ORIGIN_CERT=/path/to/cert.pem # Override cert path
|
|
111
|
+
NO_AUTOUPDATE=true # Disable auto-updates
|
|
112
|
+
TUNNEL_LOGLEVEL=debug # Log level
|
|
113
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Tunnel Gotchas
|
|
2
|
+
|
|
3
|
+
## Common Issues
|
|
4
|
+
|
|
5
|
+
### Error 1016 (Origin DNS Error)
|
|
6
|
+
|
|
7
|
+
**Cause**: Tunnel not running or not connected
|
|
8
|
+
|
|
9
|
+
**Fix**:
|
|
10
|
+
```bash
|
|
11
|
+
cloudflared tunnel info my-tunnel # Check status
|
|
12
|
+
ps aux | grep cloudflared # Verify running
|
|
13
|
+
journalctl -u cloudflared -n 100 # Check logs
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Certificate Errors
|
|
17
|
+
|
|
18
|
+
**Issue**: Self-signed certs rejected
|
|
19
|
+
|
|
20
|
+
**Fix**:
|
|
21
|
+
```yaml
|
|
22
|
+
originRequest:
|
|
23
|
+
noTLSVerify: true # Dev only
|
|
24
|
+
caPool: /path/to/ca.pem # Custom CA
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Connection Timeouts
|
|
28
|
+
|
|
29
|
+
**Issue**: Origin slow to respond
|
|
30
|
+
|
|
31
|
+
**Fix**:
|
|
32
|
+
```yaml
|
|
33
|
+
originRequest:
|
|
34
|
+
connectTimeout: 60s
|
|
35
|
+
tlsTimeout: 20s
|
|
36
|
+
keepAliveTimeout: 120s
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Tunnel Not Starting
|
|
40
|
+
|
|
41
|
+
**Check**:
|
|
42
|
+
```bash
|
|
43
|
+
cloudflared tunnel ingress validate # Validate config
|
|
44
|
+
ls -la ~/.cloudflared/*.json # Verify credentials
|
|
45
|
+
cloudflared tunnel list # Verify tunnel exists
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Best Practices
|
|
49
|
+
|
|
50
|
+
### Security
|
|
51
|
+
1. Use remotely-managed tunnels for centralized control
|
|
52
|
+
2. Enable Access policies for sensitive services
|
|
53
|
+
3. Rotate tunnel credentials regularly
|
|
54
|
+
4. Verify TLS certs (`noTLSVerify: false`)
|
|
55
|
+
5. Restrict `bastion` service type
|
|
56
|
+
|
|
57
|
+
### Performance
|
|
58
|
+
1. Run multiple replicas for HA
|
|
59
|
+
2. Place `cloudflared` close to origin (same network)
|
|
60
|
+
3. Use HTTP/2 for gRPC (`http2Origin: true`)
|
|
61
|
+
4. Tune keepalive for long-lived connections
|
|
62
|
+
5. Monitor connection counts
|
|
63
|
+
|
|
64
|
+
### Configuration
|
|
65
|
+
1. Use environment variables for secrets
|
|
66
|
+
2. Version control config files
|
|
67
|
+
3. Validate before deploying (`cloudflared tunnel ingress validate`)
|
|
68
|
+
4. Test rules (`cloudflared tunnel ingress rule <URL>`)
|
|
69
|
+
5. Document rule order (first match wins)
|
|
70
|
+
|
|
71
|
+
### Operations
|
|
72
|
+
1. Monitor tunnel health in dashboard
|
|
73
|
+
2. Set up disconnect alerts
|
|
74
|
+
3. Graceful shutdown for config updates
|
|
75
|
+
4. Keep `cloudflared` updated (1 year support)
|
|
76
|
+
5. Use `--no-autoupdate` in prod; control updates manually
|
|
77
|
+
|
|
78
|
+
## Limitations
|
|
79
|
+
|
|
80
|
+
- **Free tier**: Unlimited tunnels and traffic
|
|
81
|
+
- **Tunnel limit**: 1000 replicas per tunnel
|
|
82
|
+
- **Connection duration**: No hard limit (hours to days)
|
|
83
|
+
- **Long-lived connections**: Drop during replica updates (WebSocket, SSH, UDP)
|
|
84
|
+
|
|
85
|
+
## Debug Mode
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
cloudflared tunnel --loglevel debug run my-tunnel
|
|
89
|
+
cloudflared tunnel ingress rule https://app.example.com
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Migration Strategies
|
|
93
|
+
|
|
94
|
+
### From Ngrok
|
|
95
|
+
```yaml
|
|
96
|
+
# Ngrok: ngrok http 8000
|
|
97
|
+
# Cloudflare Tunnel:
|
|
98
|
+
ingress:
|
|
99
|
+
- hostname: app.example.com
|
|
100
|
+
service: http://localhost:8000
|
|
101
|
+
- service: http_status:404
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### From VPN
|
|
105
|
+
```yaml
|
|
106
|
+
# Replace VPN with private network routing
|
|
107
|
+
warp-routing:
|
|
108
|
+
enabled: true
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
cloudflared tunnel route ip add 10.0.0.0/8 my-tunnel
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Users install WARP client instead of VPN.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Tunnel Patterns
|
|
2
|
+
|
|
3
|
+
## Docker Deployment
|
|
4
|
+
|
|
5
|
+
### Quick Tunnel
|
|
6
|
+
```dockerfile
|
|
7
|
+
FROM cloudflare/cloudflared:latest
|
|
8
|
+
CMD ["tunnel", "--url", "http://app:8080"]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Named Tunnel
|
|
12
|
+
```yaml
|
|
13
|
+
services:
|
|
14
|
+
cloudflared:
|
|
15
|
+
image: cloudflare/cloudflared:latest
|
|
16
|
+
command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
|
|
17
|
+
restart: unless-stopped
|
|
18
|
+
app:
|
|
19
|
+
image: myapp:latest
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### With Config File
|
|
23
|
+
```yaml
|
|
24
|
+
services:
|
|
25
|
+
cloudflared:
|
|
26
|
+
image: cloudflare/cloudflared:latest
|
|
27
|
+
volumes:
|
|
28
|
+
- ./config.yml:/etc/cloudflared/config.yml:ro
|
|
29
|
+
- ./credentials.json:/etc/cloudflared/credentials.json:ro
|
|
30
|
+
command: tunnel --config /etc/cloudflared/config.yml run
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Kubernetes Deployment
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
apiVersion: apps/v1
|
|
37
|
+
kind: Deployment
|
|
38
|
+
metadata:
|
|
39
|
+
name: cloudflared
|
|
40
|
+
spec:
|
|
41
|
+
replicas: 2
|
|
42
|
+
selector:
|
|
43
|
+
matchLabels:
|
|
44
|
+
app: cloudflared
|
|
45
|
+
template:
|
|
46
|
+
metadata:
|
|
47
|
+
labels:
|
|
48
|
+
app: cloudflared
|
|
49
|
+
spec:
|
|
50
|
+
containers:
|
|
51
|
+
- name: cloudflared
|
|
52
|
+
image: cloudflare/cloudflared:latest
|
|
53
|
+
args:
|
|
54
|
+
- tunnel
|
|
55
|
+
- --no-autoupdate
|
|
56
|
+
- run
|
|
57
|
+
- --token
|
|
58
|
+
- $(TUNNEL_TOKEN)
|
|
59
|
+
env:
|
|
60
|
+
- name: TUNNEL_TOKEN
|
|
61
|
+
valueFrom:
|
|
62
|
+
secretKeyRef:
|
|
63
|
+
name: tunnel-credentials
|
|
64
|
+
key: token
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## High Availability
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
# Same config on multiple servers
|
|
71
|
+
tunnel: <UUID>
|
|
72
|
+
credentials-file: /path/to/creds.json
|
|
73
|
+
|
|
74
|
+
ingress:
|
|
75
|
+
- hostname: app.example.com
|
|
76
|
+
service: http://localhost:8000
|
|
77
|
+
- service: http_status:404
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Run on multiple machines:
|
|
81
|
+
```bash
|
|
82
|
+
# Server 1
|
|
83
|
+
cloudflared tunnel run my-tunnel
|
|
84
|
+
|
|
85
|
+
# Server 2 (same config)
|
|
86
|
+
cloudflared tunnel run my-tunnel
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Cloudflare automatically load balances. Long-lived connections (WebSocket, SSH) will drop during updates.
|
|
90
|
+
|
|
91
|
+
## Use Cases
|
|
92
|
+
|
|
93
|
+
### Web Application
|
|
94
|
+
```yaml
|
|
95
|
+
ingress:
|
|
96
|
+
- hostname: myapp.example.com
|
|
97
|
+
service: http://localhost:3000
|
|
98
|
+
- service: http_status:404
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### SSH Access
|
|
102
|
+
```yaml
|
|
103
|
+
ingress:
|
|
104
|
+
- hostname: ssh.example.com
|
|
105
|
+
service: ssh://localhost:22
|
|
106
|
+
- service: http_status:404
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Client:
|
|
110
|
+
```bash
|
|
111
|
+
cloudflared access ssh --hostname ssh.example.com
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### gRPC Service
|
|
115
|
+
```yaml
|
|
116
|
+
ingress:
|
|
117
|
+
- hostname: grpc.example.com
|
|
118
|
+
service: http://localhost:50051
|
|
119
|
+
originRequest:
|
|
120
|
+
http2Origin: true
|
|
121
|
+
- service: http_status:404
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Multiple Environments
|
|
125
|
+
```yaml
|
|
126
|
+
ingress:
|
|
127
|
+
- hostname: prod.example.com
|
|
128
|
+
service: http://localhost:8001
|
|
129
|
+
- hostname: staging.example.com
|
|
130
|
+
service: http://localhost:8002
|
|
131
|
+
- hostname: dev.example.com
|
|
132
|
+
service: http://localhost:8003
|
|
133
|
+
- service: http_status:404
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Service Installation
|
|
137
|
+
|
|
138
|
+
### Linux systemd
|
|
139
|
+
```bash
|
|
140
|
+
cloudflared service install
|
|
141
|
+
systemctl start cloudflared
|
|
142
|
+
systemctl enable cloudflared
|
|
143
|
+
systemctl status cloudflared
|
|
144
|
+
|
|
145
|
+
# Logs
|
|
146
|
+
journalctl -u cloudflared -f
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### macOS launchd
|
|
150
|
+
```bash
|
|
151
|
+
sudo cloudflared service install
|
|
152
|
+
sudo launchctl start com.cloudflare.cloudflared
|
|
153
|
+
sudo launchctl load -w /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
|
|
154
|
+
|
|
155
|
+
# Logs
|
|
156
|
+
tail -f /Library/Logs/com.cloudflare.cloudflared.err.log
|
|
157
|
+
```
|