New WordPress site (greenfield)

Step-by-step: install WP to S3 on a new site so all Media Library uploads go to S3 — no bulk migration.

Use this guide when the site is new or you do not need to move an existing wp-content/uploads library. You will install the plugin, connect a bucket, enable live offload, and use the Media Library as usual.

You do not run Migrate in this path. Migration is only for pre-existing local files.

Before you start

Steps

  1. Install WordPress as usual (hosting wizard, Local, Docker, etc.) and finish the famous five-minute install.

  2. Install WP to S3 from a release zip or from source.
    Follow Installation until the plugin is Active.

  3. Create or choose a bucket on your provider (Amazon S3, R2, MinIO, Spaces, Linode, …).
    Note endpoint, region, path-style requirement, access key, and secret.

  4. Open Media → WP to S3 → Settings.

  5. Fill connection settings:

    • Pick a provider preset if applicable (fills endpoint/region/path-style hints).
    • Enter endpoint, region, bucket, access key, secret key.
    • Optional: key prefix (e.g. prod → keys like prod/2026/08/photo.jpg).
    • Leave Delete local after upload unchecked for the first day of production (safer).
  6. Click Test.
    Confirm PUT, GET, and DELETE all pass (HTTP statuses shown on success).
    If anything fails, fix keys/endpoint/bucket policy and re-test before saving.

  7. Click Save Changes (unlocked after a successful Test when connection fields changed).

  8. Enable the plugin (checkbox Enable S3 upload + serve hooks), then Save Changes again if needed.

  9. Upload a test image via Media → Add New Media File.

  10. Confirm offload:

    • Media Library S3 status column shows offloaded (or dual if local was kept).
    • Attachment metabox shows the object key under your prefix.
    • Optional CLI: wp s3 doctor reports connection_test: OK and enabled: yes.
  11. Optional hardening after you trust the setup:

    • Turn on Delete local after upload so disk stays thin (same-host stream still serves URLs).
    • Or set a Public base URL / CDN — see Same-host vs CDN.
  12. Keep uploading. All new Media Library files follow the offload path. No migrate job is required.

What you should not do on greenfield

Troubleshooting

SymptomCheck
Test PUT fails 403Key permissions, bucket policy, wrong path-style
Test fails “not configured”Missing endpoint, bucket, or keys; save constants if using wp-config only
Plugin missing under MediaCapability (manage_options); user role
New upload stays local onlyEnabled off; doctor configured/sdk; PHP errors in debug log

Next