diff --git a/.gitlab/issue_templates/new_app.md b/.gitlab/issue_templates/new_app.md
index bb431eac95049c51731f6e4b8c6d0798709ef450..fef04657381c009c83540ad40de2e07075537ab2 100644
--- a/.gitlab/issue_templates/new_app.md
+++ b/.gitlab/issue_templates/new_app.md
@@ -28,10 +28,15 @@
   * [ ] Admin-login should grant admin privileges
   * [ ] Non-admin should not grant admin privileges
 
+### Etc
+
+* [ ] Add app to `dump_secrets()` in `stackspin/cluster.py`
+
 ## Tests
 
 * [ ] Make sure testing app resources work (`test/pytest/test_resources.py`)
 * [ ] Make sure testing app cert works (`test/pytest/test_certs.py`)
+* [ ] Add app to `test()` in `stackspin/__main__.py`
 * [ ] Add Taiko test (`tests/taiko`)
 
 ## CI
@@ -72,6 +77,7 @@
   * [ ] `docs/installation_instructions.rst`
   * [ ] `docs/testing_instructions.rst`
   * [ ] `docs/usage.rst`
+  * [ ] `Step 2: Install additional applications` in `docs/installation/install_stackspin.rst`
 
 ## Follow-up issues
 
diff --git a/docs/installation/install_stackspin.rst b/docs/installation/install_stackspin.rst
index 4aceb8919de2d29930c7e2890b0b30ab0995e7d1..1f2757c7bd79a8ba6d61c7c8b308efd611f53c35 100644
--- a/docs/installation/install_stackspin.rst
+++ b/docs/installation/install_stackspin.rst
@@ -71,8 +71,10 @@ resulting yaml files invalid.
 Outgoing email
 --------------
 
-If you want apps like Nextcloud, RocketChat and Prometheus to be able to send
-email notifications, you need to provide an email account.
+You need to provide email smtp settings so the single sign on system cat send
+emails with password recovery links.
+Apps like Nextcloud, Zulip and Alertmanager will also be able to send
+email notifications.
 
 .. Note::
     Stackspin does not set up an email server for you. In order to enable
@@ -120,7 +122,7 @@ upload it to the S3 storage you configure. This includes:
   installation-time settings;
 - persistent data of all applications: for example, single sign-on users that
   you created, Nextcloud files and metadata, WordPress site data and comments,
-  Rocket.Chat chat history, etc. A single exception to this is Prometheus data
+  Zulip chat history, etc. A single exception to this is Prometheus data
   (statistics of system properties), which takes up a lot of space and we
   consider not valuable enough to back up.
 
@@ -186,7 +188,7 @@ to install:
 
 - Monitoring stack (Prometheus, Grafana, Loki, Eventrouter) ``./install/install-app.sh monitoring``
 - Nextcloud and Onlyoffice with ``./install/install-app.sh nextcloud``
