Skip to content

Upsun ​

This plugin runs Upsun projects locally. It reads your Upsun configuration, builds the equivalent Lando services, and gives the app container the same runtime contract it gets on Upsun:

  • PLATFORM_* variables (PLATFORM_RELATIONSHIPS, PLATFORM_ROUTES, PLATFORM_APPLICATION, PLATFORM_VARIABLES, ...)
  • per-relationship service variables (DATABASE_HOST, DATABASE_URL, ...)
  • build and every-start hooks, mounts, workers, operations and optional scheduled crons
  • real local redirects, Mailpit and Xdebug toggles
  • the upsun CLI inside the container, plus lando pull and lando push

Both Upsun configuration flavors are supported:

FlavorConfigCLI
Upsun Flex.upsun/config.yamlupsun
Upsun Fixed (formerly Platform.sh).platform.app.yaml + .platform/platform
yaml
name: my-project
recipe: upsun

Services run on Lando's own service plugins (PHP, MariaDB, PostgreSQL, Redis, ...) rather than Upsun's production images, so current versions and ARM hosts work. See Caveats for what that means.

Supported runtimes ​

Upsun typeLando service
phpphp (nginx)
nodejsnode
pythonpython
rubyruby
golanggo
composablethe primary runtime in the stack (php, nodejs, python, ruby, golang)

java, dotnet, elixir and rust are not supported and produce a warning.

Supported services ​

Upsun typeLando service
mariadb, mysqlmariadb
mariadb-replicaread-only user on its primary; no container
oracle-mysqlmysql
postgresqlpostgres
postgresql-replica, postgres-replicaread-only user on its primary; no container
redis, redis-persistentredis
memcachedmemcached
mongodb, mongodb-enterprisemongo
solrsolr
elasticsearch, elasticsearch-enterpriseelasticsearch
varnishvarnish
opensearch, valkey, valkey-persistent, rabbitmq, kafka, influxdb, chrome-headless, gotenberg, clickhouse, mercureofficial upstream image via compose
network-storagemount directories only; no local service
vault-kmsnot supported

Versions are matched exactly when Lando supports them; otherwise the nearest lower version in the same major (or the newest supported) is used with a warning.

mariadb-replica, postgresql-replica (Flex) and postgres-replica (Fixed) run on their primary through a read-only user, without another container. Reads see primary writes immediately, with no replication lag. MariaDB uses SELECT grants; PostgreSQL uses default_transaction_read_only. Local usernames are <replica>_<endpoint>, unlike Upsun's endpoint usernames. Pull, push and switch skip replica relationships: pull the primary instead.

valkey-persistent uses a named data volume and append-only writes to retain data across restarts and rebuilds. lando destroy deletes its local data. lando pull only imports SQL databases, not Valkey data.

Requirements ​

  • Lando 3.21.0 or newer
  • Ports 80 and 443 free on the host for Lando's proxy
  • jq is installed in app containers