Everything that can run on your machines, the versions on offer, and which parts you choose.
A stack is the set of services an environment runs. Some of it arrives with your project type and some of it you pick.
You choose a project type — Drupal, Laravel, WordPress, PHP, Go or Node.js — and the web bundle comes with it, whole:
The schedule comes with it too, but not as a container. Your framework's
cron runs on the machine itself, against the application that is already
running there — see vallic.yaml for declaring your own
jobs.
These are not tick-boxes. A stack missing any of them is not a working site, and asking somebody to tick five boxes that must all be ticked is asking them to get it wrong. They run on the machines you already pay for, at no extra charge.
Every PHP project — Drupal, Laravel, WordPress or plain PHP — runs on the same PHP-FPM image. What differs between them is not the image but what the platform sets around it: the Nginx configuration, the document root, the default cron and the directories kept between releases.
For Drupal, Laravel and WordPress two are required, because there is no sensible default:
A PHP, Go or Node.js project needs neither, and gets either only by asking.
Your database, its user and its password are created for that environment alone, and your application is handed them in its environment file. You never set them and you never need to know them.
The rest are optional and cost a machine or a container each:
npm. It runs only during a build, never beside the
siteThe version in bold is what you get if you do not choose one. This table is built from the same catalogue the configurator reads, so it is never out of date.
| Service | Kind | What it does | Versions |
|---|---|---|---|
| Go | Application | A compiled Go binary serving its own HTTP. Like Node it is the web server as well as the application, and like Node it replaces PHP-FPM and nginx rather than joining them. | 1.27.0, 1.26.7, 1.26.6 |
| Node.js | Application | A Node application serving its own HTTP — Next.js, Nuxt, Express or anything else that listens on a port. Replaces PHP-FPM and nginx rather than joining them: it is the web server as well as the application. | 26.10, 24.21, 22.23, 26.8, 24.20 |
| PHP-FPM | Application | The platform's PHP-FPM image, for every PHP project: Drupal, WordPress, Laravel or anything else. Drush and wp-cli come with the release, not the image. | 8.5, 8.4, 8.3, 8.2 |
| MariaDB | Database | The database. Moves to its own server in the split-db topology; the service is the same either way. | 11.8, 11.4, 10.11 |
| MySQL 8 | Database | Oracle’s MySQL rather than MariaDB. The same wire protocol and the same driver; chosen where an application or a team is committed to MySQL itself. | 8.0 |
| PostgreSQL | Database | The other relational database. Chosen instead of MariaDB, never beside it. | 18.6, 18.4, 18.3 |
| Queue worker | Application | Laravel's queue worker. The same container again, running the worker. | — |
| Nginx | Application | Serves static files and passes PHP to FPM. Joins the host edge network so the shared proxy can route to it. | 1.31, 1.30, 1.29 |
| Valkey | Cache | Cache and sessions. Not required for more than one web node — sessions in the database work across machines too — but faster for both. | 9.0, 8.1, 8.0 |
| Redis | Cache | In-memory cache. Valkey is the fork most stacks now take; this is here for what expects Redis by name. | 8.6, 8.4, 8.2 |
| Memcached | Cache | A simpler cache than Redis: keys and values, nothing else, and nothing kept when it restarts. | 1.6, 1.5, 1.4 |
| Meilisearch | Search | Search without ZooKeeper beside it. One container where Solr is two. | v1.53.1, v1.53.0, v1.52.3 |
| RabbitMQ | Background work | A message broker for work that outlives the request that asked for it. | 4.3.5, 4.3.4, 4.3.3 |
| Varnish | Reverse proxy | Varnish, as wodby now ships it. Caches whole responses in front of whatever answers for the site — nginx for a PHP application, the application itself for Node.js or Go — so a hit never reaches it at all. | 8.0, 6.0 |
| Solr | Search | Search. Needs zookeeper, which is added automatically. | 10.0, 9.10, 9.9 |
| ZooKeeper | Search | Coordination for Solr. Never selected on its own; Solr pulls it in. | 3.9 |
| OpenSMTPD | Application | Outbound mail relay for environments not using a hosted provider. | 7.8, 7.6, 7.5 |
| Node.js | Build tools | Node.js and npm for build steps — compiling a theme, bundling front-end assets. A tool the build runs in, not a container that runs beside the site: nothing of it is started, and it belongs to no machine. | 26.10, 24.21, 22.23, 26.8, 24.20 |
Each has its own page with the full version list, which of them are on their way out, and the variables you may set on it. They are the pages under Software in the sidebar.
Versions are per environment, so a runtime or database upgrade is something you try on staging first. Staging is an environment you add to a project, on either plan — see Environments. Without one, the first environment to run a new version is production.
Data on disk survives a container image changing — the database keeps its files outside the container precisely so that upgrading the image is not a restore from backup. Downgrading is a different matter: a database that has opened its files with a newer version will usually refuse an older one, so treat a major version change as one-way unless you have checked otherwise.
Environments covers where these versions are set.