Integrate Cloudflare tunnel support in web UI
linuztx committed
Nov 10, 2024 at 14:54 UTC
cca85d7f5da336d6fdc185cc247741a113e25f74
1 file changed
+25
-2
run_ui.py
+25
-2
@@ -14,6 +14,7 @@ from python.helpers.print_style import PrintStyle
14
from python.helpers.dotenv import load_dotenv
15
from python.helpers import persist_chat, settings
16
from werkzeug.utils import secure_filename
17
+from python.helpers.cloudflare_tunnel import CloudflareTunnel
18
19
20
# initialize the internal Flask server
@@ -465,10 +466,32 @@ def run():
466
def log_request(self, code="-", size="-"):
467
pass # Override to suppress request logging
468
468
- # run the server on port from .env
469
+ # Get configuration from environment
470
port = int(os.environ.get("WEB_UI_PORT", 0)) or None
470
- app.run(request_handler=NoRequestLoggingWSGIRequestHandler, port=port)
471
+ host = os.environ.get("WEB_UI_HOST") or None
472
+ use_cloudflare = os.environ.get("USE_CLOUDFLARE", "false").lower() == "true"
473
+
474
+ # Initialize and start Cloudflare tunnel if enabled
475
+ tunnel = None
476
+ if use_cloudflare and port:
477
+ try:
478
+ tunnel = CloudflareTunnel(port)
479
+ tunnel.start()
480
+ except Exception as e:
481
+ print(f"Failed to start Cloudflare tunnel: {e}")
482
+ print("Continuing without tunnel...")
483
484
+ try:
485
+ # Run Flask app
486
+ app.run(
487
+ request_handler=NoRequestLoggingWSGIRequestHandler,
488
+ port=port,
489
+ host=host
490
+ )
491
+ finally:
492
+ # Clean up tunnel if it was started
493
+ if tunnel:
494
+ tunnel.stop()
495
496
# run the internal server
497
if __name__ == "__main__":