Overview
WordPress is the open-source content management system for websites and blogs. This template deploys Apache with PHP, a bundled MariaDB database, and a shared volume holding WordPress core, plugins, themes and the media library. The administrator account is created before the site accepts its first request. WordPress runs in exactly one location of your GVC, andwordpress.replicas adds interchangeable replicas that share the same volume and database.
This template deploys into an existing GVC that you already have — it does not create or manage a GVC. The
location you set must already be one of that GVC’s locations; if it is not, WordPress starts nothing in the GVC.What Gets Created
Your administrator, database and root password secrets are not created by the template — see Prerequisites.
Prerequisites
Three secrets must exist before you install, and the GVC should have one location (see the last step). Secrets are org-level, so no--gvc flag is involved, and their values never pass through Helm values.
1
Create the administrator secret
A dictionary secret with Set
username, password and email. WordPress creates its administrator account from it on first boot.admin.secretName to this name.2
Create the database credentials secret
A dictionary secret the bundled MariaDB initializes with and WordPress connects with:Set
mariadb.credentialsSecretName to this name. Secret names are org-wide, so give each release its own secrets.3
Create the MariaDB root password secret
An opaque secret holding the MariaDB root password. WordPress never reads it.Set
mariadb.rootPasswordSecretName to this name.4
Use a GVC with one location
WordPress runs only in the location named by
location, which must already be a location of your GVC. The bundled MariaDB starts in every location of the GVC, and each extra location would hold its own separate database. A fresh install on a GVC with more than one location is refused; do not add or remove GVC locations under a live release.Installation
Once your three secrets exist, install from the marketplace registry, pointing the keys at them andlocation at a location of your GVC:
UI
Browse, install, and manage templates visually
CLI
Manage templates from your terminal
Terraform
Declare templates in your Terraform configurations
Pulumi
Declare templates in your Pulumi programs
Configuration
Location
aws-us-east-1.
WordPress
PHP Limits
Administrator Account
Content Storage
Access
workload-list, include RELEASE_NAME-wordpress in the list. none isolates WordPress only together with publicAccess.enabled: false.
MariaDB
mariadb, including the phpMyAdmin console (mariadb.phpMyAdmin.enabled: true). mariadb.internalAccess.type may not be none, and a workload-list must include RELEASE_NAME-wordpress.
Connecting
Verify the site through a tunnel:
ok. The first boot seeds the content volume and runs the installer, so the workload takes several minutes to become ready.
First Run
The administrator account already exists from your administrator secret; sign in at/wp-admin. Set wordpress.siteUrl to your own domain once DNS points at the endpoint.
With publicAccess.enabled: false, reach the site through a tunnel. WordPress builds every link from its site URL, so set wordpress.siteUrl to the tunnel address (http://localhost:8080), run cpln helm upgrade, open the tunnel above and browse http://localhost:8080/wp-admin/. Set wordpress.siteUrl back to "" (or your custom domain) before turning the public endpoint on again.
Operations
Backing Up
Database backups are off by default. Enablemariadb.backup.enabled: true and choose a provider of aws or gcp; the bucket, cloud account and IAM setup are described in Backing Up, and the backup block above uses the same keys. A backup is a database dump: it does not include the media library, and the template takes no snapshot of the content volume. Keep your own copy of wp-content/uploads, because uninstalling the release deletes the volume.
Restoring a Backup
Restore steps for the database belong to the underlying template: Restoring a Backup. Restoring the media library is manual; copy your own copy ofwp-content/uploads back onto the content volume.
Resetting the Administrator Password
The administrator secret is read on first boot only. To reset the password, run this in the container; user1 is the administrator created at install:
Changing the Database Password
The database secrets are read when MariaDB first initializes. RunALTER USER in MariaDB first, then update the secret and redeploy both workloads:
Updating WordPress
Changingwordpress.image does not update WordPress core: the image seeds the content volume only while it is empty, and afterwards a new image changes PHP and Apache only. Update core, plugins and themes from the dashboard.
Scaling and Availability
wordpress.replicas: 2 or more keeps the site up while a WordPress replica restarts, because every replica mounts the same volume and database. The bundled MariaDB is a single instance and bounds availability: the site is down while it restarts. With one replica, a change that restarts the workload, such as wordpress.siteUrl or publicAccess.enabled, briefly takes the site down.
Troubleshooting
Deployment never becomes ready and the logs are empty
Deployment never becomes ready and the logs are empty
Symptom:
cpln helm install reported success, cpln logs returns nothing, and cpln workload get-deployments RELEASE_NAME-wordpress --gvc GVC_NAME -o yaml shows The secret SECRET_NAME no longer exists. Workload updates are paused until the secret is added or the reference to the secret removed. under status.versions[].message.
Cause: A prerequisite secret does not exist. The message names the missing one.
Fix: Create it (see Prerequisites), then run cpln workload force-redeployment RELEASE_NAME-maria --gvc GVC_NAME and cpln workload force-redeployment RELEASE_NAME-wordpress --gvc GVC_NAME.WordPress starts nothing and reports it is deactivated
WordPress starts nothing and reports it is deactivated
Symptom: The deployment message reads
This workload location is deactivated because maxScale is set to 0.
Cause: location is not one of the GVC’s locations. The default is aws-us-east-1.
Fix: Set location to a location your GVC already has, and run cpln helm upgrade.Redirect loops or broken links through a tunnel
Redirect loops or broken links through a tunnel
Symptom: The browser loops or links point at the public endpoint while you use
cpln port-forward.
Cause: WordPress builds every link from wordpress.siteUrl.
Fix: Set wordpress.siteUrl to the tunnel address, such as http://localhost:8080, and run cpln helm upgrade; see First Run.Password reset and invitation emails never arrive
Password reset and invitation emails never arrive
Symptom: WordPress reports success but no email is delivered.
Cause: The container has no mail transport.
Fix: Install an SMTP plugin from the dashboard.
Render refuses the install
Render refuses the install
Symptom:
cpln helm install fails with a message beginning wordpress:, such as wordpress: `location` is required or wordpress: wordpress.replicas must be at least 1.
Cause: A required value is missing or invalid.
Fix: Set the value the message names and install again.Important Notes
- Install into a single-location GVC and set
locationto that location; do not add or remove GVC locations under a live release. - A
locationthe GVC does not have runs nothing; set it to one the GVC lists. - The media library is not backed up and uninstalling deletes it; keep your own copy of
wp-content/uploads. wordpress.siteTitle,wordpress.tablePrefixand the three secrets apply on first boot only; change the title in Settings > General.- Outbound email does not work until you install an SMTP plugin.
- A firewall change after changing
publicAccess.enabledorinternalAccesstakes from 30 seconds to a few minutes to apply.
External References
WordPress Documentation
Official user documentation
Advanced Administration Handbook
Security, performance and server configuration
wp-config.php Reference
Every setting WordPress reads
Official WordPress Docker Image
Image variants and environment variables