import subprocess import time import os from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def health_check(): return jsonify({"status": "3x-ui is running"}) @app.route('/health') def health(): # Check if 3x-ui process is alive result = subprocess.run(['pgrep', 'x-ui'], capture_output=True) if result.returncode == 0: return jsonify({"status": "healthy"}), 200 return jsonify({"status": "unhealthy"}), 503 if __name__ == '__main__': # Change port subprocess.run(['/usr/bin/x-ui', 'setting', '-port', '7860']) # Start 3x-ui in background subprocess.Popen(['/usr/bin/x-ui', 'start']) time.sleep(5) # Run Flask on the same port? No, it's occupied. # We'll run Flask on port 7860 and use it as a reverse proxy, or run on a different port. # Actually, we can run Flask on 7860 and forward requests to 3x-ui on a different port. # But 3x-ui is listening on 7860. This is conflicting. # Solution: Run 3x-ui on 8080, and Flask on 7860 and proxy. # Or run Flask on 7860 and 3x-ui on another port. Let's do Flask on 7860 and proxy. # But then we need to implement a proxy in Flask. # It's more complex. The start.sh approach is simpler.