diff --git a/surfsense_web/instrumentation-client.ts b/surfsense_web/instrumentation-client.ts index 0eec5eabe..15f989bb4 100644 --- a/surfsense_web/instrumentation-client.ts +++ b/surfsense_web/instrumentation-client.ts @@ -2,7 +2,10 @@ import posthog from "posthog-js"; if (process.env.NEXT_PUBLIC_POSTHOG_KEY) { posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY, { - api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST, + // Use reverse proxy to bypass ad blockers + api_host: "/ingest", + // Required for toolbar and other UI features to work correctly + ui_host: "https://us.posthog.com", defaults: "2025-11-30", // Disable automatic pageview capture, as we capture manually with PostHogProvider // This ensures proper pageview tracking with Next.js client-side navigation diff --git a/surfsense_web/next.config.ts b/surfsense_web/next.config.ts index 1f232b1e1..f7491b4d3 100644 --- a/surfsense_web/next.config.ts +++ b/surfsense_web/next.config.ts @@ -31,6 +31,27 @@ const nextConfig: NextConfig = { } return config; }, + + // PostHog reverse proxy configuration + // This helps bypass ad blockers by routing requests through your domain + async rewrites() { + return [ + { + source: "/ingest/static/:path*", + destination: "https://us-assets.i.posthog.com/static/:path*", + }, + { + source: "/ingest/:path*", + destination: "https://us.i.posthog.com/:path*", + }, + { + source: "/ingest/decide", + destination: "https://us.i.posthog.com/decide", + }, + ]; + }, + // Required for PostHog reverse proxy to work correctly + skipTrailingSlashRedirect: true, }; // Wrap the config with MDX and next-intl plugins