langflow icon indicating copy to clipboard operation
langflow copied to clipboard

How to Enable SSL on langflow

Open tejaspatil0407 opened this issue 1 year ago • 7 comments

I wanted to know how to enable SSL on a locally hosted python version of Langflow. @dosubot

tejaspatil0407 avatar Oct 15 '24 10:10 tejaspatil0407

To enable SSL on a locally hosted Python version of Langflow, you can configure the Uvicorn server to use SSL certificates. Langflow uses Uvicorn, which allows SSL configuration by specifying the SSL certificate and key files when starting the server. However, the Langflow codebase itself includes a configuration option for enabling SSL through a setting called "chroma_server_ssl_enabled" [1].

To set up SSL with Uvicorn, you would typically start the server with the --ssl-keyfile and --ssl-certfile options, providing the paths to your SSL key and certificate files. Here's an example command:

uvicorn your_app:app --host 0.0.0.0 --port 8000 --ssl-keyfile=path/to/your/keyfile --ssl-certfile=path/to/your/certfile

Make sure to replace your_app:app with the actual module and application instance you are using.

To continue talking to Dosu, mention @dosu.

dosubot[bot] avatar Oct 15 '24 10:10 dosubot[bot]

An other approach would be to setup a NGINX (or Apache) Proxy Server in front of langflow (binding langflow to localhost (127.0.0.1) and NGINX to the public IP) and let NGINX handle your SSL certificates.

greenmotion avatar Oct 15 '24 15:10 greenmotion

To enable SSL for a locally hosted Python version of Langflow, you must configure your Python server to use SSL certificates.

  1. Generate SSL certificates.

  2. Configure your server example (Flask) :- flow = LangFlow(app) app.run(ssl_context=('cert.pem', 'key.pem'), host='0.0.0.0', port=5000)

Now check it should work.

rushaad2911 avatar Nov 17 '24 11:11 rushaad2911

To enable SSL on Langflow, you can use Uvicorn with SSL certificates or set up a reverse proxy (e.g., NGINX) for SSL termination. For Uvicorn, you need to generate SSL certificates and specify them when starting the server. Additionally, make sure the "chroma_server_ssl_enabled" option is set to true in Langflow's configuration.

jigarvyasidea avatar Dec 23 '24 13:12 jigarvyasidea

I' m in a conda env and get a server response 404 (page not found), after successful integration of a self-signed certificate.

import uvicorn
from langflow.main import create_app
import os
from dotenv import load_dotenv
import warnings
from sqlalchemy.exc import SAWarning

warnings.filterwarnings("ignore", category=SAWarning, module="sqlalchemy")
warnings.filterwarnings("ignore", category=DeprecationWarning, module="uvicorn")
warnings.simplefilter(action='ignore', category=FutureWarning)
warnings.simplefilter(action='ignore', category=UserWarning)


dotenv_path = "/home/rstud/.local/share/r-miniconda/envs/pslLangflow/.env"
load_dotenv(dotenv_path)

def run_langflow_with_ssl():
    ssl_keyfile = os.environ.get('LANGFLOW_SSL_KEYFILE', '/home/rstud/.local/share/r-miniconda/envs/pslLangflow/key.pem')
    ssl_certfile = os.environ.get('LANGFLOW_SSL_CERTFILE', '/home/rstud/.local/share/r-miniconda/envs/pslLangflow/cert.pem')
    host = os.environ.get('LANGFLOW_HOST', '85.24.196.44')
    port = int(os.environ.get('LANGFLOW_PORT', 7860))

    if not os.path.exists(ssl_keyfile) or not os.path.exists(ssl_certfile):
        print(f"SSL key file or certificate file not found. Please check the paths:")
        print(f"Key file: {ssl_keyfile}")
        print(f"Cert file: {ssl_certfile}")
        return

    print(f"Starting Langflow with SSL on https://{host}:{port}")
    app = create_app()
    uvicorn.run(
        app,
        host=host,
        port=port,
        ssl_keyfile=ssl_keyfile,
        ssl_certfile=ssl_certfile
    )

if __name__ == "__main__":
    run_langflow_with_ssl()

Error: page not found

What to do? SSL is essential.

Steviey avatar Jan 30 '25 02:01 Steviey

There are two ways to enable SSL for Lang flow: first, by generating SSL certificates (required), and second, by using those certificates to securely run Lang flow as an alternative to the CLI method. Alternative Method

If you're not using CLI and want to control startup:

#run_ssl_langflow.py import unicorn from langflow.main import app # Adjust import if needed

uvicorn.run(app, host="0.0.0.0", port=7860, ssl_keyfile="key.pem", ssl_certfile="cert.pem")

#Run it with:

python run_ssl_langflow.py

/This is my idea for these issues: I aim to contribute constructively and collaboratively, ensuring impactful solutions and meaningful progress.

Dharshinir004 avatar Apr 23 '25 16:04 Dharshinir004

Steviey

Error: page not found

This is so sad to see that such great open source AI agent builder has no ssl support

To answer your problem of page not found, you have to setup static files, this is how I am able to run langflow on https (only for local)

import uvicorn
from langflow.main import create_app, setup_static_files, get_static_files_dir  # Adjust import if needed

app = create_app()
setup_static_files(app, static_files_dir=get_static_files_dir())
uvicorn.run(app, host="0.0.0.0", port=7861, ssl_keyfile="key.pem", ssl_certfile="cert.pem")

thedevd avatar Apr 26 '25 16:04 thedevd