From 2958d1c06a9b6f99f264c46d6d109b3a6f161acc Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Wed, 25 Feb 2026 00:15:29 +0530 Subject: [PATCH] chore: update Docker configuration to rename frontend to web, adjust environment variable references for database and Redis connections --- .github/workflows/docker_build.yaml | 14 +++++------ docker/.env.example | 19 +++++++++++++++ docker/docker-compose.dev.yml | 28 ++++++++++----------- docker/docker-compose.yml | 38 ++++++++++++++--------------- 4 files changed, 59 insertions(+), 40 deletions(-) diff --git a/.github/workflows/docker_build.yaml b/.github/workflows/docker_build.yaml index a33c238ab..81108567b 100644 --- a/.github/workflows/docker_build.yaml +++ b/.github/workflows/docker_build.yaml @@ -83,7 +83,7 @@ jobs: fail-fast: false matrix: platform: [linux/amd64, linux/arm64] - image: [backend, frontend] + image: [backend, web] include: - platform: linux/amd64 suffix: amd64 @@ -92,11 +92,11 @@ jobs: suffix: arm64 os: ubuntu-24.04-arm - image: backend - name: surfsense_backend + name: surfsense-backend context: ./surfsense_backend file: ./surfsense_backend/Dockerfile - - image: frontend - name: surfsense_web + - image: web + name: surfsense-web context: ./surfsense_web file: ./surfsense_web/Dockerfile env: @@ -141,7 +141,7 @@ jobs: cache-to: type=gha,mode=max,scope=${{ matrix.image }}-${{ matrix.suffix }} provenance: false build-args: | - ${{ matrix.image == 'frontend' && format('NEXT_PUBLIC_FASTAPI_BACKEND_URL=__NEXT_PUBLIC_FASTAPI_BACKEND_URL__{0}NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE=__NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE__{0}NEXT_PUBLIC_ETL_SERVICE=__NEXT_PUBLIC_ETL_SERVICE__{0}NEXT_PUBLIC_ELECTRIC_URL=__NEXT_PUBLIC_ELECTRIC_URL__{0}NEXT_PUBLIC_ELECTRIC_AUTH_MODE=__NEXT_PUBLIC_ELECTRIC_AUTH_MODE__{0}NEXT_PUBLIC_DEPLOYMENT_MODE=__NEXT_PUBLIC_DEPLOYMENT_MODE__', '\n') || '' }} + ${{ matrix.image == 'web' && format('NEXT_PUBLIC_FASTAPI_BACKEND_URL=__NEXT_PUBLIC_FASTAPI_BACKEND_URL__{0}NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE=__NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE__{0}NEXT_PUBLIC_ETL_SERVICE=__NEXT_PUBLIC_ETL_SERVICE__{0}NEXT_PUBLIC_ELECTRIC_URL=__NEXT_PUBLIC_ELECTRIC_URL__{0}NEXT_PUBLIC_ELECTRIC_AUTH_MODE=__NEXT_PUBLIC_ELECTRIC_AUTH_MODE__{0}NEXT_PUBLIC_DEPLOYMENT_MODE=__NEXT_PUBLIC_DEPLOYMENT_MODE__', '\n') || '' }} create_manifest: runs-on: ubuntu-latest @@ -153,8 +153,8 @@ jobs: fail-fast: false matrix: include: - - name: surfsense_backend - - name: surfsense_web + - name: surfsense-backend + - name: surfsense-web env: REGISTRY_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ matrix.name }} diff --git a/docker/.env.example b/docker/.env.example index 4f71a3132..6d7d8b6ce 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -63,6 +63,25 @@ EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2 # DB_USER=surfsense # DB_PASSWORD=surfsense # DB_NAME=surfsense +# DB_HOST=db +# DB_PORT=5432 + +# SSL mode for database connections: disable, require, verify-ca, verify-full +# DB_SSLMODE=disable + +# Full DATABASE_URL override — when set, takes precedence over the individual +# DB_USER / DB_PASSWORD / DB_NAME / DB_HOST / DB_PORT settings above. +# Use this for managed databases (AWS RDS, GCP Cloud SQL, Supabase, etc.) +# DATABASE_URL=postgresql+asyncpg://user:password@your-rds-host:5432/surfsense?sslmode=require + +# ------------------------------------------------------------------------------ +# Redis (defaults work out of the box) +# ------------------------------------------------------------------------------ +# Full Redis URL override for Celery broker, result backend, and app cache. +# Use this for managed Redis (AWS ElastiCache, Redis Cloud, etc.) +# Supports auth: redis://:password@host:port/0 +# Supports TLS: rediss://:password@host:6380/0 +# REDIS_URL=redis://redis:6379/0 # ------------------------------------------------------------------------------ # Electric SQL (real-time sync credentials) diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 310349a4e..12c1ba53c 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -67,10 +67,10 @@ services: env_file: - ../surfsense_backend/.env environment: - - DATABASE_URL=postgresql+asyncpg://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@db:5432/${DB_NAME:-surfsense} - - CELERY_BROKER_URL=redis://redis:6379/0 - - CELERY_RESULT_BACKEND=redis://redis:6379/0 - - REDIS_APP_URL=redis://redis:6379/0 + - DATABASE_URL=${DATABASE_URL:-postgresql+asyncpg://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}} + - CELERY_BROKER_URL=${REDIS_URL:-redis://redis:6379/0} + - CELERY_RESULT_BACKEND=${REDIS_URL:-redis://redis:6379/0} + - REDIS_APP_URL=${REDIS_URL:-redis://redis:6379/0} - CELERY_TASK_DEFAULT_QUEUE=surfsense - PYTHONPATH=/app - UVICORN_LOOP=asyncio @@ -96,10 +96,10 @@ services: env_file: - ../surfsense_backend/.env environment: - - DATABASE_URL=postgresql+asyncpg://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@db:5432/${DB_NAME:-surfsense} - - CELERY_BROKER_URL=redis://redis:6379/0 - - CELERY_RESULT_BACKEND=redis://redis:6379/0 - - REDIS_APP_URL=redis://redis:6379/0 + - DATABASE_URL=${DATABASE_URL:-postgresql+asyncpg://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}} + - CELERY_BROKER_URL=${REDIS_URL:-redis://redis:6379/0} + - CELERY_RESULT_BACKEND=${REDIS_URL:-redis://redis:6379/0} + - REDIS_APP_URL=${REDIS_URL:-redis://redis:6379/0} - CELERY_TASK_DEFAULT_QUEUE=surfsense - PYTHONPATH=/app - ELECTRIC_DB_USER=${ELECTRIC_DB_USER:-electric} @@ -118,9 +118,9 @@ services: env_file: - ../surfsense_backend/.env environment: - - DATABASE_URL=postgresql+asyncpg://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@db:5432/${DB_NAME:-surfsense} - - CELERY_BROKER_URL=redis://redis:6379/0 - - CELERY_RESULT_BACKEND=redis://redis:6379/0 + - DATABASE_URL=${DATABASE_URL:-postgresql+asyncpg://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}} + - CELERY_BROKER_URL=${REDIS_URL:-redis://redis:6379/0} + - CELERY_RESULT_BACKEND=${REDIS_URL:-redis://redis:6379/0} - CELERY_TASK_DEFAULT_QUEUE=surfsense - PYTHONPATH=/app - SERVICE_ROLE=beat @@ -139,8 +139,8 @@ services: # env_file: # - ../surfsense_backend/.env # environment: - # - CELERY_BROKER_URL=redis://redis:6379/0 - # - CELERY_RESULT_BACKEND=redis://redis:6379/0 + # - CELERY_BROKER_URL=${REDIS_URL:-redis://redis:6379/0} + # - CELERY_RESULT_BACKEND=${REDIS_URL:-redis://redis:6379/0} # - PYTHONPATH=/app # command: celery -A app.celery_app flower --port=5555 # depends_on: @@ -154,7 +154,7 @@ services: # depends_on: # - db environment: - - DATABASE_URL=${ELECTRIC_DATABASE_URL:-postgresql://${ELECTRIC_DB_USER:-electric}:${ELECTRIC_DB_PASSWORD:-electric_password}@${POSTGRES_HOST:-db}:5432/${DB_NAME:-surfsense}?sslmode=disable} + - DATABASE_URL=${ELECTRIC_DATABASE_URL:-postgresql://${ELECTRIC_DB_USER:-electric}:${ELECTRIC_DB_PASSWORD:-electric_password}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}?sslmode=${DB_SSLMODE:-disable}} - ELECTRIC_INSECURE=true - ELECTRIC_WRITE_TO_PG_MODE=direct restart: unless-stopped diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 66d8db2e0..eacfc0806 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -43,7 +43,7 @@ services: retries: 5 backend: - image: ghcr.io/modsetter/surfsense_backend:${SURFSENSE_VERSION:-latest} + image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest} ports: - "${BACKEND_PORT:-8000}:8000" volumes: @@ -51,10 +51,10 @@ services: env_file: - .env environment: - DATABASE_URL: postgresql+asyncpg://${DB_USER:-surfsense}:${DB_PASSWORD:-surfsense}@db:5432/${DB_NAME:-surfsense} - CELERY_BROKER_URL: redis://redis:6379/0 - CELERY_RESULT_BACKEND: redis://redis:6379/0 - REDIS_APP_URL: redis://redis:6379/0 + DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://${DB_USER:-surfsense}:${DB_PASSWORD:-surfsense}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}} + CELERY_BROKER_URL: ${REDIS_URL:-redis://redis:6379/0} + CELERY_RESULT_BACKEND: ${REDIS_URL:-redis://redis:6379/0} + REDIS_APP_URL: ${REDIS_URL:-redis://redis:6379/0} CELERY_TASK_DEFAULT_QUEUE: surfsense PYTHONPATH: /app UVICORN_LOOP: asyncio @@ -71,16 +71,16 @@ services: restart: unless-stopped celery_worker: - image: ghcr.io/modsetter/surfsense_backend:${SURFSENSE_VERSION:-latest} + image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest} volumes: - shared_temp:/shared_tmp env_file: - .env environment: - DATABASE_URL: postgresql+asyncpg://${DB_USER:-surfsense}:${DB_PASSWORD:-surfsense}@db:5432/${DB_NAME:-surfsense} - CELERY_BROKER_URL: redis://redis:6379/0 - CELERY_RESULT_BACKEND: redis://redis:6379/0 - REDIS_APP_URL: redis://redis:6379/0 + DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://${DB_USER:-surfsense}:${DB_PASSWORD:-surfsense}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}} + CELERY_BROKER_URL: ${REDIS_URL:-redis://redis:6379/0} + CELERY_RESULT_BACKEND: ${REDIS_URL:-redis://redis:6379/0} + REDIS_APP_URL: ${REDIS_URL:-redis://redis:6379/0} CELERY_TASK_DEFAULT_QUEUE: surfsense PYTHONPATH: /app ELECTRIC_DB_USER: ${ELECTRIC_DB_USER:-electric} @@ -96,13 +96,13 @@ services: restart: unless-stopped celery_beat: - image: ghcr.io/modsetter/surfsense_backend:${SURFSENSE_VERSION:-latest} + image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest} env_file: - .env environment: - DATABASE_URL: postgresql+asyncpg://${DB_USER:-surfsense}:${DB_PASSWORD:-surfsense}@db:5432/${DB_NAME:-surfsense} - CELERY_BROKER_URL: redis://redis:6379/0 - CELERY_RESULT_BACKEND: redis://redis:6379/0 + DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://${DB_USER:-surfsense}:${DB_PASSWORD:-surfsense}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}} + CELERY_BROKER_URL: ${REDIS_URL:-redis://redis:6379/0} + CELERY_RESULT_BACKEND: ${REDIS_URL:-redis://redis:6379/0} CELERY_TASK_DEFAULT_QUEUE: surfsense PYTHONPATH: /app SERVICE_ROLE: beat @@ -116,14 +116,14 @@ services: restart: unless-stopped # flower: - # image: ghcr.io/modsetter/surfsense_backend:${SURFSENSE_VERSION:-latest} + # image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest} # ports: # - "${FLOWER_PORT:-5555}:5555" # env_file: # - .env # environment: - # CELERY_BROKER_URL: redis://redis:6379/0 - # CELERY_RESULT_BACKEND: redis://redis:6379/0 + # CELERY_BROKER_URL: ${REDIS_URL:-redis://redis:6379/0} + # CELERY_RESULT_BACKEND: ${REDIS_URL:-redis://redis:6379/0} # PYTHONPATH: /app # command: celery -A app.celery_app flower --port=5555 # depends_on: @@ -136,7 +136,7 @@ services: ports: - "${ELECTRIC_PORT:-5133}:3000" environment: - DATABASE_URL: ${ELECTRIC_DATABASE_URL:-postgresql://${ELECTRIC_DB_USER:-electric}:${ELECTRIC_DB_PASSWORD:-electric_password}@db:5432/${DB_NAME:-surfsense}?sslmode=disable} + DATABASE_URL: ${ELECTRIC_DATABASE_URL:-postgresql://${ELECTRIC_DB_USER:-electric}:${ELECTRIC_DB_PASSWORD:-electric_password}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-surfsense}?sslmode=${DB_SSLMODE:-disable}} ELECTRIC_INSECURE: "true" ELECTRIC_WRITE_TO_PG_MODE: direct restart: unless-stopped @@ -150,7 +150,7 @@ services: retries: 5 frontend: - image: ghcr.io/modsetter/surfsense_web:${SURFSENSE_VERSION:-latest} + image: ghcr.io/modsetter/surfsense-web:${SURFSENSE_VERSION:-latest} ports: - "${FRONTEND_PORT:-3000}:3000" environment: