diff --git a/assets/config/inventory.toml b/assets/config/inventory.toml
index 833343190750e323b5f6953005fdbc699efda82e..eee4e4ba0612692cdf13df6f8d03107d1aa19fac 100644
--- a/assets/config/inventory.toml
+++ b/assets/config/inventory.toml
@@ -118,6 +118,13 @@ base_dir_location = ""
 ## output will be copied to this directory. The default location of this
 ## directory (if left value left blank) is ${base_dir_location}/share/preview
 preview_path = ""
+## Set the workload manager system, currently available are:
+## "local", "slurm", "pbs", "lfs", "moab", "oar", "sge"
+scheduler_system = "local"
+## Set the path to the directory that containes the stdout of the plugings,
+## this directory must be accessible to the web ui. The workload manager
+## will write the stdout into this directory. Defaults to ${base_dir_location}/share
+scheduler_output_dir = ""
 # Set the target architecutre of the system where the backend will be installed
 # to. You can choose from the following options:
 # Linux-x86_64 (default), Linux-aarch64, Linux-ppc64le, Linux-s390x, MacOSX-x86_64
diff --git a/assets/playbooks/core-server-playbook.yml b/assets/playbooks/core-server-playbook.yml
index b3e0420cca1a1e080df1ce3dbffef7fe69a82f83..ada54e91f2e1d1c085e5804d2af8ffbd03d7e750 100644
--- a/assets/playbooks/core-server-playbook.yml
+++ b/assets/playbooks/core-server-playbook.yml
@@ -55,6 +55,13 @@
       become: "{{'yes' if core_ansible_become_user is defined else 'no' }}"
       when: core_base_dir_location | length != 0
       ignore_errors: true
+    - name: Creating workload manager output
+      file:
+        path: "{{core_scheduler_output_dir}}"
+        state: directory
+        mode: "3775"
+      become: "{{'yes' if core_ansible_become_user is defined else 'no' }}"
+      when: core_scheduler_output_dir | length != 0
     - name: Creating preview path
       file:
         path: "{{core_preview_path}}"
@@ -68,16 +75,12 @@
         src: "{{ core_dump }}"
         dest: "{{ core_root_dir }}/freva/evaluation_system.conf"
         mode: "1644"
-      become: "{{'true' if core_ansible_become_user is defined else 'no' }}"
-      when: core_admin_group is not defined
-    - name: Inserting evaluation_sytem.conf file with admin group
+    - name: Inserting evaluation_system.config file to temp location
       copy:
         src: "{{ core_dump }}"
-        dest: "{{ core_root_dir }}/freva/evaluation_system.conf"
-        mode: "1664"
-        group: "{{core_admin_group}}"
+        dest: /tmp/evaluation_system/evaluation_system.conf
       become: "{{'true' if core_ansible_become_user is defined else 'no' }}"
-      when: core_admin_group is defined
+      when: core_admin_group is not defined
     - name: Deploying evaluation_system
       shell:
         cmd: $PYTHON3 deploy.py {{ core_install_dir }} -s --arch {{core_arch}}
@@ -85,9 +88,17 @@
       environment:
         CONDA_EXEC_PATH: "{{ conda_exec_path }}"
         PYTHON3: "{{ ansible_python_interpreter }}"
-        EVALUATION_SYSTEM_CONFIG_FILE: "{{ core_root_dir }}/{{eval_path}}"
+        EVALUATION_SYSTEM_CONFIG_FILE: "/tmp/evaluation_system/evaluation_system.conf"
       when: (core_install is true)
       become: "{{'yes' if core_ansible_become_user is defined else 'no' }}"
+    - name: Inserting evaluation_sytem.conf file with admin group
+      copy:
+        src: "{{ core_dump }}"
+        dest: "{{ core_root_dir }}/freva/evaluation_system.conf"
+        mode: "1664"
+        group: "{{core_admin_group}}"
+      become: "{{'true' if core_ansible_become_user is defined else 'no' }}"
+      when: core_admin_group is defined
     - name: Installing additional python packages
       shell:
         cmd: python -m pip install "{{item}}"
diff --git a/assets/playbooks/db-server-playbook.yml b/assets/playbooks/db-server-playbook.yml
index 0df8f8cef955bb7453fb1115b44a33535b94c6d5..89b45370e6c99d17dc44035956b5ac87b50a1fd6 100644
--- a/assets/playbooks/db-server-playbook.yml
+++ b/assets/playbooks/db-server-playbook.yml
@@ -14,7 +14,7 @@
         -e MYSQL_DATABASE={{db_db}}
         -e BACKUP_DIR=/var/lib/mysql/backup
         -p {{ db_port }}:3306
