diff --git a/lib/modules/manager/terragrunt/__fixtures__/2.hcl b/lib/modules/manager/terragrunt/__fixtures__/2.hcl
index b99906d626d704db553478ac385448c044057d16..f38c3924453967204756ab8a128a45e04e2c9d64 100644
--- a/lib/modules/manager/terragrunt/__fixtures__/2.hcl
+++ b/lib/modules/manager/terragrunt/__fixtures__/2.hcl
@@ -127,32 +127,32 @@ terraform {
 
 # foobar
 terraform {
-  source = "https://bitbucket.com/hashicorp/example?ref=v1.0.0"
+  source = "https://mygit.com/hashicorp/example?ref=v1.0.0"
 }
 
 # gittags
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example?ref=v1.0.0"
+  source = "git::https://mygit.com/hashicorp/example?ref=v1.0.0"
 }
 
 # gittags_badversion
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example?ref=next"
+  source = "git::https://mygit.com/hashicorp/example?ref=next"
 }
 
 # gittags_subdir
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example//subdir/test?ref=v1.0.1"
+  source = "git::https://mygit.com/hashicorp/example//subdir/test?ref=v1.0.1"
 }
 
 # gittags_http
 terraform {
-  source = "git::http://bitbucket.com/hashicorp/example?ref=v1.0.2"
+  source = "git::http://mygit.com/hashicorp/example?ref=v1.0.2"
 }
 
 # gittags_ssh
 terraform {
-  source = "git::ssh://git@bitbucket.com/hashicorp/example?ref=v1.0.3"
+  source = "git::ssh://git@mygit.com/hashicorp/example?ref=v1.0.3"
 }
 
 # invalid, ignored by test since it does not have source on the next line
@@ -164,3 +164,18 @@ terraform {
   name  = "foo"
   dummy = "true"
 }
+
+# bitbucket-tags
+terraform {
+  source = "git::https://bitbucket.com/hashicorp/example?ref=v1.0.0"
+}
+
+# gitlab-tags
+terraform {
+  source = "git::https://gitlab.com/hashicorp/example?ref=v1.0.0"
+}
+
+# gitea-tags
+terraform {
+  source = "git::https://gitea.com/hashicorp/example?ref=v1.0.0"
+}
diff --git a/lib/modules/manager/terragrunt/__fixtures__/3.hcl b/lib/modules/manager/terragrunt/__fixtures__/3.hcl
index bfb076653db87562aac26d56aac224e887c32f02..3cf9e16f8bca421ba35ed8dc61d51f4261c7e6bd 100644
--- a/lib/modules/manager/terragrunt/__fixtures__/3.hcl
+++ b/lib/modules/manager/terragrunt/__fixtures__/3.hcl
@@ -127,32 +127,32 @@ terraform {
 
 # foobar
 terraform {
-  source = "https://bitbucket.com/hashicorp/example?ref=v1.0.0&depth=1"
+  source = "https://mygit.com/hashicorp/example?ref=v1.0.0&depth=1"
 }
 
 # gittags
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example?ref=v1.0.0&depth=1"
+  source = "git::https://mygit.com/hashicorp/example?ref=v1.0.0&depth=1"
 }
 
 # gittags_badversion
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example?ref=next&depth=1"
+  source = "git::https://mygit.com/hashicorp/example?ref=next&depth=1"
 }
 
 # gittags_subdir
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example//subdir/test?ref=v1.0.1&depth=1"
+  source = "git::https://mygit.com/hashicorp/example//subdir/test?ref=v1.0.1&depth=1"
 }
 
 # gittags_http
 terraform {
-  source = "git::http://bitbucket.com/hashicorp/example?ref=v1.0.2&depth=1"
+  source = "git::http://mygit.com/hashicorp/example?ref=v1.0.2&depth=1"
 }
 
 # gittags_ssh
 terraform {
-  source = "git::ssh://git@bitbucket.com/hashicorp/example?ref=v1.0.3&depth=1"
+  source = "git::ssh://git@mygit.com/hashicorp/example?ref=v1.0.3&depth=1"
 }
 
 # invalid, ignored by test since it does not have source on the next line
@@ -164,3 +164,19 @@ terraform {
   name  = "foo"
   dummy = "true"
 }
