diff --git a/Dockerfile b/Dockerfile
index 5755c2b769928cd4047cc16c9a40a1769f0a04e2..4b11d882809ca6eb1d574e20306bb2cd279f5a42 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -6,7 +6,7 @@ SHELL ["/bin/bash", "-c"]
 # Base #
 ########
 
-RUN pip install mkdocs>=1.1.2 mkdocs-material==8.5.11 mkdocs-htmlproofer-plugin==0.8.0 mkdocs-video==1.3.0
+RUN pip install mkdocs>=1.1.2 mkdocs-material==8.5.11 mkdocs-htmlproofer-plugin==1.2.1 mkdocs-video==1.3.0
 
 ##########
 # Linter #
diff --git a/doc.zih.tu-dresden.de/docs/access/misc/MobaXterm_password.png b/doc.zih.tu-dresden.de/docs/access/misc/MobaXterm_password.png
new file mode 100644
index 0000000000000000000000000000000000000000..e261b9edde64be0014d7e1164614a90f48585968
Binary files /dev/null and b/doc.zih.tu-dresden.de/docs/access/misc/MobaXterm_password.png differ
diff --git a/doc.zih.tu-dresden.de/docs/access/misc/MobaXterm_remote_host.png b/doc.zih.tu-dresden.de/docs/access/misc/MobaXterm_remote_host.png
new file mode 100644
index 0000000000000000000000000000000000000000..63a8595b8c066517e4defba002ff61c62a291597
Binary files /dev/null and b/doc.zih.tu-dresden.de/docs/access/misc/MobaXterm_remote_host.png differ
diff --git a/doc.zih.tu-dresden.de/docs/access/ssh_mobaxterm.md b/doc.zih.tu-dresden.de/docs/access/ssh_mobaxterm.md
index 5978b9b31165864c952c69d82e79259f8516cda6..345a4230a2dd35c15b73c10ae61df67f54a9a03e 100644
--- a/doc.zih.tu-dresden.de/docs/access/ssh_mobaxterm.md
+++ b/doc.zih.tu-dresden.de/docs/access/ssh_mobaxterm.md
@@ -43,7 +43,7 @@ Here you can set different options in the following tabs:
     option, you can store and manage credentials. To access a different cluster, change the name
     accordingly (e.g.`login1.alpha.hpc.tu-dresden.de`)
 
-    ![Settings for SSH connection in MobaXterm](misc/mobaxterm5_ssh.png)
+    ![Settings for SSH connection in MobaXterm](misc/MobaXterm_remote_host.png)
 
 1.  Advanced settings can be configured in the same window below. These are
     - "Advanced SSH settings" - set defaults for this specific session. For example, set a SSH key
@@ -65,7 +65,7 @@ Here you can set different options in the following tabs:
 1.  The last thing to do is to input your ZIH password in the command line and to press enter.
     The entered symbols of your password are invisible and will not appear as typed in.
 
-    ![Saving your password in MobaXterm](misc/mobaxterm7_pw.png)
+    ![Saving your password in MobaXterm](misc/MobaXterm_password.png)
 
 !!! Caution
 
diff --git a/doc.zih.tu-dresden.de/docs/jobs_and_resources/barnard.md b/doc.zih.tu-dresden.de/docs/jobs_and_resources/barnard.md
index 0e9d4a1a562751a344f5d86f55083e0601ff6469..7a14bc360e6324c6f62ccffde7417fdff2513e19 100644
--- a/doc.zih.tu-dresden.de/docs/jobs_and_resources/barnard.md
+++ b/doc.zih.tu-dresden.de/docs/jobs_and_resources/barnard.md
@@ -57,7 +57,7 @@ The filesystems `/data/horse` and `/data/walrus` can only be accessed via worksp
 to the [workspace page](../data_lifecycle/workspaces.md), if you are not familiar with the
 workspace concept and the corresponding commands. You can find the settings for
 workspaces on these two filesystems in the
