references/config-file.md | Full craft-cloud.yaml key reference: php-version, node-version, node-path, npm-script, artifact-path (webroot-unpublishing caution), app-path, webroot, cache: → rules:, redirects, rewrites | 156 |
references/deploy-pipeline.md | Build → Migrate → Release flow, On Push vs Manual triggers, 15-min build cap, build-time system vars (CRAFT_CLOUD_*, GIT_SHA), runtime env vars in Console (changes need a redeploy), reserved/injected vars you must NOT set (CRAFT_SECURITY_KEY, CRAFT_APP_ID, CRAFT_OMIT_SCRIPT_NAME_IN_URLS, CRAFT_DB_*, REDIS_*, …), artifact URLs (cloud.artifactUrl(), @artifactBaseUrl, no cache-busting, manifest/svg() CDN reads, white-label CDN rewrite), private Composer packages (Composer Auth), failed-migration rollback semantics | 210 |
references/headless.md | Headless apps + request signing: bot detection and 429/503 on SSG/ISR traffic, RFC 9421 HMAC signatures with $CRAFT_CLOUD_SIGNING_KEY (5-min validity, exact-URL match, gateway validation falls back silently), the Retry-After + backoff retry contract (reads only, throw on exhaustion), Next.js/Nuxt/Astro integration, signing from Craft via getRequestSigner() | 107 |
references/extension.md | craftcms/cloud package: Yii2 module bootstrap, App::isEphemeral(), Path service usage, cloud.esi() Twig helper, cloud/up internals (verified from source), asset-bundle CDN publisher, binary response auto-upload, log target | 201 |
references/assets-and-transforms.md | Cloud filesystem type (mandatory assets/ subpath), aws s3 sync migration, edge image transforms (70MB / 100MP / 12,000px limits, AVIF 1,600px cap, stretch-mode constraint), no template-side changes required | 87 |
references/database.md | MySQL 8.0 / Postgres 15 only (no MariaDB), tablePrefix ban, php craft db/drop-table-prefix, auto-wired connection, nightly + on-demand backups (30-day retention, 200GB cap, not part of Cloud's durability architecture), restore commands | 111 |
references/caching-and-edge.md | Static caching rules (nested cache: → rules:, pattern + query-string + cookies, first-match wins), default ignored tracking params (custom rules replace the list), logged-in users vs the cached guest copy (cookies: [CraftSessionId]), opt-outs ({% expires %}, setNoCacheHeaders()), flash-guard pattern, Commerce cart caveat, asyncCsrfInputs force-enabled, cloud.esi(...) for dynamic islands (scalar vars only, no nesting), tag-based auto-invalidation | 347 |
references/domains.md | DNS setup (_cf-custom-hostname TXT, CNAME to edge.craft.cloud, apex A records, Orange-to-Orange Cloudflare), preview URL format, auto SSL, www not auto-added, extra-domain pricing | 104 |
references/commands-and-cron.md | Console command runner (no SSH, 255-char cap, 15-min cap, no shell interpolation), scheduled commands (hourly minimum, max 5 per env), queue jobs auto-processed (don't schedule a runner), 15-min per-job cap, batched jobs for long work | 143 |
references/plugin-development.md | Cloud-compatible plugin checklist: asset-bundle constraints, App::isEphemeral() gating, Path service, Craft::info() for logs, queue-job budgeting, cookie-free design, csrfInput() function (CSRF-token leakage warning), sendContentAsFile() auto-handling, asset-select preference, Craft 4.6+ minimum | 234 |
references/migration.md | Self-hosted → Cloud cutover: audit (table prefix, MariaDB, file writes, .htaccess, third-party S3 plugins), php craft db/drop-table-prefix, asset migration via aws s3 sync, DNS cutover sequence, project-config sync | 132 |
references/local-dev.md | DDEV recipe to mirror Cloud: matching PHP from craft-cloud.yaml, DB engine + version, the Cloud extension self-detection and no-op locally, optional CRAFT_EPHEMERAL for testing guards, S3 emulation pointers | 145 |
references/limitations.md | Documented unsupported features (MariaDB, tablePrefix, .htaccess, SSH, sendmail, devMode in prod, 6MB response cap incl. front-end uploads, 16KB header cap, 60s request timeout, 200MB upload cap, no env cloning, no region change, no per-PR previews, CP DB-backup utility disabled, forked repos can't deploy) + environments facts (non-prod robots.txt Disallow, function sleep, shared asset bucket, deletion is total) + flattened duplicate headers, inert resourceBase* + community-knowledge plugin compatibility matrix (ImageOptimize, Imager-X, Blitz, Typesense, etc.) clearly marked as not Pixel & Tonic-blessed + mail strategy + logging gap | 239 |