diff --git a/.zuul.yaml b/.zuul.yaml
index 4ef77df7d2..7d467548bf 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -737,6 +737,26 @@
         host_copy_output:
           '{{ zuul.project.src_dir }}/junit.xml': logs
 
+# Note: the following two jobs implement the variant-based multiple
+# inheritance trick.  Both of these variants will always apply,
+# therefore both parents will appear in the inheritance hierarchy).
+- job:
+    name: system-config-run-containers
+    parent: system-config-run
+
+# Note: see above re multiple-inheritance.
+- job:
+    name: system-config-run-containers
+    parent: opendev-buildset-registry-consumer
+    description: |
+      Run the "base" playbook for system-config hosts which use
+      containers.
+
+      This is a parent job designed to be inherited.  Use this job if
+      the service in question is container-based.  It expects a
+      buildset registry and pulls images from the intermediate
+      registry.
+
 - job:
     name: system-config-run-base
     parent: system-config-run
@@ -1096,10 +1116,10 @@
 
 - job:
     name: system-config-run-meetpad
-    parent: system-config-run
+    parent: system-config-run-containers
+    requires: jitsi-meet-container-image
     description: |
       Run the playbook for jitsi-meet.
-    dependencies: opendev-buildset-registry
     nodeset:
       nodes:
         - name: bridge.openstack.org
@@ -1453,7 +1473,11 @@
         - system-config-run-eavesdrop
         - system-config-run-lists
         - system-config-run-nodepool
-        - system-config-run-meetpad
+        - system-config-run-meetpad:
+            dependencies:
+              - name: opendev-buildset-registry
+              - name: system-config-build-image-jitsi-meet
+                soft: true
         - system-config-run-mirror-x86
         - system-config-run-mirror-update
         - system-config-run-static
@@ -1504,7 +1528,11 @@
         - system-config-run-eavesdrop
         - system-config-run-lists
         - system-config-run-nodepool
-        - system-config-run-meetpad
+        - system-config-run-meetpad:
+            dependencies:
+              - name: opendev-buildset-registry
+              - name: system-config-upload-image-jitsi-meet
+                soft: true
         - system-config-run-mirror-x86
         - system-config-run-mirror-update
         - system-config-run-static
diff --git a/playbooks/roles/jitsi-meet/files/config.js b/playbooks/roles/jitsi-meet/files/config.js
index b64c5a10e4..a97535ee6f 100644
--- a/playbooks/roles/jitsi-meet/files/config.js
+++ b/playbooks/roles/jitsi-meet/files/config.js
@@ -253,6 +253,7 @@ var config = {
     enableWelcomePage: true,
     etherpad_base: 'https://etherpad.openstack.org/p/',
     useRoomAsSharedDocumentName: true,
+    openSharedDocumentOnJoin: true,
 
     // Enabling the close page will ignore the welcome page redirection when
     // a call is hangup.
diff --git a/playbooks/roles/jitsi-meet/files/jitsi-meet-docker/docker-compose.yaml b/playbooks/roles/jitsi-meet/files/jitsi-meet-docker/docker-compose.yaml
index f2cdc32358..8b9e53e8e3 100644
--- a/playbooks/roles/jitsi-meet/files/jitsi-meet-docker/docker-compose.yaml
+++ b/playbooks/roles/jitsi-meet/files/jitsi-meet-docker/docker-compose.yaml
@@ -6,7 +6,7 @@ version: '2'
 services:
     # Frontend
     web:
-        image: docker.io/jitsi/web
+        image: docker.io/opendevorg/jitsi-meet-web
         network_mode: host
         volumes:
             - ${CONFIG}/web:/config
diff --git a/testinfra/test_meetpad.py b/testinfra/test_meetpad.py
index d95636ca9c..186816d7a4 100644
--- a/testinfra/test_meetpad.py
+++ b/testinfra/test_meetpad.py
@@ -12,10 +12,16 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import time
 
 testinfra_hosts = ['meetpad01.opendev.org']
 
 
 def test_jitsi_meet_listening(host):
-    registry = host.socket("tcp://0.0.0.0:443")
+    # Give it some time to come up
+    for i in range (300):
+        registry = host.socket("tcp://0.0.0.0:443")
+        if registry.is_listening:
+            break
+        time.sleep(1)
     assert registry.is_listening