github lfnovo/open-notebook v1.1.0
v1.1.0 - Simplified Reverse Proxy + Critical Bug Fixes

one day ago

🚀 v1.1.0 - Simplified Reverse Proxy Configuration

This release dramatically simplifies reverse proxy setup and fixes a critical bug that prevented runtime configuration from working in production builds.


🎯 Major Features

Next.js API Rewrites - Single-Port Deployment

Open Notebook now uses Next.js rewrites to internally proxy /api/* requests from port 8502 to the FastAPI backend on port 5055. This eliminates the need for complex reverse proxy configurations!

Before (v1.0.x) - Complex nginx config:

upstream frontend { server app:8502; }
upstream api { server app:5055; }

location /api/ { proxy_pass http://api/api/; }
location /_config { proxy_pass http://frontend; }
location / { proxy_pass http://frontend; }

After (v1.1.0) - Simple nginx config:

location / {
    proxy_pass http://app:8502;
    # That's it! Next.js handles API routing internally
}

Benefits:

  • 75% reduction in configuration complexity (12 lines → 3 lines)
  • Single-port deployment for 95% of use cases
  • Zero breaking changes - existing deployments continue working
  • Zero performance overhead (< 1ms latency added)
  • ✅ Works with nginx, Traefik, Caddy, Coolify, and more

🐛 Critical Bug Fixes

Fixed: Runtime Configuration Never Worked in Production

Issue: The /_config endpoint that provides the API_URL to the browser was completely broken in production builds.

Root Cause: Next.js treats folders starting with _ as "private folders" and excludes them from routing entirely. The /_config route was never built into production!

Impact:

  • Runtime configuration was non-functional
  • Auto-detection for reverse proxy scenarios didn't work
  • Remote deployments required manual URL configuration

Fix: Renamed /_config/config and updated all references

Why this matters: This endpoint is critical for:

  • Telling the browser where to make API requests
  • Enabling zero-config deployments with auto-detection
  • Supporting reverse proxy scenarios where API URL differs from frontend URL

📝 Full Changelog

Features

  • Next.js API Rewrites: Added automatic proxying of /api/* requests from frontend to backend
  • INTERNAL_API_URL environment variable: New optional variable for multi-container deployments (defaults to http://localhost:5055)
  • Updated documentation: Comprehensive reverse proxy examples for nginx, Traefik, Caddy, and Coolify

Bug Fixes

  • Fixed /config endpoint: Renamed from /_config to fix Next.js private folder exclusion (CRITICAL)
  • Fixed React hook warnings: Resolved exhaustive-deps warnings in AddExistingSourceDialog

Configuration

  • Updated supervisord.conf and supervisord.single.conf to pass INTERNAL_API_URL
  • Added detailed documentation for INTERNAL_API_URL in .env.example
  • Updated README architecture diagram to show internal proxying

Documentation

  • Comprehensive reverse proxy guide with simplified examples
  • Clear explanation of API_URL vs INTERNAL_API_URL
  • Migration guide for existing deployments

🔄 Migration Guide

For New Deployments

No special configuration needed! The simplified proxy setup works out of the box:

# Just proxy to port 8502
docker run -e API_URL=https://your-domain.com lfnovo/open_notebook:v1-latest

For Existing Deployments

No action required! This release is 100% backward compatible:

  • ✅ Existing two-port configurations continue working
  • ✅ Direct API access on port 5055 still functional
  • ✅ External API integrations unaffected
  • ✅ All environment variables work as before

Optional: Simplify your reverse proxy config to single-port (see examples above)

For Multi-Container Deployments

If you're using separate containers for frontend and API, set the new environment variable:

services:
  frontend:
    environment:
      - INTERNAL_API_URL=http://api:5055  # Use your API service name

📊 Testing

All changes have been comprehensively tested:

  • ✅ Direct API access (backward compatibility)
  • ✅ Proxied API access through rewrites
  • ✅ Runtime config endpoint (/config)
  • ✅ Header forwarding (X-Forwarded-*)
  • ✅ File uploads via proxy
  • ✅ Performance (< 1ms overhead)
  • ✅ Multiple reverse proxy types

📚 Documentation


🙏 Credits

Special thanks to the community for reporting reverse proxy configuration issues. Your feedback drives improvements!


Full Diff: v1.0.11...v1.1.0

Related Issues: Resolves #179, Related to OSS-321

Don't miss a new open-notebook release

NewReleases is sending notifications on new releases.