-        -e MYSQL_ROOT_PASSWORD={{ root_passwd }}
+        -e MYSQL_ROOT_PASSWORD='{{ root_passwd }}'
         -v /root/freva-service-config/mysql/create_tables.sql:/docker-entrypoint-initdb.d/002_create_tables.sql:z
         -v /root/reset_root_pw.sh:/docker-entrypoint-initdb.d/001_reset_passwords.sh:z
         -v /root/freva-service-config/mysql/daily_backup.sh:/usr/local/bin/daily_backup:z
diff --git a/assets/playbooks/vault-server-playbook.yml b/assets/playbooks/vault-server-playbook.yml
index df0d0bbcbb09ddc973fa3044e759f1f762298621..0369ccfbc31dc429f96090901eb9ade5a0c3867d 100644
--- a/assets/playbooks/vault-server-playbook.yml
+++ b/assets/playbooks/vault-server-playbook.yml
@@ -64,7 +64,7 @@
         cmd: >
           /usr/local/bin/docker-or-podman build
           --build-arg=project={{ project_name }}
-          --build-arg=rootpw={{ root_passwd }} -t {{ vault_name }}:latest .
+          --build-arg=rootpw='{{ root_passwd }}' -t {{ vault_name }}:latest .
       become: true
     - name: Starting vault container
       shell: /usr/local/bin/docker-or-podman run -d {{docker_cmd}}
diff --git a/assets/playbooks/web-server-playbook.yml b/assets/playbooks/web-server-playbook.yml
index ceb356344bc6aa265c580891088c309f7d36a036..85dba531034423fe3fbdca58ac8e1b1ec215e4db 100644
--- a/assets/playbooks/web-server-playbook.yml
+++ b/assets/playbooks/web-server-playbook.yml
@@ -36,7 +36,9 @@
     - docker_web_cmd: >
         -p 8000:8000
         -v {{ core_root_dir }}:{{ core_root_dir }}:ro
-        -v {{ core_base_dir_location }}:{{ core_base_dir_location }}:ro
+        -v {{ core_preview_path }}:/opt/freva_web/static/preview:ro
+        -v {{ core_scheduler_output_dir}}:{{ core_scheduler_output_dir }}:ro
+        -v /opt/freva/{{project_name}}/web_service/static:/opt/freva_web/static:z
         -e EVALUATION_SYSTEM_CONFIG_FILE={{core_root_dir}}/freva/evaluation_system.conf
         --name {{web_name}}
         -t registry.gitlab.dkrz.de/freva/freva_web/freva_web:main
@@ -45,6 +47,10 @@
         -v /opt/freva/{{project_name}}/web_service/server-cert.crt:/etc/ssl/certs/server-cert.crt:z
         -v /opt/freva/{{project_name}}/web_service/server-key.key:/etc/ssl/private/server-key.key:z
         -v /opt/freva/{{project_name}}/web_service/cacert.pem:/etc/ssl/certs/cacert.pem:z
+        -v {{ core_scheduler_output_dir }}:{{ core_scheduler_output_dir }}:ro
+        -v /opt/freva/{{project_name}}/web_service/static:/srv/static:z
+        -v {{ core_preview_path }}:/srv/preview:ro
+        -e SCHEDULER_DIR={{core_scheduler_output_dir}}
         -e FREVA_HOST={{web_server_name}} -p 80:80 -p 443:443 httpd:latest
     - redis_name: "{{ project_name }}-redis"
     - apache_name: "{{project_name}}-httpd"
@@ -92,7 +98,7 @@
     - name: Creating volume dir for web
       become: true
       file:
-        path: "{{service_dir}}"
+        path: "{{service_dir}}/static"
         state: directory
     - name: Copying key files files
       become: true
@@ -100,7 +106,7 @@
         src: "{{item.src}}"
         dest: "{{item.dest}}"
       with_items:
