diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml
index 2fa17bbc7fbeb71ae782f694cfdaee17847ea9d6..e459d32ed5d7f600829a1e97a46ac6b7998aba2a 100644
--- a/.github/workflows/build-container.yml
+++ b/.github/workflows/build-container.yml
@@ -4,7 +4,7 @@ name: Create and publish a Docker image
 on:
   push:
     branches:
-      - 'master'
+      - 'main'
       - 'next'
       - 'v202[0-9].[0-9].x'
     tags:
diff --git a/.github/workflows/build-gluon.yml b/.github/workflows/build-gluon.yml
index 17e78d5c2a662ab19bd943ecd507abd59d2fb24d..e5ee54293cb0b0bb327c945860c2daae1c3daa01 100644
--- a/.github/workflows/build-gluon.yml
+++ b/.github/workflows/build-gluon.yml
@@ -2,7 +2,7 @@ name: Build Gluon
 on:
   push:
     branches:
-      - master
+      - main
       - next
       - 'v20[2-9][0-9].[0-9].x'
   pull_request:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2d9e536b198b4986a49c186d09f9ffb61458e57d..de825a9d001ca5153328bdae369cc0fa4dacf360 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -29,13 +29,13 @@ discuss there. We maintain a [list of rejected features] and we'd like to
 kindly ask you to review it first. In general, looking for duplicates may save
 you some time.
 
-Develop on top of master
-------------------------
+Develop on top of main
+----------------------
 If you are not developing something specific to a release (like for example a
 security fix to a feature that got completely rewritten since the release),
-develop it on top of the master branch. New features and even feature changes
+develop it on top of the main branch. New features and even feature changes
 aren't usually backported to old releases, but will be included in the upcoming
-release, which will be built from master.
+release, which will be built from main.
 
 Use descriptive commit messages
 -------------------------------
diff --git a/README.md b/README.md
index a7fbe755666cd4671c2ac9a5c9ab9737bd79fdf6..6eed709f69d35246cc359618b2a86b9541d05b41 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build Gluon](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml/badge.svg?branch=master)](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml)
+[![Build Gluon](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml/badge.svg?branch=main)](https://github.com/freifunk-gluon/gluon/actions/workflows/build-gluon.yml)
 [![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://opensource.org/license/bsd-2-clause/)
 [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/freifunk-gluon/gluon?sort=semver)](https://github.com/freifunk-gluon/gluon/releases/latest)
 
@@ -57,12 +57,12 @@ the future development of Gluon.
 
 ## Use a release!
 
-Please refrain from using the `master` branch for anything else but development purposes!
+Please refrain from using the `main` branch for anything else but development purposes!
 Use the most recent release instead. You can list all releases by running `git tag`
 and switch to one by running `git checkout v2023.2.4 && make update`.
 
 If you're using the autoupdater, do not autoupdate nodes with anything but releases.
-If you upgrade using random master commits the nodes *might break* eventually.
+If you upgrade using random main commits the nodes *might break* eventually.
 
 ## Mailinglist
 
diff --git a/docs/features/monitoring.rst b/docs/features/monitoring.rst
index d88baaf5be27c498be361e452d38bbf59a860692..7007c48cabfae3c222fbffc7490e47185d83f5f6 100644
--- a/docs/features/monitoring.rst
+++ b/docs/features/monitoring.rst
@@ -135,5 +135,5 @@ Adding a data provider
 ----------------------
 
 To add a provider, you need to install a shared object into ``/lib/gluon/respondd``.
-For more information, refer to the `respondd README <https://github.com/freifunk-gluon/packages/blob/master/net/respondd/README.md>`_
+For more information, refer to the `respondd README <https://github.com/freifunk-gluon/packages/blob/main/net/respondd/README.md>`_
 and have a look the existing providers.
diff --git a/docs/features/vpn.rst b/docs/features/vpn.rst
index 4636869d65af3815be34aac12773389bef05dd9b..6d4805673a5a25727f55260713d4f4d074ce1422 100644
--- a/docs/features/vpn.rst
+++ b/docs/features/vpn.rst
@@ -176,7 +176,7 @@ gateway, tries to establish a connection, and if it fails, tries to connect
 to the next gateway. This approach has several advantages, such as load
 balancing VPN connection attempts and avoiding problems with offline gateways.
 More information about the wgpeerselector and its algorithm can be found
-`here <https://github.com/freifunk-gluon/packages/blob/master/net/wgpeerselector/README.md>`__.
+`here <https://github.com/freifunk-gluon/packages/blob/main/net/wgpeerselector/README.md>`__.
 
 On the gluon node both VXLAN and the wgpeerselector are well integrated and no
 explicit configuration of those tools is necessary, once the general WireGuard
diff --git a/docs/index.rst b/docs/index.rst
index 99fc8535f7d5d4df390c57d2156b8ff9f342e632..7f2f7cec50b16fff15a37a63e56fafa3ba00a20d 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -86,7 +86,7 @@ License
 
 See LICENCE_
 
-.. _LICENCE: https://github.com/freifunk-gluon/gluon/blob/master/LICENSE
+.. _LICENCE: https://github.com/freifunk-gluon/gluon/blob/main/LICENSE
 
 Indices and tables
 ==================
diff --git a/docs/user/site.rst b/docs/user/site.rst
index 048d778a02075ebc987e79ca3f8fec3070c735f9..b445055f4e9802c5f377c131793c6de36f15acd0 100644
--- a/docs/user/site.rst
+++ b/docs/user/site.rst
@@ -821,7 +821,7 @@ PACKAGES_${feed}_COMMIT
 
 PACKAGES_${feed}_BRANCH
   Optional: The branch of the repository the given commit ID can be found in.
-  Defaults to the default branch of the repository (usually ``master``)
+  Defaults to the default branch of the repository (usually ``main`` or ``master``)
 
 These variables are always all uppercase, so for an entry ``foo`` in GLUON_SITE_FEEDS,
 the corresponding configuration variables would be ``PACKAGES_FOO_REPO``,