Skip to content

Client throws error and fails to connect to backend after update to v2.1.2 #684

@alvitali

Description

@alvitali

I'm not able to connect to my rybbit URL. Rybbit worked fine until v2.1.1 and fails after having upgraded to v2.1.2. The backend seems to work fine collecting metrics, just the frontend is broken.
After investigating, I found the following errors in docker's logs of the client container:

Next.js 15.3.2
   - Local:        http://localhost:3002
   - Network:      http://0.0.0.0:3002

 ✓ Starting...
 ✓ Ready in 104ms
[TypeError: Failed to parse URL from /api/auth/get-session] {
  [cause]: TypeError: Invalid URL
      at <unknown> (.next/server/chunks/4447.js:1:11245)
      at <unknown> (.next/server/chunks/4447.js:1:14621)
      at <unknown> (.next/server/chunks/4447.js:19:4491)
      at a.with (.next/server/chunks/4447.js:20:11256)
      at u.with (.next/server/chunks/4447.js:20:5503) {
    code: 'ERR_INVALID_URL',
    input: '/api/auth/get-session'
  }
}
 ⨯ unhandledRejection:  [TypeError: Failed to parse URL from /api/auth/get-session] {
  [cause]: TypeError: Invalid URL
      at <unknown> (.next/server/chunks/4447.js:1:11245)
      at <unknown> (.next/server/chunks/4447.js:1:14621)
      at <unknown> (.next/server/chunks/4447.js:19:4491)
      at a.with (.next/server/chunks/4447.js:20:11256)
      at u.with (.next/server/chunks/4447.js:20:5503) {
    code: 'ERR_INVALID_URL',
    input: '/api/auth/get-session'
  }
}
ReferenceError: window is not defined
    at 17127 (.next/server/chunks/3009.js:36:280138)
    at t (.next/server/webpack-runtime.js:1:143)
    at 95802 (.next/server/chunks/8307.js:1:11797)
    at Function.t (.next/server/webpack-runtime.js:1:143)
 ⨯ unhandledRejection:  ReferenceError: window is not defined
    at 17127 (.next/server/chunks/3009.js:36:280138)
    at t (.next/server/webpack-runtime.js:1:143)
    at 95802 (.next/server/chunks/8307.js:1:11797)
    at Function.t (.next/server/webpack-runtime.js:1:143)

My compose file is as follows:

name: rybbit
services:
  rybbit-clickhouse:
    container_name: rybbit-clickhouse
    image: clickhouse/clickhouse-server:25.4.2 ## pinned atm
    security_opt:
      - no-new-privileges:true
    # ports:
    #   - "8123:8123"
    #   - "9000:9000"
    expose:
      - 8123
      - 9000
    volumes:
      - ../../data/rybbit/clickhouse:/var/lib/clickhouse
      - ./clickhouse_config:/etc/clickhouse-server/config.d
    environment:
      - CLICKHOUSE_DB=${CLICKHOUSE_DB:-analytics}
      - CLICKHOUSE_USER=${CLICKHOUSE_USER:-default}
      - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD:-frog}
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8123/ping"]
      interval: 3s
      timeout: 5s
      retries: 5
      start_period: 10s
    networks:
      - rybbit
    restart: unless-stopped

  rybbit-postgres:
    image: postgres:17.4 ## pinned
    container_name: rybbit-postgres
    security_opt:
      - no-new-privileges:true
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-frog}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-frog}
      - POSTGRES_DB=${POSTGRES_DB:-analytics}
    volumes:
      - ../../data/rybbit/postgres:/var/lib/postgresql/data
    networks:
      - rybbit
    restart: unless-stopped

  rybbit-backend:
    image: ghcr.io/rybbit-io/rybbit-backend:v2.1.2 ## latest
    container_name: rybbit-backend
    security_opt:
      - no-new-privileges:true
    # build:
    #   context: ./server
    #   dockerfile: Dockerfile
    ports:
      - "${HOST_BACKEND_PORT}"
    environment:
      - NODE_ENV=production
      - CLICKHOUSE_HOST=http://rybbit-clickhouse:8123
      - CLICKHOUSE_DB=${CLICKHOUSE_DB:-analytics}
      - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD:-frog}
      - POSTGRES_HOST=rybbit-postgres
      - POSTGRES_PORT=5432
      - POSTGRES_DB=${POSTGRES_DB:-analytics}
      - POSTGRES_USER=${POSTGRES_USER:-frog}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-frog}
      - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
      - BASE_URL=${BASE_URL}
      - DISABLE_SIGNUP=${DISABLE_SIGNUP}
    depends_on:
      rybbit-clickhouse:
        condition: service_healthy
      rybbit-postgres:
        condition: service_started
    networks:
      - rybbit
      - nginx-proxy
    restart: unless-stopped

  rybbit-client:
    image: ghcr.io/rybbit-io/rybbit-client:v2.1.2 ## latest
    container_name: rybbit-client
    security_opt:
      - no-new-privileges:true
    # build:
    #   context: ./client
    #   dockerfile: Dockerfile
    #   args:
    #     NEXT_PUBLIC_BACKEND_URL: ${BASE_URL}
    ports:
      - "${HOST_CLIENT_PORT}"
    environment:
      - NODE_ENV=production
      - NEXT_PUBLIC_BACKEND_URL=${BASE_URL}
    depends_on:
      - rybbit-backend
    networks:
      - rybbit
      - nginx-proxy
    restart: unless-stopped

# volumes:
#   clickhouse-data:
#   postgres-data:

networks:
  rybbit:
    name: rybbit
    driver: bridge

The contents of the .env are the following (sensitive values have been replaced):

### RYBBIT
## Domain and URL Configuration
DOMAIN_NAME=tracking.domain.tld
BASE_URL="https://tracking.domain.tld"

## Authentication and Security
BETTER_AUTH_SECRET=secret-token ## openssl rand -hex 32
DISABLE_SIGNUP=true

## Webserver Configuration
## Set to false to disable the built-in Caddy webserver
USE_WEBSERVER=false
## Host port mappings - these control how services are exposed
## Format: "host_binding:container_port" or "port:container_port"
# HOST_BACKEND_PORT=127.0.0.1:3001
# HOST_CLIENT_PORT=127.0.0.1:3002
HOST_BACKEND_PORT=3001
HOST_CLIENT_PORT=3002

## ClickHouse Database Configuration
CLICKHOUSE_DB=analytics
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=frog

## PostgreSQL Database Configuration
POSTGRES_DB=analytics
POSTGRES_USER=frog
POSTGRES_PASSWORD=frog

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions