Summary
Allow users to add server roles to an existing server after the initial provisioning — not just the Docker role (which is already supported on web servers), but any role: NGINX, PHP, database, worker, Redis, and more. This brings full flexibility to server configuration without requiring a fresh reprovision.
Problem
Currently, server roles must be selected at provision time. If a server was initially set up as a Docker-only node, there is no way to add NGINX or PHP later without reprovisioning from scratch. Conversely, a web server (NGINX + PHP) cannot have a database or worker role added after the fact — unless it is the Docker role, which Ploi already supports as a post-install addition.
This inconsistency creates unnecessary server sprawl and forces users to reprovision and migrate workloads when their needs evolve.
Example use cases
- Docker → web server — A Docker-only node needs to also serve NGINX + PHP applications
- NGINX/PHP → + database — A web server grows to host its own database instead of using a separate node
- Web server → + worker — Add a queue worker role to an existing web server without reprovisioning
- Worker → + Redis — A background worker node should also host an in-process Redis cache
Proposed UX flow
Server detail page → Roles & Software tab → Add role → Confirm & install
- Compatible roles listed based on OS and current config
- Incompatible combinations greyed out with an explanation
- Installation runs as a background job without downtime on running services
- After install, the new role's management section (sites, databases, queues) becomes active automatically
Why this makes sense
Ploi already supports adding Docker to an existing web server post-install, so the underlying mechanism for layered role installation exists. The ask is to generalise that pattern to all roles — not build something new from scratch.
-
Kay van Aarssen moved item to project Servers
2 days ago -
Kay van Aarssen created the item
2 days ago