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.

Post-install server role management

1 total vote
Quick Actions
Activity
View recent activity and updates
Use arrow keys to navigate