diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml
index d3e6616625ed3c19ac9655baea4b40b1e0585ffa..daa268faccf6b4bc09ed71a849e3d2997a25f93b 100644
--- a/.github/workflows/backport.yml
+++ b/.github/workflows/backport.yml
@@ -9,7 +9,7 @@ jobs:
   backport:
     name: Backport Pull Request
     if: github.repository_owner == 'freifunk-gluon' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Create backport PRs
diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml
index 56d941147b7c5c0168d5aa54ead23b08c682b339..f212173d4b830c0e4bde88f1d09b26b3db5538e9 100644
--- a/.github/workflows/build-container.yml
+++ b/.github/workflows/build-container.yml
@@ -16,7 +16,7 @@ env:
 
 jobs:
   build-and-push-image:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     permissions: write-all
     steps:
       - name: Checkout repository
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index 859e752551465a53e85b8f82bbfa2d096ba246e4..18aedf14a0ffce8632b102564d04c23469f89651 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -15,7 +15,7 @@ permissions:
 jobs:
   build-documentation:
     name: docs
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Install Dependencies
diff --git a/.github/workflows/build-gluon.yml b/.github/workflows/build-gluon.yml
index 3d97b904d946e18a1c425ec40340b72bd1b927b8..6081f8fd6a00855a698baa2313588e4108cc97f3 100644
--- a/.github/workflows/build-gluon.yml
+++ b/.github/workflows/build-gluon.yml
@@ -17,7 +17,7 @@ jobs:
     permissions:
       contents: read  # for dorny/paths-filter to fetch a list of changed files
       pull-requests: read  # for dorny/paths-filter to read pull requests
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     outputs:
       targets: ${{ steps.filter.outputs.changes }}
     steps:
@@ -37,7 +37,7 @@ jobs:
       matrix:
         # Read back changed targets to create build matrix
         target: ${{ fromJSON(needs.changed.outputs.targets) }}
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
 
diff --git a/.github/workflows/check-ci.yml b/.github/workflows/check-ci.yml
index 795d05b4006d131d0f9ebdf69dda9d1021c86335..0b66468a63555f095497359de2e74a452f633a73 100644
--- a/.github/workflows/check-ci.yml
+++ b/.github/workflows/check-ci.yml
@@ -9,7 +9,7 @@ permissions:
 jobs:
   check-ci:
     name: Check generated CI
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Install example site
diff --git a/.github/workflows/check-patches.yml b/.github/workflows/check-patches.yml
index ed49180351fa8a4b83059fea79ade45063698b7a..298bf71be1996f7dfa0f5c6117dc92537652c5d1 100644
--- a/.github/workflows/check-patches.yml
+++ b/.github/workflows/check-patches.yml
@@ -18,7 +18,7 @@ permissions:
 jobs:
   check-patches:
     name: Check patches
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Refresh patches
diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml
index edd88a25fa136edcfc433098c86f5c2537b25b0b..b3c920facd2d54635cb9f74f1813aa0cca6f64f3 100644
--- a/.github/workflows/labels.yml
+++ b/.github/workflows/labels.yml
@@ -12,7 +12,7 @@ jobs:
     permissions:
       contents: read  # for actions/labeler to determine modified files
       pull-requests: write  # for actions/labeler to add labels to PRs
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     if: github.repository_owner == 'freifunk-gluon'
     steps:
     - uses: actions/labeler@v4
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 8c9267803a7d9aab21a82a7f124ed9cbe6499f62..1373fac55a730592a32a6654f1931e2e49a28803 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -9,7 +9,7 @@ permissions:
 jobs:
   lua:
     name: Lua
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Install Dependencies
@@ -21,7 +21,7 @@ jobs:
 
   sh:
     name: Shell
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Install Dependencies
@@ -33,7 +33,7 @@ jobs:
 
   editorconfig:
     name: Editorconfig
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - name: Install Dependencies