diff --git a/ansible/roles/pds_mount/defaults/main.yml b/ansible/roles/pds_mount/defaults/main.yml
index ca9159b69be4d20604c8863204b8d44f571177c0..e92f0c0f5e0888e8fa4e5441f9bd9490713b08b4 100644
--- a/ansible/roles/pds_mount/defaults/main.yml
+++ b/ansible/roles/pds_mount/defaults/main.yml
@@ -3,11 +3,14 @@ mount:
   export_to:
     - antea.fi.muni.cz
     - arke.fi.muni.cz
-    - anna.fi.muni.cz
     - pontos*.fi.muni.cz
     - pythia*.fi.muni.cz
     - pheme*.fi.muni.cz
     - pandora*.fi.muni.cz
+  export_ro_to:
+    - anna.fi.muni.cz
+  export_web_to:  # must be full hostnames
+    - anna.fi.muni.cz
   home:
     pontos:
       "01":
diff --git a/ansible/roles/pds_mount/handlers/main.yml b/ansible/roles/pds_mount/handlers/main.yml
index 0285e84ef7ea2d0d57045a5b1f4223110b3bbd19..cbbee998dde7a52d5345da686c23fd93d1590afc 100644
--- a/ansible/roles/pds_mount/handlers/main.yml
+++ b/ansible/roles/pds_mount/handlers/main.yml
@@ -1,7 +1,9 @@
+- name: export nfs
+  command: exportfs -rav
+  notify:
+    - restart autofs
+
 - name: restart autofs
   systemd:
     name: autofs
     state: restarted
-
-- name: export nfs
-  command: exportfs -rav
diff --git a/ansible/roles/pds_mount/tasks/main.yml b/ansible/roles/pds_mount/tasks/main.yml
index 811a667ee352f41eef275a7b15b8b3b704cc39f3..3c0a7fe654fadc6af9e4c08aaee511ab7ad7a3c5 100644
--- a/ansible/roles/pds_mount/tasks/main.yml
+++ b/ansible/roles/pds_mount/tasks/main.yml
@@ -15,6 +15,14 @@
       loop: "{{home.results | map(attribute='item')}}"
       register: home_created
 
+    - name: "Create public_html dir"
+      file:
+        state: directory
+        path: "/export/home/{{item}}/public_html"
+        owner: "{{item}}"
+        group: "paradise"
+      loop: "{{home.results | map(attribute='item')}}"
+
     - name: "Copy skeleton"
       copy:
         src: "/etc/skel/{{item.1}}"
@@ -78,3 +86,28 @@
   loop: ['home', 'pontos', 'antea']
   notify:
     - restart autofs
+
+- name: Web autofs mounts
+  block:
+    - name: Userweb directory
+      file:
+        state: directory
+        path: /srv/userweb
+
+    - name: Master autofs for web
+      copy:
+        content: |
+          # managed by ansible
+          /srv/userweb/ {{autofs_prefix}}/auto.userweb -t 300,strictexpire
+        dest: '{{autofs_prefix}}/auto.master.d/userweb.autofs'
+      notify:
+        - restart autofs
+
+    - name:
+      template:
+        src: 'auto.userweb.j2'
+        dest: '{{autofs_prefix}}/auto.userweb'
+        lstrip_blocks: true
+      notify:
+        - restart autofs
+  when: inventory_hostname in mount.export_web_to
diff --git a/ansible/roles/pds_mount/templates/home.exports.j2 b/ansible/roles/pds_mount/templates/home.exports.j2
index 911a3bc77665e280b64a0209188d93e166d860a3..bd19d0bf7db8038ea2bf9bc12f3ec10825eb6fff 100644
--- a/ansible/roles/pds_mount/templates/home.exports.j2
+++ b/ansible/roles/pds_mount/templates/home.exports.j2
@@ -3,7 +3,13 @@
 {% if "pontos" + num + ".fi.muni.cz" == inventory_hostname %}
 {% for usr in homes %}
 {% for to in mount.export_to %}
-/export/home/{{usr}} -rw,no_subtree_check,root_squash,async,mp=/home {{to}}
+/export/home/{{usr}} -rw,no_subtree_check,root_squash,async,mp=/export/home {{to}}
+{% endfor %}
+{% for to in mount.export_ro_to %}
+/export/home/{{usr}} -ro,no_subtree_check,root_squash,async,mp=/export/home {{to}}
+{% endfor %}
+{% for to in mount.export_web_to %}
+/export/home/{{usr}}/public_html -rw,no_subtree_check,root_squash,async,mp=/export/home {{to}}
 {% endfor %}
 {% endfor %}
 {% endif %}