diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md
index 3f725b46e113e84fefb11209f701ecf488182a58..563c043e92d6dd61a912ffee123a973e0e510dee 100644
--- a/docs/usage/configuration-options.md
+++ b/docs/usage/configuration-options.md
@@ -3193,16 +3193,17 @@ You can use the `registryAliases` object to set registry aliases.
 
 This feature works with the following managers:
 
+- [`ansible`](/modules/manager/ansible)
+- [`docker-compose`](/modules/manager/docker-compose)
+- [`dockerfile`](/modules/manager/dockerfile)
+- [`droneci`](/modules/manager/droneci)
+- [`gitlabci`](/modules/manager/gitlabci/)
 - [`helm-requirements`](/modules/manager/helm-requirements/)
-- [`helmv3`](/modules/manager/helmv3/)
 - [`helmfile`](/modules/manager/helmfile/)
-- [`gitlabci`](/modules/manager/gitlabci/)
-- [`dockerfile`](/modules/manager/dockerfile)
-- [`docker-compose`](/modules/manager/docker-compose)
+- [`helmv3`](/modules/manager/helmv3/)
 - [`kubernetes`](/modules/manager/kubernetes)
-- [`ansible`](/modules/manager/ansible)
-- [`droneci`](/modules/manager/droneci)
 - [`terraform`](/modules/manager/terraform)
+- [`woodpecker`](/modules/manager/woodpecker)
 
 ## registryUrls
 
diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts
index fa2d0c2a6041c7b3c1e8154eae91ca0c6612db07..1a9ad038a3d427be61fe6fbdbc37a96eb969ccc8 100644
--- a/lib/config/validation.spec.ts
+++ b/lib/config/validation.spec.ts
@@ -578,16 +578,16 @@ describe('config/validation', () => {
       expect(errors).toMatchObject([
         {
           message:
-            'Invalid `registryAliases.registryAliases.sample` configuration: value is not a url',
+            'Invalid `registryAliases.registryAliases.sample` configuration: value is not a string',
           topic: 'Configuration Error',
         },
       ]);
     });
 
-    it('errors if registryAliases have invalid url', async () => {
+    it('errors if registryAliases have invalid value', async () => {
       const config = {
         registryAliases: {
-          example1: 'noturl',
+          example1: 123 as never,
           example2: 'http://www.example.com',
         },
       };
@@ -598,7 +598,7 @@ describe('config/validation', () => {
       expect(errors).toMatchObject([
         {
           message:
-            'Invalid `registryAliases.registryAliases.example1` configuration: value is not a url',
+            'Invalid `registryAliases.registryAliases.example1` configuration: value is not a string',
           topic: 'Configuration Error',
         },
       ]);
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index f5c7b59c5c565719d45ff063e0eab4c7d055a8ab..34797bbb8b30f4148392847a572a9904e958cccc 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -54,15 +54,6 @@ function isIgnored(key: string): boolean {
   return ignoredNodes.includes(key);
 }
 
-function validateAliasObject(val: Record<string, unknown>): true | string {
-  for (const [key, value] of Object.entries(val)) {
-    if (!is.urlString(value)) {
-      return key;
-    }
-  }
-  return true;
-}
-
 function validatePlainObject(val: Record<string, unknown>): true | string {
   for (const [key, value] of Object.entries(val)) {
     if (!is.string(value)) {
@@ -570,11 +561,11 @@ export async function validateConfig(
         ) {
           if (is.plainObject(val)) {
             if (key === 'registryAliases') {
-              const res = validateAliasObject(val);
+              const res = validatePlainObject(val);
               if (res !== true) {
                 errors.push({
                   topic: 'Configuration Error',
-                  message: `Invalid \`${currentPath}.${key}.${res}\` configuration: value is not a url`,
+                  message: `Invalid \`${currentPath}.${key}.${res}\` configuration: value is not a string`,
                 });
               }
             } else if (