+
+# bitbucket-tags
+terraform {
+  source = "git::https://bitbucket.com/hashicorp/example?ref=v1.0.0"
+}
+
+# gitlab-tags
+terraform {
+  source = "git::https://gitlab.com/hashicorp/example?ref=v1.0.0"
+}
+
+# gitea-tags
+terraform {
+  source = "git::https://gitea.com/hashicorp/example?ref=v1.0.0"
+}
+
diff --git a/lib/modules/manager/terragrunt/__fixtures__/4.hcl b/lib/modules/manager/terragrunt/__fixtures__/4.hcl
index 72889fb6aed347d71fdc5898c4ba6c3296978fdf..2eef263e14e3d5fc994c532790f876c2ac1c0eb2 100644
--- a/lib/modules/manager/terragrunt/__fixtures__/4.hcl
+++ b/lib/modules/manager/terragrunt/__fixtures__/4.hcl
@@ -127,32 +127,32 @@ terraform {
 
 # foobar
 terraform {
-  source = "https://bitbucket.com/hashicorp/example?depth=1&ref=v1.0.0"
+  source = "https://mygit.com/hashicorp/example?depth=1&ref=v1.0.0"
 }
 
 # gittags
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example?depth=1&ref=v1.0.0"
+  source = "git::https://mygit.com/hashicorp/example?depth=1&ref=v1.0.0"
 }
 
 # gittags_badversion
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example?depth=1&ref=next"
+  source = "git::https://mygit.com/hashicorp/example?depth=1&ref=next"
 }
 
 # gittags_subdir
 terraform {
-  source = "git::https://bitbucket.com/hashicorp/example//subdir/test?depth=1&ref=v1.0.1"
+  source = "git::https://mygit.com/hashicorp/example//subdir/test?depth=1&ref=v1.0.1"
 }
 
 # gittags_http
 terraform {
-  source = "git::http://bitbucket.com/hashicorp/example?depth=1&ref=v1.0.2"
+  source = "git::http://mygit.com/hashicorp/example?depth=1&ref=v1.0.2"
 }
 
 # gittags_ssh
 terraform {
-  source = "git::ssh://git@bitbucket.com/hashicorp/example?depth=1&ref=v1.0.3"
+  source = "git::ssh://git@mygit.com/hashicorp/example?depth=1&ref=v1.0.3"
 }
 
 # invalid, ignored by test since it does not have source on the next line
@@ -164,3 +164,20 @@ terraform {
   name  = "foo"
   dummy = "true"
 }
+
+
+# bitbucket-tags
+terraform {
+  source = "git::https://bitbucket.com/hashicorp/example?ref=v1.0.0"
+}
+
+# gitlab-tags
+terraform {
+  source = "git::https://gitlab.com/hashicorp/example?ref=v1.0.0"
+}
+
+# gitea-tags
+terraform {
+  source = "git::https://gitea.com/hashicorp/example?ref=v1.0.0"
+}
+
diff --git a/lib/modules/manager/terragrunt/extract.spec.ts b/lib/modules/manager/terragrunt/extract.spec.ts
index bcba2edcbf9efc3ba040767ec00c5f67d166b07b..bf997f14654a50081bd8233174b5042108157049 100644
--- a/lib/modules/manager/terragrunt/extract.spec.ts
+++ b/lib/modules/manager/terragrunt/extract.spec.ts
@@ -155,44 +155,44 @@ describe('modules/manager/terragrunt/extract', () => {
           {
             currentValue: 'v1.0.0',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.0',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'next',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.1',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.2',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'http://bitbucket.com/hashicorp/example',
+            packageName: 'http://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.3',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'ssh://git@bitbucket.com/hashicorp/example',
+            packageName: 'ssh://git@mygit.com/hashicorp/example',
           },
           {
             skipReason: 'no-source',
@@ -200,9 +200,30 @@ describe('modules/manager/terragrunt/extract', () => {
           {
             skipReason: 'no-source',
           },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'bitbucket-tags',
+            depName: 'bitbucket.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://bitbucket.com/hashicorp/example',
+          },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'gitlab-tags',
+            depName: 'gitlab.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://gitlab.com/hashicorp/example',
+          },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'gitea-tags',
+            depName: 'gitea.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://gitea.com/hashicorp/example',
+          },
         ],
       });
-      expect(res?.deps).toHaveLength(30);
+      expect(res?.deps).toHaveLength(33);
       expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(4);
     });
 
@@ -320,44 +341,44 @@ describe('modules/manager/terragrunt/extract', () => {
           {
             currentValue: 'v1.0.0',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.0',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'next',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.1',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.2',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'http://bitbucket.com/hashicorp/example',
+            packageName: 'http://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.3',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'ssh://git@bitbucket.com/hashicorp/example',
+            packageName: 'ssh://git@mygit.com/hashicorp/example',
           },
           {
             skipReason: 'no-source',
@@ -365,9 +386,30 @@ describe('modules/manager/terragrunt/extract', () => {
           {
             skipReason: 'no-source',
           },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'bitbucket-tags',
+            depName: 'bitbucket.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://bitbucket.com/hashicorp/example',
+          },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'gitlab-tags',
+            depName: 'gitlab.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://gitlab.com/hashicorp/example',
+          },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'gitea-tags',
+            depName: 'gitea.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://gitea.com/hashicorp/example',
+          },
         ],
       });
-      expect(res?.deps).toHaveLength(30);
+      expect(res?.deps).toHaveLength(33);
       expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(4);
     });
 