-        - {src: "{{asset_dir}}/web/freva_web.conf",
+        - {src: "{{web_apache_config_file}}",
            dest: "{{service_dir}}/freva_web.conf"}
         - {src: "{{web_public_keyfile}}",
            dest: "{{service_dir}}/server-cert.crt"}
@@ -151,7 +157,7 @@
       become: true
       shell: >
         /usr/local/bin/docker-or-podman exec -it {{web_name}}
-        /bin/bash /tmp/setup_web.sh {{root_passwd}}
+        /bin/bash /tmp/setup_web.sh '{{root_passwd}}'
     - name: Restarting web service
       become: true
       shell: systemctl restart {{web_name}}
diff --git a/assets/web/freva_web.conf b/assets/web/freva_web.conf
index e11d4b94cd5b43f3d1ab67a1c0c945574448784f..170ad515b632e8c0ed7414d8573f42c3e349f665 100644
--- a/assets/web/freva_web.conf
+++ b/assets/web/freva_web.conf
@@ -186,9 +186,14 @@ SSLRandomSeed connect builtin
 SSLCryptoDevice builtin
 
 <VirtualHost *:443>
+    ProxyPass /static/ !
     ProxyPass / http://${FREVA_HOST}:8000/
     ProxyPassReverse / http://${FREVA_HOST}:8000/
     SSLEngine on
+    Alias /static /srv/static/
+    Alias /robots.txt /srv/static/robots.txt
+    Alias /favicon.ico /srv/static/favicon.ico
+    AliasMatch ^/([^/]*\.css) /srv/static/styles/$1
     SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
     Header set X-Frame-Options "SAMEORIGIN"
 
@@ -201,6 +206,16 @@ SSLCryptoDevice builtin
     SetOutputFilter DEFLATE
     SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip
     Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains;"
+    <Directory /srv/*>
+        Options Indexes MultiViews
+        AllowOverride None
+        Require all granted
+    </Directory>
+    <Directory ${SCHEDULDER_DIR}/*>
+        Options Indexes MultiViews
+        AllowOverride None
+        Require all granted
+    </Directory>
 </VirtualHost>
 
 <Files ".ht*">
diff --git a/docs/TuiHowto.md b/docs/TuiHowto.md
index 0949ae81dfa1389d8d0b200dfc2c4c0199f07dad..b9cf550f155e4a7bb96f06a2ffe4c6da8e825a44 100644
--- a/docs/TuiHowto.md
+++ b/docs/TuiHowto.md
@@ -60,31 +60,33 @@ essential setup steps:
    [basic configuration section](Folders.html#configuring-the-evaluation-system-section).
 6. Set the preview path mentioned in the
    [basic configuration section](Folders.html#configuring-the-evaluation-system-section).
-7. Set the user names (comma separated) of the Freva admins of this project.
-8. If you have a special user group for Freva admins you can set this this key
+7. Set the workload manager system from the dropdown menu.
+8. Set the output directory of the stdout of the workload manger.
+9. Set the user names (comma separated) of the Freva admins of this project.
+10. If you have a special user group for Freva admins you can set this this key
    here. This will cause the creation of folders with permissions suitable
    for multi-user write access (2775) on the target machine. This assures that
    multiple admins can adjust the Freva configuration. You can leave this
    variable blank.
-9. If you need to change to a common user (via sudo -i) that is able to install
+11. If you need to change to a common user (via sudo -i) that is able to install
    Freva on the HPC system you can set this common user name here. Note that this
    method should only be used if freva needs to be set up with a shared user
    account *and* you cannot log on to the HPC system with this shared user name.
    Most of the time it should not be necessary to use this option, either because
    you don't need a shared user account, or you can instruct ansible to directly
    log on as the shared user.
-10. If you have an anaconda binary already installed on the target system you
+12. If you have an anaconda binary already installed on the target system you
    can set the path to the `conda` or `mamba` executable here. Leaving this variable
    blank (default) will cause the deployment to temporary download and create
    an anaconda install script - which will get deleted afterwards.
-11. Select a pre-defined target architecture for the anaconda environment.\
+13. Select a pre-defined target architecture for the anaconda environment.\
    _Note_: The Freva installation has only been tested for MacOSX-x86_64,
    Linux-x86_64 (including Windows wsl2) and Linux-aarch64 (arm).
-12. Ansible needs python to be present on the remote machine, if not present
+14. Ansible needs python to be present on the remote machine, if not present
    in the default path (such as `/usr/bin/python3`) set the path to the `python3.4+`
    binary.
-13. Set the login user name for the remote machine.
-14. Set the path to the `git` executable if not in default path
+15. Set the login user name for the remote machine.
+16. Set the path to the `git` executable if not in default path
    such as `/usr/bin/git`.
 
 ### Notes on the core setup
diff --git a/src/freva_deployment/__init__.py b/src/freva_deployment/__init__.py
index b9fb384bea90aad9cdb925cc2329224abadf9787..d5d3f9446d2fe96498703a44d684c6b4c4792405 100644
--- a/src/freva_deployment/__init__.py
+++ b/src/freva_deployment/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "2205.1.5"
+__version__ = "2205.1.6"
 AVAILABLE_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]
 AVAILABLE_CONDA_ARCHS = [
     "Linux-x86_64",
diff --git a/src/freva_deployment/deploy.py b/src/freva_deployment/deploy.py
index b31731c7496c6f086287e9bde498319276b077da..ccebdc53968f25ee69c7fdbc77a611c0f5f30917 100644
--- a/src/freva_deployment/deploy.py
+++ b/src/freva_deployment/deploy.py
@@ -61,6 +61,7 @@ class DeployFactory:
         self.inventory_file: Path = Path(self._td.name) / "inventory.yaml"
         self.eval_conf_file: Path = Path(self._td.name) / "evaluation_system.conf"
         self.web_conf_file: Path = Path(self._td.name) / "freva_web.toml"
+        self.apache_config: Path = Path(self._td.name) / "freva_web.conf"
         self._db_pass: str = ""
         self._steps = steps or ["services", "core", "web"]
         self._inv_tmpl = Path(config_file or config_dir / "inventory.toml")
@@ -74,8 +75,11 @@ class DeployFactory:
     def public_key_file(self) -> str:
         """Path to the public certificate file."""
         public_keyfile = self.cfg["certificates"].get("public_keyfile")
+        chain_keyfile = self.cfg["certificates"].get("chain_keyfile")
         if public_keyfile:
             return str(Path(public_keyfile).expanduser().absolute())
+        if chain_keyfile:
+            return str(Path(chain_keyfile).expanduser().absolute())
         raise ValueError("You must give a valid path to a public key file.")
 
     @property
@@ -92,7 +96,7 @@ class DeployFactory:
         keyfile = self.cfg["certificates"].get("chain_keyfile")
         if keyfile:
             return str(Path(keyfile).expanduser().absolute())
-        raise ValueError("You must give a valid path to a chain key file.")
+        return ""
 
     def _prep_vault(self) -> None:
         """Prepare the vault."""
@@ -153,6 +157,10 @@ class DeployFactory:
             self.cfg["core"]["config"]["root_dir"] = install_dir
         preview_path = self.cfg["core"]["config"].get("preview_path", "")
         base_dir_location = self.cfg["core"]["config"].get("base_dir_location", "")
+        scheduler_output_dir = self.cfg["core"]["config"].get(
+            "scheduler_output_dir", ""
+        )
+        scheduler_system = self.cfg["core"]["config"].get("scheduler_system", "local")
         if not preview_path:
             if base_dir_location:
                 self.cfg["core"]["config"]["preview_path"] = str(
@@ -160,6 +168,10 @@ class DeployFactory:
                 )
             else:
                 self.cfg["core"]["config"]["preview_path"] = ""
+        if not scheduler_output_dir:
+            scheduler_output_dir = str(Path(base_dir_location) / "share")
+        scheduler_output_dir = Path(scheduler_output_dir) / scheduler_system
+        self.cfg["core"]["config"]["scheduler_output_dir"] = str(scheduler_output_dir)
         self.cfg["core"]["config"]["keyfile"] = self.public_key_file
         git_exe = self.cfg["core"]["config"].get("git_path")
         self.cfg["core"]["config"]["git_path"] = git_exe or "git"
@@ -235,7 +247,21 @@ class DeployFactory:
         self.cfg["web"]["config"]["root_passwd"] = self.master_pass
         self.cfg["web"]["config"]["private_keyfile"] = self.private_key_file
         self.cfg["web"]["config"]["public_keyfile"] = self.public_key_file
-        self.cfg["web"]["config"]["chain_keyfile"] = self.chain_key_file
+        self.cfg["web"]["config"]["chain_keyfile"] = (
+            self.chain_key_file or self.public_key_file
+        )
+        self.cfg["web"]["config"]["apache_config_file"] = str(self.apache_config)
+        self._prep_apache_config()
+
+    def _prep_apache_config(self):
+        config = []
+        with (Path(asset_dir) / "web" / "freva_web.conf").open() as f_obj:
+            for line in f_obj.readlines():
+                if not self.chain_key_file and "SSLCertificateChainFile" in line:
+                    continue
+                config.append(line)
+        with open(self.apache_config, "w") as f_obj:
+            f_obj.write("".join(config))
 
     def __enter__(self):
         return self
@@ -306,7 +332,12 @@ class DeployFactory:
     ) -> None:
         """Set additional values to the configuration."""
         if step in self._needs_core:
-            for key in ("root_dir", "base_dir_location"):
+            for key in (
+                "root_dir",
+                "base_dir_location",
+                "preview_path",
+                "scheduler_output_dir",
+            ):
                 value = self.cfg["core"]["config"].get(key, "")
                 config[step]["vars"][f"core_{key}"] = value
         config[step]["vars"][f"{step}_hostname"] = self.cfg[step]["hosts"]
@@ -394,6 +425,8 @@ class DeployFactory:
             ("core", "root_dir"),
             ("core", "base_dir_location"),
             ("core", "preview_path"),
+            ("core", "scheduler_output_dir"),
+            ("core", "scheduler_system"),
         )
         cfg_file = asset_dir / "config" / "evaluation_system.conf.tmpl"
         with cfg_file.open() as f_obj:
@@ -404,7 +437,8 @@ class DeployFactory:
                 for key, value in keys:
                     if line.startswith(value):
                         cfg = self.cfg[key]["config"].get(value, "")
-                        lines[num] = f"{value}={cfg}\n"
+                        if cfg:
+                            lines[num] = f"{value}={cfg}\n"
                 for step in ("solr", "db"):
                     cfg = self.cfg[step]["config"].get("port", "")
                     if line.startswith(f"{step}.port"):
diff --git a/src/freva_deployment/ui/deployment_tui/deploy_forms.py b/src/freva_deployment/ui/deployment_tui/deploy_forms.py
index 35ed1b572d03f1eb51831ce3b1ae83c55d27645b..7444631856d3a45ffa39d6c09f1c79a8f2c17ecd 100644
--- a/src/freva_deployment/ui/deployment_tui/deploy_forms.py
+++ b/src/freva_deployment/ui/deployment_tui/deploy_forms.py
@@ -39,6 +39,19 @@ class CoreScreen(BaseForm):
     certificates: list[str] = ["public"]
     """The type of certificate files this step needs."""
 
+    @property
+    def scheduler_systems(self):
+        """Define available scheduler systems."""
+        return ["local", "slurm", "pbs", "lfs", "moab", "oar", "sge"]
+
+    def scheduler_index(self, scheduler_system: str = ""):
+        """Get the index of the saved scheduler_system"""
+        scheduler_system = scheduler_system or "local"
+        for nn, choice in enumerate(self.scheduler_systems):
+            if choice == scheduler_system:
+                return nn
+        return 0
+
     def _add_widgets(self) -> None:
         """Add widgets to the screen."""
         self.list_keys: list[str] = []
@@ -100,6 +113,24 @@ class CoreScreen(BaseForm):
                 ),
                 False,
             ),
+            scheduler_system=(
+                self.add_widget_intelligent(
+                    npyscreen.TitleCombo,
+                    name=f"{self.num}Workload manger",
+                    value=self.scheduler_index(cast(str, cfg.get("scheduler_system"))),
+                    values=self.scheduler_systems,
+                ),
+                True,
+            ),
+            scheduler_output_dir=(
+                self.add_widget_intelligent(
+                    npyscreen.TitleText,
+                    name=f"{self.num}Ouput dir. of the scheduler system, "
+                    "${base_dir_location}/share",
+                    value=cfg.get("scheduler_output_dir", ""),
+                ),
+                False,
+            ),
             admins=(
                 self.add_widget_intelligent(
                     npyscreen.TitleText,
@@ -588,10 +619,10 @@ class RunForm(npyscreen.FormMultiPageAction):
         if missing_form:
             self.parentApp.change_form(missing_form)
             return
+        public_keyfile = self.public_keyfile.value or self.chain_keyfile.value
         cert_files = dict(
-            public=self.public_keyfile.value or "",
+            public=public_keyfile or "",
             private=self.private_keyfile.value or "",
-            chain=self.chain_keyfile.value or "",
         )
         for key_type, keyfile in cert_files.items():
             for step, deploy_form in self.parentApp._forms.items():
@@ -606,6 +637,16 @@ class RunForm(npyscreen.FormMultiPageAction):
                             msg = f"You must give a {key_type} certificate file."
                         npyscreen.notify_confirm(msg, title="ERROR")
                         return
+
+        cert_files["chain"] = self.chain_keyfile.value or ""
+        if not cert_files["chain"]:
+            value = npyscreen.notify_yes_no(
+                "It is advised to create a chained certificate file. "
+                "This enhances the web ui security. Continue anyway?",
+                title="WARNING",
+            )
+            if not value:
+                return
         save_file = self.parentApp.save_config_to_file(write_toml_file=True)
         if isinstance(save_file, Path):
             save_file = str(save_file)