| Direct deployment | Change Center |
| The edited file is applied immediately. | The candidate is stored as a draft and can be reviewed before any server is changed. |
| The operator must coordinate cluster nodes manually. | Cluster targets, order, batches, canaries and exclusions are recorded in the rollout plan. |
| Errors are discovered during or after the update. | The candidate is validated on every included target before deployment. |
| The previous state must be found and restored manually. | A separate pre-change snapshot is captured for every target and used for rollback. |
| It is difficult to reconstruct who changed what and why. | The diff, author, approver, target results and timeline remain attached to the change. |
| Later manual edits may remain unnoticed. | Drift detection compares the live file with the deployed baseline. |
- Create: edit a configuration file and save the candidate as a named change request.
- Validate: Roxy-WI checks the candidate on every included rollout target without replacing the live file.
- Approve, when required: another administrator reviews the highlighted diff and approves the request.
- Deploy or schedule: run the change now or assign a start time and an optional maintenance-window end.
- Observe: follow every node, batch and health check in the change details and timeline.
- Control: pause between batches, promote a manually gated rollout, retry a node or roll back when needed.
- Verify: use drift detection to confirm that deployed nodes still match the approved configuration.
Group deployment policy
In 9.1, a super administrator can choose how each group deploys HAProxy, NGINX, Apache and Keepalived configurations. Open Admin area → Groups, use the group's Actions → Configure deployment policy menu, select a mode for each service and click Save policy.
| Mode | Effect |
|---|---|
| Direct and Change Center | Allow direct configuration deployment and creation of Change Center requests. This is the default for existing and new groups. |
| Change Center required | Block direct configuration deployment for this service and group. Validate in the editor, then create a change and deploy it through Change Center. |
| Direct deployment only | Allow direct deployment and block creation of new Change Center requests for this service and group. |
Configuration checks remain available in every mode. Policies are enforced by the server as well as reflected in the interface. Change Center still requires an active Premium subscription; selecting a policy does not activate it. Confirm availability before requiring Change Center for a group.

Background tasks in 9.1
Change Center requires Premium. From Roxy-WI 9.1, validation, deployment, rollback, resume, promotion, per-node retry/rollback/include and drift checks run as durable Operations tasks through RabbitMQ.
After starting an action, follow its operation ID, queued/running/completed state and failure message in the change details and timeline. You may close the page and reopen it to resume progress updates. A queued task has not yet applied the change. Approval, scheduling, cancellation and pause signals still return their immediate result.
API callers receive HTTP 202 with the change data and tasks_ids for queued actions. Inspect the change's operation field for task ID, status, active flag and error; accepting a task is not proof that deployment succeeded.
A Web restart does not interrupt queued work. If Operations stops, its lease expires after ROXYWI_OPERATIONS_LEASE_SECONDS (300 seconds by default). Work that had started is marked interrupted for inspection before retry/resume/rollback; it is not automatically deployed again. Pending work can run after Operations returns. The maintenance window is checked again when scheduled work leaves the queue.
Scheduler retains completed Change Center task history for 30 days and prunes hourly, preserving active tasks and the latest task for each change. ROXYWI_CHANGE_HISTORY_RETENTION_DAYS changes this period; 0 disables cleanup. Changes, configuration snapshots and their audit timelines are retained.
- Open the configuration editor for the required server and service.
- Select the configuration file when the service supports multiple files, then make your edits.
- Click Create change.
- Enter a clear name and description. Explain the intent and the expected result, not only the lines that changed.
- Select the action: Save, Reload or Restart.
- Select the execution mode and, when needed, configure batches, concurrency, canaries, excluded nodes, health checks, approval and notification recipients.
- Create the request. Roxy-WI opens Change Center, where you can inspect and validate it.
| Setting | How it works |
| Rolling | Deploys the configuration in batches. With the automatic batch size, one node is processed at a time. This is the safer default for a live cluster. |
| Parallel | Processes several targets concurrently, up to the configured maximum. Use it when speed is more important and the service can tolerate simultaneous changes. |
| Canary | Deploys selected slave nodes in the first batch. If the canary fails validation, deployment or health checks, the remaining nodes are not changed. |
| Manual promotion | Stops after a successful batch with Awaiting promotion. Inspect the service, then click Promote to continue with the next batch. |
| Exclude | Temporarily removes an unavailable slave from this rollout. The master or a standalone target cannot be excluded. |
- In sync: all checked files match the deployed baseline.
- Drift detected: at least one file differs; open the details to view the highlighted diff.
- Check failed: Roxy-WI could not read or compare at least one target.
- Not checked: no drift comparison has completed yet.
| Status | Meaning and next step |
| Draft | Edit the request or run validation. |
| Validation failed | Review the target output. Retry a temporary failure, or correct the configuration and create a new change. |
| Validated | The request is ready to deploy or schedule without approval. |
| Pending approval | Another administrator must review and approve the request. |
| Approved | The approved request is ready to deploy or schedule. |
| Scheduled | The scheduler will claim the request at the selected time. |
| Deploying | One or more rollout targets are being processed. |
| Pause requested | The active batch is allowed to finish; click Resume to cancel the pending pause. |
| Paused | The rollout stopped safely between batches and can be resumed. |
| Awaiting promotion | A batch completed and requires manual promotion before the next batch. |
| Deployment interrupted | Verify remote state, then resume, retry a target or roll back. |
| Deployed | All included targets completed successfully; drift detection is available. |
| Auto rolled back | Deployment failed and all affected targets were restored automatically. |
| Auto rollback failed | Deployment and at least one automatic restore failed; inspect per-node output. |
| Rolling back / Rolled back | An explicit restore is running / completed successfully. |
| Rollback failed | At least one target could not be restored; correct the cause and retry. |
| Schedule missed | The maintenance window expired or the scheduled deployment could not start; inspect the output and reschedule or deploy manually. |
| Cancelled | The request was closed without deployment. |
- Roxy-WI must have working SSH access to every included target and permission to read, validate and replace the selected configuration file.
- The service and its configuration path must be configured correctly on every target.
- Run one dedicated Scheduler (
python3 roxy_wi.py scheduler), Operations (python3 roxy_wi.py operations) and RabbitMQ. Keep Scheduler separate from Web workers. All roles must share the database, encryption key, saved configurations andlib_path;lib_path/change-locksrequires shared advisory file locks. See deployment and health checks. - The scheduler checks scheduled deployments every 15 seconds, notification deliveries every 10 seconds and deployed configurations for drift every five minutes.
- Before a high-risk rollout, use a canary slave, rolling batches, full health checks and manual promotion.
- Do not disable health checks only to make a failing rollout pass. Fix the validation, service-state or SSH problem shown in the target output.
- If a rollout was interrupted, inspect the remote file and per-node status before using Recover, Resume or Retry.