@@ -485,44 +527,44 @@ describe('modules/manager/terragrunt/extract', () => {
           {
             currentValue: 'v1.0.0',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.0',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'next',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.1',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'https://bitbucket.com/hashicorp/example',
+            packageName: 'https://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.2',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'http://bitbucket.com/hashicorp/example',
+            packageName: 'http://mygit.com/hashicorp/example',
           },
           {
             currentValue: 'v1.0.3',
             datasource: 'git-tags',
-            depName: 'bitbucket.com/hashicorp/example',
+            depName: 'mygit.com/hashicorp/example',
             depType: 'gitTags',
-            packageName: 'ssh://git@bitbucket.com/hashicorp/example',
+            packageName: 'ssh://git@mygit.com/hashicorp/example',
           },
           {
             skipReason: 'no-source',
@@ -530,9 +572,30 @@ describe('modules/manager/terragrunt/extract', () => {
           {
             skipReason: 'no-source',
           },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'bitbucket-tags',
+            depName: 'bitbucket.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://bitbucket.com/hashicorp/example',
+          },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'gitlab-tags',
+            depName: 'gitlab.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://gitlab.com/hashicorp/example',
+          },
+          {
+            currentValue: 'v1.0.0',
+            datasource: 'gitea-tags',
+            depName: 'gitea.com/hashicorp/example',
+            depType: 'gitTags',
+            packageName: 'https://gitea.com/hashicorp/example',
+          },
         ],
       });
-      expect(res?.deps).toHaveLength(30);
+      expect(res?.deps).toHaveLength(33);
       expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(4);
     });
 
diff --git a/lib/modules/manager/terragrunt/index.ts b/lib/modules/manager/terragrunt/index.ts
index 58864cf7f570857f46fea1418e854170e4a8f677..9343bcd0c5e8aef7d2cda9b2bebfb8dda8af770a 100644
--- a/lib/modules/manager/terragrunt/index.ts
+++ b/lib/modules/manager/terragrunt/index.ts
@@ -1,6 +1,9 @@
 import type { Category } from '../../../constants';
+import { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags';
 import { GitTagsDatasource } from '../../datasource/git-tags';
+import { GiteaTagsDatasource } from '../../datasource/gitea-tags';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { GitlabTagsDatasource } from '../../datasource/gitlab-tags';
 import { TerraformModuleDatasource } from '../../datasource/terraform-module';
 
 export { updateArtifacts } from './artifacts';
@@ -9,6 +12,9 @@ export { extractPackageFile } from './extract';
 export const supportedDatasources = [
   GitTagsDatasource.id,
   GithubTagsDatasource.id,
+  GitlabTagsDatasource.id,
+  BitbucketTagsDatasource.id,
+  GiteaTagsDatasource.id,
   TerraformModuleDatasource.id,
 ];
 
diff --git a/lib/modules/manager/terragrunt/modules.ts b/lib/modules/manager/terragrunt/modules.ts
index 01fc5b43562569cb424277eb05198b7b72d93569..f881a78a95ca909bb15624d2ef381a1602c57da1 100644
--- a/lib/modules/manager/terragrunt/modules.ts
+++ b/lib/modules/manager/terragrunt/modules.ts
@@ -1,7 +1,11 @@
 import { logger } from '../../../logger';
+import { detectPlatform } from '../../../util/common';
 import { regEx } from '../../../util/regex';
+import { BitbucketTagsDatasource } from '../../datasource/bitbucket-tags';
 import { GitTagsDatasource } from '../../datasource/git-tags';
+import { GiteaTagsDatasource } from '../../datasource/gitea-tags';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { GitlabTagsDatasource } from '../../datasource/gitlab-tags';
 import { TerraformModuleDatasource } from '../../datasource/terraform-module';
 import type { PackageDependency } from '../types';
 import { extractTerragruntProvider } from './providers';
@@ -31,6 +35,20 @@ export function extractTerragruntModule(
   return result;
 }
 
+function detectGitTagDatasource(registryUrl: string): string {
+  const platform = detectPlatform(registryUrl);
+  switch (platform) {
+    case 'gitlab':
+      return GitlabTagsDatasource.id;
+    case 'bitbucket':
+      return BitbucketTagsDatasource.id;
+    case 'gitea':
+      return GiteaTagsDatasource.id;
+    default:
+      return GitTagsDatasource.id;
+  }
+}
+
 export function analyseTerragruntModule(
   dep: PackageDependency<TerraformManagerData>,
 ): void {
@@ -61,7 +79,7 @@ export function analyseTerragruntModule(
       dep.packageName = gitTagsRefMatch.groups.url;
     }
     dep.currentValue = gitTagsRefMatch.groups.tag;
-    dep.datasource = GitTagsDatasource.id;
+    dep.datasource = detectGitTagDatasource(gitTagsRefMatch.groups.url);
   } else if (tfrVersionMatch?.groups) {
     dep.depType = 'terragrunt';
     dep.depName =