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 (CRAFTCLOUD, GITSHA), runtime env vars in Console (changes need a redeploy), reserved/injected vars you must NOT set (CRAFTSECURITYKEY, CRAFTAPPID, CRAFTOMITSCRIPTNAMEINURLS, CRAFTDB, 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 $CRAFTCLOUDSIGNING_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 |