-- Rocket.Chat with ``./install/install-app.sh rocketchat``
+- Zulip chat with ``./install/install-app.sh zulip``
 - Wekan with ``./install/install-app.sh wekan``
 - WordPress with ``./install/install-app.sh wordpress``
 - Velero with ``./install/install-app.sh velero`` (only if you have configured it in
diff --git a/docs/maintenance.rst b/docs/maintenance.rst
index ef7bc7a32ef819ecbc6c54235d2e99c4af9515b9..81d002615a8ef4557e7ee267b716ae26ad2494f5 100644
--- a/docs/maintenance.rst
+++ b/docs/maintenance.rst
@@ -92,11 +92,11 @@ Filter out redundant ``helm-controller`` messages:
 
    { app = "helm-controller" } !~ "(unchanged | event=refreshed | method=Sync | component=checkpoint)"
 
-Debug oauth2 single sign-on with rocketchat:
+Debug oauth2 single sign-on with zulip:
 
 .. code:: bash
 
-   {container_name=~"(hydra|rocketchat)"}
+   {container_name=~"(hydra|zulip)"}
 
 Query kubernetes events processed by the ``eventrouter`` app containing
 ``warning``:
diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst
index 135a989d56e07f34cfbfc0626bae24ff31465a31..10fee5a0593bf7a68b212bd64bd21ed2e5a9a6ba 100644
--- a/docs/troubleshooting.rst
+++ b/docs/troubleshooting.rst
@@ -251,7 +251,7 @@ HTTPS Certificates
 Stackspin uses `cert-manager <https://docs.cert-manager.io/en/latest/>`__ to
 automatically fetch `Let's Encrypt <https://letsencrypt.org/>`__ certificates
 for all deployed services. If you experience invalid SSL certificates, i.e. your
-browser warns you when visiting Rocketchat (https://chat.stackspin.example.org),
+browser warns you when visiting Zulip (https://zulip.stackspin.example.org),
 a useful resource for troubleshooting is the official cert-manager
 `Troubleshooting Issuing ACME Certificates
 <https://cert-manager.io/docs/faq/acme/>`__ documentation. First, try this:
@@ -315,39 +315,39 @@ Query for failed certificates, -requests, challenges or orders:
 .. code:: bash
 
     $ kubectl get --all-namespaces certificate,certificaterequest,challenge,order | grep -iE '(false|pending)'
-    stackspin-apps    certificate.cert-manager.io/stackspin-rocketchat                 False   stackspin-rocketchat                 15h
-    stackspin-apps    certificaterequest.cert-manager.io/stackspin-rocketchat-2045852889                 False   15h
-    stackspin-apps    challenge.acme.cert-manager.io/stackspin-rocketchat-2045852889-1775447563-837515681   pending   chat.stackspin.example.org   15h
-    stackspin-apps    order.acme.cert-manager.io/stackspin-rocketchat-2045852889-1775447563                 pending   15h
+    stackspin-apps    certificate.cert-manager.io/stackspin-zulip                 False   stackspin-zulip                 15h
+    stackspin-apps    certificaterequest.cert-manager.io/stackspin-zulip-2045852889                 False   15h
+    stackspin-apps    challenge.acme.cert-manager.io/stackspin-zulip-2045852889-1775447563-837515681   pending   chat.stackspin.example.org   15h
+    stackspin-apps    order.acme.cert-manager.io/stackspin-zulip-2045852889-1775447563                 pending   15h
 
-We see that the Rocketchat certificate resources are in a bad state since 15h.
+We see that the zulip certificate resources are in a bad state since 15h.
 
 Show certificate resource status message:
 
 .. code:: bash
 
-    $ kubectl -n stackspin-apps get certificate stackspin-rocketchat -o jsonpath="{.status.conditions[*]['message']}"
-    Waiting for CertificateRequest "stackspin-rocketchat-2045852889" to complete
+    $ kubectl -n stackspin-apps get certificate stackspin-zulip -o jsonpath="{.status.conditions[*]['message']}"
+    Waiting for CertificateRequest "stackspin-zulip-2045852889" to complete
 
 We see that the `certificate` is waiting for the `certificaterequest`, lets
 query its status message:
 
 .. code:: bash
 
-    $ kubectl -n stackspin-apps get certificaterequest stackspin-rocketchat-2045852889 -o jsonpath="{.status.conditions[*]['message']}"
-    Waiting on certificate issuance from order stackspin-apps/stackspin-rocketchat-2045852889-1775447563: "pending"
+    $ kubectl -n stackspin-apps get certificaterequest stackspin-zulip-2045852889 -o jsonpath="{.status.conditions[*]['message']}"
+    Waiting on certificate issuance from order stackspin-apps/stackspin-zulip-2045852889-1775447563: "pending"
 
 Show the related order resource and look at the status and events:
 
 .. code:: bash
 
-    $ kubectl -n stackspin-apps describe order stackspin-rocketchat-2045852889-1775447563
+    $ kubectl -n stackspin-apps describe order stackspin-zulip-2045852889-1775447563
 
 Show the failed challenge resource reason:
 
 .. code:: bash
 
-    $ kubectl -n stackspin-apps get challenge stackspin-rocketchat-2045852889-1775447563-837515681 -o jsonpath='{.status.reason}'
+    $ kubectl -n stackspin-apps get challenge stackspin-zulip-2045852889-1775447563-837515681 -o jsonpath='{.status.reason}'
     Waiting for http-01 challenge propagation: wrong status code '503', expected '200'
 
 In this example, deleting the challenge fixed the issue and a proper certificate
@@ -355,7 +355,7 @@ could get fetched:
 
 .. code:: bash
 
-    $ kubectl -n stackspin-apps delete challenges.acme.cert-manager.io stackspin-rocketchat-2045852889-1775447563-837515681
+    $ kubectl -n stackspin-apps delete challenges.acme.cert-manager.io stackspin-zulip-2045852889-1775447563-837515681
 
 Application installation or upgrade failures
 --------------------------------------------
diff --git a/flux2/README.md b/flux2/README.md
index 8168e9b3c9c783dbdfdd5d2f08dfee6358a5581d..d22f081093eca8529f4ef382e0f607c07abd2ef1 100644
--- a/flux2/README.md
+++ b/flux2/README.md
@@ -11,7 +11,6 @@ flux2
 ├── apps     # Resources to install specific applications
 │   ├── monitoring  # Prometheus, Grafana and log aggregation
 │   ├── nextcloud   # Nextcloud
-│   ├── rocketchat  # RocketChat
 │   ├── velero      # Velero, backup system
 │   ├── wordpress   # WordPress CMS
 │   └── …           # Further apps
diff --git a/flux2/apps/rocketchat/kustomization.yaml b/flux2/apps/rocketchat/kustomization.yaml
deleted file mode 100644
index 35879d42a58e97cd9024538a8e6582066e9d963f..0000000000000000000000000000000000000000
--- a/flux2/apps/rocketchat/kustomization.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-namespace: stackspin-apps
-resources:
-  - release.yaml
-  - rocketchat-values-configmap.yaml
diff --git a/flux2/apps/rocketchat/release.yaml b/flux2/apps/rocketchat/release.yaml
deleted file mode 100644
index c48f58164547d5e6d9f69d129f82c7eb86e2c929..0000000000000000000000000000000000000000
--- a/flux2/apps/rocketchat/release.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-apiVersion: helm.toolkit.fluxcd.io/v2beta1
-kind: HelmRelease
-metadata:
-  name: rocketchat
-  namespace: stackspin-apps
-spec:
-  releaseName: rocketchat
-  chart:
-    spec:
-      chart: rocketchat
-      # NOTE: Change the GitRepository yaml file if you want a different version
-      sourceRef:
-        kind: GitRepository
-        name: rocketchat-helm-chart
-        namespace: flux-system
-  interval: 1h
-  install:
-    timeout: 15m
-  valuesFrom:
-    - kind: ConfigMap
-      name: stackspin-rocketchat-values
-      optional: false
-    # Allow overriding values by ConfigMap or Secret
-    - kind: ConfigMap
-      name: stackspin-rocketchat-override
-      optional: true
-    - kind: Secret
-      name: stackspin-rocketchat-override
-      optional: true
diff --git a/flux2/apps/rocketchat/rocketchat-values-configmap.yaml b/flux2/apps/rocketchat/rocketchat-values-configmap.yaml
deleted file mode 100644
index 1d5bb9c3af0c5a05b10bb2139590e28510d41510..0000000000000000000000000000000000000000
--- a/flux2/apps/rocketchat/rocketchat-values-configmap.yaml
+++ /dev/null
@@ -1,150 +0,0 @@
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: stackspin-rocketchat-values
-data:
-  values.yaml: |
-    # Hostname for Rocket.chat
-    host: "chat.${domain}"
-
-    # Extra environment variables for Rocket.Chat. Used with tpl function, so this
-    # needs to be a string
-    extraEnv: |
-      - name: ADMIN_USERNAME
-        value: admin
-      - name: ADMIN_PASS
-        value: "${rocketchat_admin_password}"
-      - name: ADMIN_EMAIL
-        value: "${admin_email}"
-        # Set setup wizard to completed. The setup wizard, that allows you to
-        # create a different admin user, gets skipped.
-      - name: OVERWRITE_SETTING_Show_Setup_Wizard
-        value: completed
-      - name: E2E_Enable
-        value: "true"
-      - name: Accounts_RegistrationForm
-        value: Disabled
-      - name: Accounts_RegistrationForm_LinkReplacementText
-        value: "Create a new account at admin.${domain} to add users"
-      # Custom OAuth rules:
-      - name: Accounts_OAuth_Custom_Stackspin
-        value: "true"
-      - name: Accounts_OAuth_Custom_Stackspin_url
-        value: https://sso.${domain}
-      - name: Accounts_OAuth_Custom_Stackspin_token_path
-        value: /oauth2/token
-      - name: Accounts_OAuth_Custom_Stackspin_token_sent_via
-        value: payload
-      - name: Accounts_OAuth_Custom_Stackspin_identity_token_sent_via
-        value: payload
-      - name: Accounts_OAuth_Custom_Stackspin_identity_path
-        value: /userinfo
-      - name: Accounts_OAuth_Custom_Stackspin_authorize_path
-        value: /oauth2/auth
-      - name: Accounts_OAuth_Custom_Stackspin_scope
-        value: openid profile stackspin_roles email
-      - name: Accounts_OAuth_Custom_Stackspin_id
-        value: rocketchat
-      - name: Accounts_OAuth_Custom_Stackspin_secret
-        value: ${rocketchat_oauth_client_secret}
-      - name: Accounts_OAuth_Custom_Stackspin_login_style
-        value: redirect
-      - name: Accounts_OAuth_Custom_Stackspin_button_label_text
-        value: Login via Stackspin
-      - name: Accounts_OAuth_Custom_Stackspin_button_label_color
-        value: "#FFFFFF"
-      - name: Accounts_OAuth_Custom_Stackspin_button_color
-        value: "#1d74f5"
-      - name: Accounts_OAuth_Custom_Stackspin_username_field
-        value: preferred_username
-      - name: Accounts_OAuth_Custom_Stackspin_name_field
-        value: preferred_username
-      - name: Accounts_OAuth_Custom_Stackspin_roles_claim
-        value: stackspin_roles
-      - name: Accounts_OAuth_Custom_Stackspin_merge_roles
-        value: "true"
-      - name: Accounts_OAuth_Custom_Stackspin_merge_users
-        value: "true"
-      - name: Accounts_OAuth_Custom_Stackspin_show_button
-        value: "true"
-      # Prevent problems with 2FA in combination with OIDC
-      # (https://github.com/RocketChat/Rocket.Chat/issues/21533)
-      - name: Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In
-        value: "false"
-      # Configure SMTP
-      - name: SMTP_Protocol
-        value: "smtp"
-      - name: SMTP_Host
-        value: "${outgoing_mail_smtp_host}"
-      - name: SMTP_Port
-        value: "${outgoing_mail_smtp_port}"
-      - name: SMTP_IgnoreTLS
-        value: "false"
-      - name: SMTP_Pool
-        value: "false"
-      - name: SMTP_Username
-        value: "${outgoing_mail_smtp_user}"
-      - name: SMTP_Password
-        value: "${outgoing_mail_smtp_password}"
-      - name: From_Email
-        value: "${outgoing_mail_from_address}"
-
-    livenessProbe:
-      initialDelaySeconds: 180
-      failureThreshold: 20
-    readinessProbe:
-      initialDelaySeconds: 60
-      timeoutSeconds: 10
-
-    ingress:
-      enabled: true
-      annotations:
-        # Tell cert-manager to automatically get a TLS certificate
-        kubernetes.io/tls-acme: "true"
-      tls:
-        - hosts:
-            - "chat.${domain}"
-          secretName: stackspin-rocketchat
-
-    persistence:
-      enabled: true
-      size: 1Gi
-      # FIXME: This valuee leads to an unused PVC, which helm-controller does
-      # not like.
-      # existingClaim: "rocketchat-data"
-
-    podAnnotations:
-      # Let the backup system include rocketchat data.
-      backup.velero.io/backup-volumes: "rocket-data"
-
-    resources:
-      limits:
-        cpu: 400m
-        memory: 1024Mi
-      requests:
-        cpu: 100m
-        memory: 768Mi
-
-    mongodb:
-      auth:
-        rootPassword: ${mongodb_root_password}
-        password: ${mongodb_password}
-      podAnnotations:
-        # Let the backup system include rocketchat data stored in mongodb.
-        backup.velero.io/backup-volumes: "datadir"
-      persistence:
-        enabled: true
-        # FIXME: This value is ignored by the chart currently in use
-        # existingClaim: "rocketchat-mongodb"
-      resources:
-        limits:
-          cpu: 600m
-          memory: 1024Mi
-        requests:
-          cpu: 300m
-          memory: 768Mi
-
-    image:
-      tag: 3.15.0
-      pullPolicy: IfNotPresent
diff --git a/flux2/apps/wekan/wekan-values-configmap.yaml b/flux2/apps/wekan/wekan-values-configmap.yaml
index 8a62a50bd188c313d50abc89bf2b9334f645eecc..4bbe8a913b7d8b367dd03213ceedcccf6edc84f6 100644
--- a/flux2/apps/wekan/wekan-values-configmap.yaml
+++ b/flux2/apps/wekan/wekan-values-configmap.yaml
@@ -95,7 +95,7 @@ data:
         rootPassword: ${mongodb_root_password}
         password: ${mongodb_password}
       podAnnotations:
-        # Let the backup system include rocketchat data stored in mongodb.
+        # Let the backup system include data stored in persistant volumes.
         backup.velero.io/backup-volumes: "datadir"
       persistence:
         enabled: true
diff --git a/flux2/cluster/optional/rocketchat/rocketchat.yaml b/flux2/cluster/optional/rocketchat/rocketchat.yaml
deleted file mode 100644
index 1cfe5d186c07f4c3ec7356b7a7de34581e484887..0000000000000000000000000000000000000000
--- a/flux2/cluster/optional/rocketchat/rocketchat.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
-kind: Kustomization
-metadata:
-  name: rocketchat
-  namespace: flux-system
-spec:
-  interval: 1h
-  timeout: 20m
-  dependsOn:
-    - name: nginx
-    - name: local-path-provisioner
-  sourceRef:
-    kind: GitRepository
-    name: stackspin
-  path: ./flux2/apps/rocketchat
-  prune: true
-  healthChecks:
-    - apiVersion: helm.toolkit.fluxcd.io/v2beta1
-      kind: HelmRelease
-      name: rocketchat
-      namespace: stackspin-apps
-    - apiVersion: apps/v1
-      kind: Deployment
-      name: rocketchat-rocketchat
-      namespace: stackspin-apps
-  postBuild:
-    substituteFrom:
-      - kind: Secret
-        name: stackspin-rocketchat-variables
-      - kind: Secret
-        name: stackspin-oauth-variables
-      - kind: Secret
-        name: stackspin-cluster-variables
diff --git a/flux2/core/base/single-sign-on/single-sign-on-values-configmap.yaml b/flux2/core/base/single-sign-on/single-sign-on-values-configmap.yaml
index 2a75dba82c0da1014bde3215a322a6eafa168fa7..682841595af6cbf9a333390805333816f290bacc 100644
--- a/flux2/core/base/single-sign-on/single-sign-on-values-configmap.yaml
+++ b/flux2/core/base/single-sign-on/single-sign-on-values-configmap.yaml
@@ -20,8 +20,6 @@ data:
           description: "Nextcloud Files offers an on-premise Universal File Access and sync platform with powerful collaboration capabilities and desktop, mobile and web interfaces."
         - name: &WORDPRESS wordpress
           description: "WordPress website hosting."
-        - name: &ROCKETCHAT rocketchat
-          description: "Communicate and collaborate using team chat and switch to video or audio calls with screen sharing for more efficient teamwork."
         - name: &GRAFANA grafana
           description: "Grafana allows you to query, visualize, alert on and understand metrics generated by Stackspin. It can be used to create explore and share dashboards."
         - name: &WEKAN wekan
@@ -131,20 +129,6 @@ data:
         - "refresh_token"
         - "client_credentials"
         - "implicit"
-    - clientName: *ROCKETCHAT
-      clientSecret: "${rocketchat_oauth_client_secret}"
-      redirectUri: "https://chat.${domain}/_oauth/stackspin"
-      scopes: "openid profile email stackspin_roles"
-      clientUri: "https://chat.${domain}"
-      clientLogoUri: "https://chat.${domain}/images/logo/logo.svg"
-      tokenEndpointAuthMethod: "client_secret_post"
-      responseTypes:
-        - "code"
-        - "id_token"
-      grantTypes:
-        - "authorization_code"
-        - "refresh_token"
-        - "client_credentials"
     - clientName: *GRAFANA
       clientSecret: "${grafana_oauth_client_secret}"
       redirectUri: "https://grafana.${domain}/login/generic_oauth"
diff --git a/flux2/core/base/sources/kustomization.yaml b/flux2/core/base/sources/kustomization.yaml
index a689331ffaf49e9cd6678b3c58d2b58f7fdc5388..6b8c31e63c4d27a1d8b3557b2f9f3cb4ee365ecb 100644
--- a/flux2/core/base/sources/kustomization.yaml
+++ b/flux2/core/base/sources/kustomization.yaml
@@ -11,7 +11,6 @@ resources:
   - local-path-provisioner.yaml
   - nextcloud.yaml
   - prometheus-community.yaml
-  - rocketchat-helm-chart.yaml
   - single-sign-on.yaml
   - vmware-tanzu.yaml
   - wekan.yaml
diff --git a/flux2/core/base/sources/rocketchat-helm-chart.yaml b/flux2/core/base/sources/rocketchat-helm-chart.yaml
deleted file mode 100644
index f717787f1372387cf55d0e5802aa66346099b632..0000000000000000000000000000000000000000
--- a/flux2/core/base/sources/rocketchat-helm-chart.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-apiVersion: source.toolkit.fluxcd.io/v1beta1
-kind: GitRepository
-metadata:
-  name: rocketchat-helm-chart
-  namespace: flux-system
-spec:
-  # The interval at which to check the upstream for updates
-  interval: 1h
-  # The repository URL, can be a HTTP/S or SSH address
-  url: https://github.com/greenhost/rocketchat-helm-chart
-  # The Git reference to checkout and monitor for changes
-  # (defaults to master)
-  # For all available options, see:
-  # https://toolkit.fluxcd.io/components/source/api/#source.toolkit.fluxcd.io/v1beta1.GitRepositoryRef
-  ref:
-    branch: stackspin
-    tag: 3.1.0-gh2
diff --git a/install/templates/stackspin-oauth-variables.yaml.jinja b/install/templates/stackspin-oauth-variables.yaml.jinja
index b609a0f90624dd6d28d0b8ea921d8ee3a25bffa1..66445dd80fe4c04d15d5f39be141a5b03c6306f0 100644
--- a/install/templates/stackspin-oauth-variables.yaml.jinja
+++ b/install/templates/stackspin-oauth-variables.yaml.jinja
@@ -6,7 +6,6 @@ metadata:
 data:
   grafana_oauth_client_secret: "{{ 32 | generate_password | b64encode }}"
   nextcloud_oauth_client_secret: "{{ 32 | generate_password | b64encode }}"
-  rocketchat_oauth_client_secret: "{{ 32 | generate_password | b64encode }}"
   userpanel_oauth_client_secret: "{{ 32 | generate_password | b64encode }}"
   wekan_oauth_client_secret: "{{ 32 | generate_password | b64encode }}"
   wordpress_oauth_client_secret: "{{ 32 | generate_password | b64encode }}"
diff --git a/install/templates/stackspin-rocketchat-variables.yaml.jinja b/install/templates/stackspin-rocketchat-variables.yaml.jinja
deleted file mode 100644
index 7170de0b3e0f883b687e00d7882afa49ff2a7217..0000000000000000000000000000000000000000
--- a/install/templates/stackspin-rocketchat-variables.yaml.jinja
+++ /dev/null
@@ -1,8 +0,0 @@
-apiVersion: v1
-kind: Secret
-metadata:
-  name: stackspin-rocketchat-variables
-data:
-  mongodb_password: "{{ 32 | generate_password | b64encode }}"
-  mongodb_root_password: "{{ 32 | generate_password | b64encode }}"
-  rocketchat_admin_password: "{{ 32 | generate_password | b64encode }}"
diff --git a/stackspin/__main__.py b/stackspin/__main__.py
index c8aa5e102dc35cd63221d01dec7e3b28f7967f83..c800c40f6c728d83459456471037dd319fbef0bf 100755
--- a/stackspin/__main__.py
+++ b/stackspin/__main__.py
@@ -401,14 +401,6 @@ def test(clus, args):
         )
         os.environ["NEXTCLOUD_PASSWORD"] = nextcloud_password
 
-    if "rocketchat" in args.apps or args.apps=='all':
-        rocketchat_password = clus.get_password_from_kubernetes(
-            'stackspin-rocketchat-variables',
-            'rocketchat_admin_password',
-            'flux-system'
-        )
-        os.environ["ROCKETCHAT_PASSWORD"] = rocketchat_password
-
     if "wordpress" in args.apps or args.apps=='all':
         wordpress_password = clus.get_password_from_kubernetes(
             'stackspin-wordpress-variables',
diff --git a/stackspin/cluster.py b/stackspin/cluster.py
index 0e28c602619ae7ed7a4bffe9a931f13895334cb4..6f13d362aa7d0fa58718a2d735d0daaef0aa0d4f 100644
--- a/stackspin/cluster.py
+++ b/stackspin/cluster.py
@@ -208,10 +208,6 @@ KUBECONFIG={cluster_dir}/kube_config_cluster.yml
                     'onlyoffice_jwt_secret',
                     'onlyoffice_postgresql_password',
                     'onlyoffice_rabbitmq_password'],
-                'stackspin-rocketchat-variables': [
-                    'rocketchat_admin_password',
-                    'mongodb_root_password',
-                    'mongodb_password'],
                 'stackspin-single-sign-on-variables': [
                     'userbackend_admin_username',
                     'userbackend_admin_password',
diff --git a/test/pytest/test_certs.py b/test/pytest/test_certs.py
index 95d31e861109ad00dc29fa0eddfb86c7e182ef36..5d1e2963d3919e0396fd91060652bf5d87508f80 100755
--- a/test/pytest/test_certs.py
+++ b/test/pytest/test_certs.py
@@ -100,7 +100,6 @@ def test_cert_validation(host, resource): # pylint: disable=too-many-statements
         'nextcloud': 'files',
         'onlyoffice': 'office',
         'prometheus': 'prometheus',
-        'rocketchat': 'chat',
         'single-sign-on': 'sso',
         'wekan': 'wekan',
         'wordpress': 'www',
diff --git a/test/taiko/apps.js b/test/taiko/apps.js
index 0126ce49c00746c2835a38b706e210d82a658b2b..28817b5f678b4bc01747bf528b1b40a7cf8e2448 100644
--- a/test/taiko/apps.js
+++ b/test/taiko/apps.js
@@ -108,20 +108,6 @@ const assert = require('assert');
       await closeTab()
     }
 
-    // Rocketchat
-    if (taikoTests.includes('rocketchat') || taikoTests === 'all') {
-      const rocketchatUrl = 'https://chat.' + domain
-      const rocketchatUsername = process.env.ROCKETCHAT_USERNAME || 'admin'
-      const rocketchatPassword = process.env.ROCKETCHAT_PASSWORD
-
-      console.log('• Rocketchat')
-      await goto(rocketchatUrl)
-      await write(rocketchatUsername, into(textBox('Username')))
-      await write(rocketchatPassword, into(textBox('Password')))
-      await click('Login')
-      await waitFor('Welcome to Rocket.Chat!')
-    }
-
     // Wordpress
     if (taikoTests.includes('wordpress') || taikoTests === 'all') {
       const wordpressUrl = 'https://www.' + domain
diff --git a/test/taiko/single-sign-on.js b/test/taiko/single-sign-on.js
index ca7fc5ea685436a04869ea03d64be82cf56550ca..cf38c377c8d1bd725d7b01a224e3f960cbe928e5 100644
--- a/test/taiko/single-sign-on.js
+++ b/test/taiko/single-sign-on.js
@@ -50,17 +50,6 @@ const assert = require('assert');
       await assert.ok(await text('Add notes, lists or links …').exists());
     }
 
-    // Rocketchat
-    if (taikoTests.includes('rocketchat') || taikoTests === 'all') {
-      // Navigate to rocketchat
-      // Breaks because of 2fa challenge which is not recieved
-      // by email
-      // https://open.greenhost.net/stackspin/stackspin/-/issues/819
-      // await click(link(below('rocketchat')));
-      // await click('Login via Stackspin');
-      // await click('Continue with ' + username)
-    }
-
     // Wordpress
     if (taikoTests.includes('wordpress') || taikoTests === 'all') {
       console.log('• Wordpress')