Skip to main content

Uninstallation

This guide covers how to remove Cirata Symphony from a host or cluster, including pre-uninstall checks, deployment-specific procedures, and verification.

info

The commands below vary by deployment method. Ensure the required tools are installed for your environment.

warning

Uninstallation deletes the platform's cryptographic identity keys and all persistent state by default. Once deleted, this data cannot be recovered. Any extension token, API key, or user account ever issued by this instance becomes permanently unverifiable. Back up the configuration directory before uninstalling if there is any chance you may need it later. See Operations > Backup.

Pre-Uninstall Checklist

Before uninstalling:

  1. Back up the configuration directory See Operations > Backup
  2. Notify users of planned shutdown
  3. Decide whether to keep data, keeping /var/lib/symphony/ (or the equivalent volume) preserves cryptographic keys for a future reinstall without re-issuing every credential
  4. Note any external resources that may need separate cleanup (DNS records, OIDC client registrations, TLS certificates, load balancer rules)
# Back up configuration (see Backup and Recovery for all supported approaches)
cirata symphony backup --output ./symphony-backup-$(date +%Y%m%d).tar

Uninstall Procedures

Docker Compose

Cirata Symphony runs as a set of containers managed by Docker Compose. Stop and remove the containers from the directory containing your docker-compose.yml.

cd /path/to/symphony

# Stop and remove containers, but keep volumes (data preserved)
docker compose down

# Stop and remove containers AND volumes (full removal)
docker compose down -v

When you installed with the bundled Keycloak overlay, include both compose files in the command so all related containers and volumes are removed together:

# Keep volumes
docker compose -f docker-compose.yml -f docker-compose.keycloak.yml down

# Full removal (containers, networks, and named volumes)
docker compose -f docker-compose.yml -f docker-compose.keycloak.yml down -v
tip

If you exported COMPOSE_FILE=docker-compose.yml:docker-compose.keycloak.yml, you can omit the -f flags. See Docker Compose Installation.

To also reclaim the loaded Symphony container image and the extracted installation archive:

# Remove the loaded image
docker image rm cirata:<version>

# Remove the extracted archive directory
rm -rf /path/to/symphony-*-docker

Linux (systemd)

The Linux installation archive ships an uninstall.sh script that reverses the actions of setup.sh.

cd symphony-*-linux-amd64

# Remove everything including data
sudo ./uninstall.sh

# Remove everything but preserve /var/lib/symphony/ (for reinstall)
sudo ./uninstall.sh --keep-data

# Skip the confirmation prompt (for automation)
sudo ./uninstall.sh --yes

The script stops and disables the service, removes the systemd unit, binary, configuration directory, nginx site and certificates, journald drop-in, and the symphony system user. By default it also removes /var/lib/symphony/; pass --keep-data to preserve it.

If you no longer have the installation archive, perform the steps manually. See Linux Installation: Manual Uninstall.

RPM

# Remove the package (data and configuration are preserved)
sudo dnf remove cirata-symphony

On SLES or older distributions:

sudo zypper remove cirata-symphony
sudo rpm -e cirata-symphony

The RPM does not remove modified configuration files or user data directories. To fully clean up:

# Remove data directory (WARNING: irreversible, back up first if needed)
sudo rm -rf /var/lib/symphony/

# Remove configuration
sudo rm -rf /etc/symphony/

# Remove log directory
sudo rm -rf /var/log/symphony/

# Remove system user and group
sudo userdel symphony 2>/dev/null

If you also installed the on-box nginx site from the shipped template, remove it as well:

sudo rm -f /etc/nginx/conf.d/symphony.conf
sudo rm -rf /etc/nginx/certs/symphony/
sudo nginx -t && sudo systemctl reload nginx

Kubernetes

# Uninstall the Helm release
helm uninstall symphony

# Or, when installed into a non-default namespace
helm uninstall symphony -n symphony

By default, helm uninstall releases the PersistentVolumeClaim. If your StorageClass has a reclaim policy of Delete (the common default), the underlying volume and all Symphony state are permanently deleted. See Kubernetes Installation: PersistentVolume reclaim policy for the controls that prevent this.

To remove resources that helm uninstall does not touch:

# Remove the PVC (only if persistence.keepOnUninstall=true was set, or
# you patched the PV reclaim policy to Retain, otherwise the PVC was
# already released)
kubectl delete pvc -l app.kubernetes.io/instance=symphony

# Remove the bundled Keycloak PVC if it was kept
kubectl delete pvc -l app.kubernetes.io/instance=symphony-keycloak

# Remove any TLS or CA secrets you created manually
kubectl delete secret symphony-tls symphony-tls-ca symphony-nats-tls 2>/dev/null

# Remove the namespace (if it was dedicated to Symphony)
kubectl delete namespace symphony

If you patched the PV reclaim policy to Retain for production, the PV remains after the PVC is deleted. Remove it manually when the data is genuinely no longer needed:

kubectl get pv | grep symphony
kubectl delete pv <pv-name>

Verifying Removal

After uninstalling, verify that Symphony is no longer present:

  1. Service is no longer running:

    # Linux / RPM
    sudo systemctl status symphony 2>&1 | grep -E "could not be found|inactive"

    # Docker
    docker compose ps 2>/dev/null

    # Kubernetes
    kubectl get pods -l app.kubernetes.io/instance=symphony
  2. Ports are free:

    ss -tlnp | grep -E '8080|4222|9222'
    # Should return no output
  3. Binary is removed (Linux/RPM):

    command -v cirata
    # Should return no output (or only your client CLI binary)
  4. Reverse-proxy reload succeeded (Linux/RPM with on-box nginx):

    sudo nginx -t && echo "nginx OK"

External Cleanup

The procedures above only touch the host or cluster running Symphony. Depending on your deployment, you may also need to:

  • Stop and uninstall any extensions that were connected to this Symphony instance. Extensions run as separate processes (often on different hosts) and are not removed by uninstalling the platform. Each extension has its own lifecycle and removal steps. Consult the documentation for each extension you deployed for guidance on how to stop it cleanly and remove its installed files, services, or containers. See Extensions for the list of bundled extensions and links to their individual help pages.
  • Remove the DNS record for EXTERNAL_HOSTNAME
  • Delete OIDC client registrations (symphony-api, symphony-ui) from your identity provider
  • Revoke or remove TLS certificates issued for the hostname
  • Remove load balancer or external-proxy rules that forwarded traffic to the Symphony host

When Symphony was integrated with external systems (Slack, OTLP collectors, monitoring dashboards), revoke any API keys or webhooks those integrations used.

See Also