Methodology

Make the deployment logic inspectable.

The application carries one declared workload boundary from planning into configuration inspection, then keeps detected facts separate from launch work that still requires confirmation.

Blueprint rules

Workload, host, expected exposure, protected-state size, and recovery priority form the typed preflight context. Derived state categories come from the maintained workload catalog rather than URL text.

Compose normalization

The browser resolves YAML anchors, normalizes short and long syntax, validates against the pinned Compose schema, and prefers final docker compose config output.

Source review

Every maintained workload, rule family, and guide declares its upstream references, review cadence, affected pages, and formula or rule identifiers.

Workload baseline contract

Maintain stable operating boundaries instead of release-sensitive YAML.

WordPress, Nextcloud, and Gitea share one typed catalog contract. Each entry must identify its service shape, durable state, four update gates, rollback package, recovery acceptance checks, and workload-owned primary sources. Release tags and complete Compose files are absent from this catalog.

State boundary

Every state item has a category used by the deployment blueprint, expected Compose evidence, a consistency-aware backup boundary, and an application-level restore proof. Display labels and planning state come from the same record.

Update gates

Every workload passes through capture, quiesce, apply, and verify. Each gate has an observable completion condition so pulling an image cannot be mistaken for a completed application update.

Recovery acceptance

Rollback always joins the prior application model with compatible state. Recovery finishes only after representative identity, read, write, state, integration, and public-entry workflows pass.

Contextual preflight

Compare what the stack does with what the blueprint expects.

Exposure boundary

A publicly published port conflicts directly with a private-network blueprint. Web-only plans reject a public SSH mapping, while missing Web or SSH entry roles remain confirmation items because an external gateway can own those edges. Database-like services publishing beyond loopback remain high priority in every context.

Persistent-state map

State-bearing services are associated with named volumes and documented bind mounts from the rendered model. Database services receive a database-consistent recovery action; anonymous or missing mounts stay unresolved. The blueprint’s state categories and protected size define the independent recovery confirmation.

Contextual severity

Schema failures, privilege expansion, Docker socket access, host networking, database exposure, and literal sensitive values are always high priority. Missing persistent mounts and mutable image references rise when the attached recovery boundary makes reproducibility or recoverability consequential.

Launch checklist states

Satisfied means the rendered model contains the expected evidence. Confirm is work that Compose alone cannot prove. High priority is a detected conflict or missing boundary that should be resolved before launch.

Neutral VPS specification

Calculate comparable floors without maintaining provider rankings.

The VPS planner carries only the known workload, state, exposure, and recovery boundary from deployment planning. CPU, application RAM, database or cache RAM, host reserve, system storage, growth, and transfer remain unresolved until supplied from upstream requirements, measurement, or an existing deployment.

Memory floor

RAM = application + database/cache + host reserve, rounded upward to the next half gigabyte. The three inputs stay visible so a provider’s advertised RAM is not compared with an unexplained total.

Storage floor

forecast state = current state + monthly growth × horizon. The state target is divided by the remaining share after the selected operating reserve, then the separate system, image, log, and temporary allowance is added.

Transfer floor

monthly transfer = expected public egress × (1 + reserve). Private-only plans assert no public-transfer floor, but still retain outbound-dependency and private-ingress verification.

Every result also emits the same eight provider checks: region, CPU entitlement, RAM, persistent storage, monthly transfer, recovery, networking, and host operations. Current price, availability, fair-use limits, snapshots, IP charges, overage, resize downtime, and export access remain candidate-specific fields rather than automated claims.

Change-impact comparison

Compare normalized application structure, not YAML formatting.

Both inputs pass through the same YAML resolver and pinned Compose schema. The comparison joins services by name, ignores mapping order, and evaluates image references, published ports, environment key additions/removals/value changes, mounts, privileges, network membership, health checks, dependencies, restart policy, and logging limits.

Backup trigger

State-bearing image changes, removed services, and removed or retargeted mounts require a recovery point before the proposed model is applied. Other changes retain an explicit migration confirmation.

Verification trigger

Every structural change produces a post-change verification scope from the categories and services that moved. Schema issues require a clean re-render before comparison can be treated as ready.

Rollback trigger

A changed model keeps the previous rendered configuration, prior image references, required environment sources, and compatible state recovery point together. Environment values are never emitted in the result or copied plan.

Continue planning

Apply the reviewed rules to a deployment.

Editorial record

Maintained by Make Your Own Tools to turn “Validate a deployment” into a defined host, state, exposure, and recovery boundary. The references below provide the technical context for this planning path. Its calculation rules and planning assumptions are documented in the methodology, and affected calculations pass regression checks before the review date advances.

Last reviewed
Evidence set
20 primary references
Compose Specification and schemaOfficial application model, syntax definitions, fragments, merge behavior, and machine-readable Compose schema.Open source ↗docker compose config CLI referenceCanonical rendering behavior for merged files, resolved variables, and expanded short syntax before readiness inspection.Open source ↗Docker Compose production guidanceProduction-specific Compose configuration, restarts, ports, logging, and deployment changes.Open source ↗Docker Compose secrets guidanceExplicit secret access and file-backed secret patterns for Compose services.Open source ↗Docker Compose environment-variable guidanceEnvironment configuration and the distinction between variables and sensitive values.Open source ↗Docker Compose quickstartNamed volumes, environment configuration, and validating rendered Compose configuration.Open source ↗Docker Compose volumes reference sourceMaintainer documentation source for service volume grants and a named-volume backup-access example.Open source ↗Docker resource constraintsOfficial CPU, memory, OOM, swap, and host-capacity boundaries used when turning measured workload requirements into a host specification.Open source ↗Docker port publishing and mappingOfficial public-port and localhost binding behavior for translating the planned exposure boundary into VPS network checks.Open source ↗WordPress Docker Official Image documentationImage-specific environment, volume, and configuration information for the WordPress Docker Official Image.Open source ↗WordPress backup handbookOfficial WordPress state map for a matched database-and-files backup and restore set.Open source ↗WordPress update guidanceOfficial update workflow covering pre-update backup, file changes, database update, plugins, and post-update checks.Open source ↗Nextcloud Docker image repositoryUpstream Docker image and Compose-related configuration material for Nextcloud.Open source ↗Nextcloud backup guidanceOfficial backup boundary for configuration, custom apps, data, themes, database, and maintenance mode.Open source ↗Nextcloud restore guidanceOfficial restoration order and file/client synchronization checks for a recovered Nextcloud instance.Open source ↗Nextcloud upgrade guidanceOfficial upgrade boundary for backups, application compatibility, maintenance mode, migrations, and restore-based rollback.Open source ↗Gitea installation with DockerUpstream Docker and Compose installation guidance for Gitea.Open source ↗Gitea reverse-proxy guidanceUpstream guidance for reverse-proxy headers and the canonical public URL when publishing a Gitea web service.Open source ↗Gitea backup and restore guidanceOfficial consistency, dump, database, repository, application-data, Docker restore, and hook-regeneration guidance.Open source ↗Gitea upgrade guidanceOfficial breaking-change, deprecated-configuration, database-migration, backup, and Docker upgrade boundary.Open source ↗