commit 7f43784ef1c19ca2ff3d4f150042a2cf2417119d
parent 1367f3561df60a31344a3bf9e2f59b74ace2aacd
Author: Damian Myrda <damian@prime8.dev>
Date: Tue, 17 Feb 2026 10:39:53 -0600
fix: use internal Docker networking for GitLab API calls
Add GITLAB_HOST env var to route GitLab API requests through internal
Docker network instead of external DNS. Fixes README not loading in
production when GitLab is on the same host.
Diffstat:
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/env.example b/env.example
@@ -1 +1,3 @@
+NODE_ENV=dev|prod
+GITLAB_HOST=https://gitlab.com
WAKATIME_API_KEY=your_wakatime_api_key_here
diff --git a/src/external/git.ts b/src/external/git.ts
@@ -15,7 +15,7 @@ export async function fetchGitMetadataForProject(
project: Project,
): Promise<GitMetadata | null> {
try {
- const response = await fetch(project.apiUrl, {
+ const response = await fetch(getInternalGitLabUrl(project.apiUrl), {
headers: { "User-Agent": "prime8dev-portfolio" },
});
@@ -43,12 +43,18 @@ export async function fetchGitMetadataForProject(
}
}
+function getInternalGitLabUrl(externalUrl: string): string {
+ const internalHost = process.env.GITLAB_HOST;
+ if (!internalHost) return externalUrl;
+ return externalUrl.replace(/https?:\/\/[^/]+/, internalHost);
+}
+
async function fetchReadme(
urls: RepoUrls,
readmeUrl: string,
): Promise<string | null> {
try {
- const response = await fetch(readmeUrl, {
+ const response = await fetch(getInternalGitLabUrl(readmeUrl), {
headers: { "User-Agent": "prime8dev-portfolio" },
});
if (!response.ok) return null;