-[section Settings for Workspaces](../data_lifecycle/workspaces.md#settings-for-workspaces).
+[section Settings for Workspaces](../data_lifecycle/workspaces.md#workspace-lifetimes).
 
 ### Data Migration to New Filesystems
 
diff --git a/doc.zih.tu-dresden.de/docs/jobs_and_resources/overview.md b/doc.zih.tu-dresden.de/docs/jobs_and_resources/overview.md
index e5bd5333ac529c93f1a52d7006174ce2bc9e0af6..f388bc4b0a64d5ff609793893b139af4ad24972e 100644
--- a/doc.zih.tu-dresden.de/docs/jobs_and_resources/overview.md
+++ b/doc.zih.tu-dresden.de/docs/jobs_and_resources/overview.md
@@ -10,7 +10,7 @@ to achieve the ambitious research goals of the users and the ZIH.
 
 The HPC system, redesigned in December 2023, consists of five homogeneous clusters with their own
 [Slurm](slurm.md) instances and cluster specific
-[login nodes](hardware_overview.md#login-nodes). The clusters share one
+login nodes. The clusters share one
 [filesystem](../data_lifecycle/file_systems.md) which enables users to easily switch between the
 components.
 
diff --git a/doc.zih.tu-dresden.de/docs/quickstart/getting_started.md b/doc.zih.tu-dresden.de/docs/quickstart/getting_started.md
index 57d9f7c7d6f6ba293ebe8223c517dd3d443a5b0e..95af8dde2310081e23e24c56ce092561e723aa3a 100644
--- a/doc.zih.tu-dresden.de/docs/quickstart/getting_started.md
+++ b/doc.zih.tu-dresden.de/docs/quickstart/getting_started.md
@@ -400,7 +400,7 @@ For additional information refer to the detailed documentation on [modules](../s
 
     When explicitely loading multiple modules you need to make sure that they are compatible.
     So try to stick to modules using the same toolchain.
-    See the [Toolchains section](../software/modules.md#Toolchains) for more information.
+    See the [Toolchains section](../software/modules.md#toolchains) for more information.
 
 ## Running a Program/Job
 
diff --git a/doc.zih.tu-dresden.de/docs/software/data_analytics_with_r.md b/doc.zih.tu-dresden.de/docs/software/data_analytics_with_r.md
index bd994d6fa510c313c9c103095668b2bf47d0e433..7874b0fb110a435fad9660286ce159ae57ca60a6 100644
--- a/doc.zih.tu-dresden.de/docs/software/data_analytics_with_r.md
+++ b/doc.zih.tu-dresden.de/docs/software/data_analytics_with_r.md
@@ -36,7 +36,7 @@ marie@barnard$ Rscript </path/to/script/your_script.R> <param1> <param2>
 In addition to using interactive and batch jobs, it is possible to work with R using
 [JupyterHub](../access/jupyterhub.md).
 
-The production and test [environments](../access/jupyterhub.md#standard-environments) of
+The production and test [environments](../access/jupyterhub.md#standard-profiles) of
 JupyterHub contain R kernel. It can be started either in the notebook or in the console.
 
 ## RStudio
diff --git a/doc.zih.tu-dresden.de/docs/software/mathematics.md b/doc.zih.tu-dresden.de/docs/software/mathematics.md
index dee08428fd21fdd3fb28a975faed6165ecbcaba7..e1a96c4cbef58060b7a33b4d64900bd88de16f5d 100644
--- a/doc.zih.tu-dresden.de/docs/software/mathematics.md
+++ b/doc.zih.tu-dresden.de/docs/software/mathematics.md
@@ -124,7 +124,7 @@ marie@login$ module load MATLAB
 ```
 
 (then you will get the most recent MATLAB version.
-[Refer to the modules section for details.](../software/modules.md#modules))
+[Refer to the modules page for details.](modules.md#module-commands))
 
 ### Interactive MATLAB-GUI
 
diff --git a/doc.zih.tu-dresden.de/mkdocs.yml b/doc.zih.tu-dresden.de/mkdocs.yml
index fce102bcdcfabd7f24b240b96e578cc011345df9..a94a289fc2784bf753a9f920916210da81b58d96 100644
--- a/doc.zih.tu-dresden.de/mkdocs.yml
+++ b/doc.zih.tu-dresden.de/mkdocs.yml
@@ -225,18 +225,22 @@ plugins:
   - markdown-caption
   # https://github.com/manuzhang/mkdocs-htmlproofer-plugin
   - htmlproofer:
-      # True by default
-      # Toggle via env. var. ENABLED_HTMLPROOFER=false
+      # Disabled by default
+      # Enable via env. var. ENABLED_HTMLPROOFER=true
       enabled: !ENV [ENABLED_HTMLPROOFER, True]
-      # Check URLs before serving. Build fails in case of bad URLs.
-      raise_error: True
-      # Ignore errors
-      #raise_error_excludes:
-      #  504: ['https://www.mkdocs.org/']
+      # Check URLs before serving. Raise error and fail build at first bad URL.
+      # raise_error: !ENV [ENABLED_HTMLPROOFER_RE, False]
+      # Raise error and fail build after all URLs have been checked.
+      raise_error_after_finish: True
+      # Ignore certain urls
+      ignore_urls:
+          - mailto:hpc-support@tu-dresden.de
+          - https://jupyterhub.hpc.tu-dresden.de*
+      skip_downloads: True
       # Toggle validating external URLs
-      validate_external_urls: False
+      validate_external_urls: !ENV [ENABLED_HTMLPROOFER_EXTERNAL_URLS, False]
       # Validate the entire rendered template, slow!
-      validate_rendered_template: True
+      #validate_rendered_template: True
   - mkdocs-video:
       is_video: True
 
diff --git a/doc.zih.tu-dresden.de/util/check-links.sh b/doc.zih.tu-dresden.de/util/check-links.sh
index ab4fe5275cbfdae9200e85b2407fa98b37c850d2..ca91a0212403a4c918b6fb115a21920c098dc545 100755
--- a/doc.zih.tu-dresden.de/util/check-links.sh
+++ b/doc.zih.tu-dresden.de/util/check-links.sh
@@ -1,9 +1,46 @@
 #!/bin/bash
-## Purpose:
-##   Checks internal links for all (git-)changed markdown files (.md) of the repository.
+
+# Purpose:
+#   Checks internal and external links for all markdown files (.md) of the repository.
+#   For link checking, we use html-proofer-plugin, which is configured in mkdocs.yml.
+#   By default the link checker only inspects internal links. It will inspect internal and external
+#   links, when the env. variable ENABLED_HTMLPROOFER_EXTERNAL_URLS is set to true.
 
 set -eo pipefail
 
 export ENABLED_HTMLPROOFER=true
+
+function usage(){
+cat << EOF
+$0 [options]
+Check links in documentation.
+
+Options:
+  -a    Check internal and external links (default: internal links only)
+  -h    Show help message
+EOF
+}
+
+while getopts ":a" option; do
+  case ${option} in
+    a)
+      export ENABLED_HTMLPROOFER_EXTERNAL_URLS=true
+      echo "Info: Checking internal and external links. Might take some time."
+      ;;
+    h)
+      usage
+      exit;;
+    \?)
+      echo "Error: Invalid option."
+      usage
+      exit;;
+  esac
+done
+
+# Switch for wikiscript
+if [ -d "doc.zih.tu-dresden.de" ]; then
+  cd doc.zih.tu-dresden.de
+fi
+
 mkdocs build
 rm -rf public