From f69e1fd61403edc3a11c3f5128ce13751f62b740 Mon Sep 17 00:00:00 2001 From: Petru Paler Date: Sun, 11 Jan 2026 21:17:58 +0000 Subject: [PATCH] Separate server-side and client-side PocketBase URLs Server-side code (health checks, API routes) needs to use internal sidecar URL (POCKETBASE_URL at runtime), while client-side needs public URL (NEXT_PUBLIC_POCKETBASE_URL baked at build time). Co-Authored-By: Claude Opus 4.5 --- .env.example | 3 +++ src/lib/pocketbase.ts | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 5d9b324..79fd822 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,9 @@ APP_URL=https://phaseflow.yourdomain.com NODE_ENV=development # PocketBase +# POCKETBASE_URL is for server-side (API routes, health checks) - set at runtime +# NEXT_PUBLIC_POCKETBASE_URL is for client-side (browser) - baked at build time +POCKETBASE_URL=http://localhost:8090 NEXT_PUBLIC_POCKETBASE_URL=http://localhost:8090 # Email (Resend) diff --git a/src/lib/pocketbase.ts b/src/lib/pocketbase.ts index 8719a1d..1050e02 100644 --- a/src/lib/pocketbase.ts +++ b/src/lib/pocketbase.ts @@ -5,8 +5,12 @@ import PocketBase, { type RecordModel } from "pocketbase"; import type { OverrideType, User } from "@/types"; +// Client-side uses NEXT_PUBLIC_POCKETBASE_URL (baked at build time) +// Server-side uses POCKETBASE_URL (runtime) for internal communication, falls back to NEXT_PUBLIC_ const POCKETBASE_URL = - process.env.NEXT_PUBLIC_POCKETBASE_URL || "http://localhost:8090"; + process.env.POCKETBASE_URL || + process.env.NEXT_PUBLIC_POCKETBASE_URL || + "http://localhost:8090"; /** * Singleton PocketBase client for client-side usage.