{"timestamp":"2026-02-10T13:07:26.969006Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-10T13:07:26.969081Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969303Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-10T13:07:26.969331Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969365Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969377Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969406Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:26.969420Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-10T13:07:26.969469Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969479Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969481Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:26.969477Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 0): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969481Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 1): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969485Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 2): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969497Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 6): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969510Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 10): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969512Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 12): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969498Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 4): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969505Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 8): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969516Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:26.969519Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 3): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969530Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 7): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969533Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 11): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969534Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 13): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969542Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 5): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969548Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 9): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969555Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 14): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969570Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 3): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969567Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 0): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969574Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 5): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969577Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 6): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969581Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 8): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969585Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 2): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969592Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 10): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969594Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 15): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969609Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 9): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969596Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 13): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969598Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 11): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969597Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 4): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969602Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 1): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969605Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 14): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969605Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 7): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969623Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 12): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969610Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 15): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:27.033417Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:27.033469Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:27.035065Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 127286"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.068632Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.069389Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.069435Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:28.069446Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.071105Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 127326"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:29.097887Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:29.098623Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:57.310226Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:57.311783Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 127778"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:58.343904Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:58.344569Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:58.344595Z","level":"INFO","fields":{"message":"Updated route for domain proxy.solisoft.net -> http://localhost:21175"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:58.344760Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-10T13:08:05.471411Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:05.472749Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 127881"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:06.505286Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:06.505706Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:35.777305Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:35.778664Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 128336"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:36.810014Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:36.810610Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:04.601562Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:04.603736Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 128820"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:05.637522Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:05.637935Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:17:19.600891Z","level":"INFO","fields":{"message":"Received SIGTERM, shutting down..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.901863Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902369Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:25:01.902432Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902730Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:25:01.902913Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902926Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902945Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902969Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903005Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:25:01.903093Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903092Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:01.903112Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:01.903179Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903243Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903306Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903341Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903385Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903420Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004376Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004385Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004379Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004407Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004401Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004412Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004412Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004439Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004440Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004466Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004471Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004488Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004554Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004491Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004507Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004518Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004547Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004553Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004559Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004558Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004566Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004568Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004574Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004577Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004580Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004584Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004587Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004597Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.005913Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2563001"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.006001Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2563003"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.006144Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2563002"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.017294Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2563037"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.017850Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2563038"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.018129Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2563039"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.018666Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2563040"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.390896Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:03.008125Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008212Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008229Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008240Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008253Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008264Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008277Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008282Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008309Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008313Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008329Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008331Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563001"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008340Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563003"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008345Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008358Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008369Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008378Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008385Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008393Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008425Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008458Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019025Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019046Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019068Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019101Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563039"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019098Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019110Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019116Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563038"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019121Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019140Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019150Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019195Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019211Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019219Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019250Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019585Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019597Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019601Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563037"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019605Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019610Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019613Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019630Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031656Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.031698Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.031709Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563040"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031717Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031727Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031735Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031784Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.521438Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:08.575762Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.390028Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.390066Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2563003)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.445785Z","level":"INFO","fields":{"message":"Process 2563003 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.445854Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2563039)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.501309Z","level":"INFO","fields":{"message":"Process 2563039 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.501346Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2563040)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.504295Z","level":"INFO","fields":{"message":"Process 2563040 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.504326Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2563001)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.558437Z","level":"INFO","fields":{"message":"Process 2563001 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.558474Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2563037)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.613572Z","level":"INFO","fields":{"message":"Process 2563037 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.613593Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2563038)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.667841Z","level":"INFO","fields":{"message":"Process 2563038 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.667866Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2563002)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.671049Z","level":"INFO","fields":{"message":"Process 2563002 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.892571Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.892942Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:25:12.892990Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893203Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:25:12.893333Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893342Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893359Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893369Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893395Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:25:12.893462Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.893469Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.893471Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893533Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893571Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893609Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893637Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893674Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893704Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.944074Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.944570Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.954265Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:21917/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.992910Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992918Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992921Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992932Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992936Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992939Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992945Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992951Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992957Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992982Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992963Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992957Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992976Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992972Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992986Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992990Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.992993Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.993003Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.993023Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.993026Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994681Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2563312"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994814Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2563313"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994816Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2563314"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994836Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.994840Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.995972Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2563316"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996001Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.996006Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996724Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2563317"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996755Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.996763Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996774Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.996785Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.997456Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2563323"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.997751Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2563329"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.181940Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:21917/docs/getting-started)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:13.514562Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:13.812453Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:13.996652Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996709Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996725Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563312"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996743Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996756Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996768Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996855Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996877Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996895Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996902Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563313"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996907Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996914Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996919Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996938Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997049Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.997058Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.997063Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563316"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997068Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997073Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997078Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997092Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998593Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998634Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998647Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563317"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998660Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998697Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998706Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998743Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998785Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998797Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998818Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563323"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998830Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998839Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998847Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998876Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998913Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998926Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998937Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563329"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998944Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998953Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998960Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998990Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.007993Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:14.008033Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:14.008046Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563314"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008058Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008071Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008078Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008112Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.275891Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.275963Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276278Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276876Z","level":"INFO","fields":{"message":"Added route for domain solisoft.net -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276892Z","level":"INFO","fields":{"message":"Added route for domain www.solisoft.test -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276899Z","level":"INFO","fields":{"message":"Added route for domain www.solisoft.net -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276992Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:26:11.277010Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.277016Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.277022Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.277027Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:11.278541Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2563894"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:13.105391Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:13.105436Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:13.606949Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:13.607015Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.109009Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.109068Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.284973Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 3s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:14.285035Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:14.285049Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563894"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285063Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285077Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285089Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285154Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.610920Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.610997Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.112881Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.112931Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.615413Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.615480Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.117182Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.117252Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.618864Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.618927Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:17.121244Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:17.121320Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.075561Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.075645Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2563894)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.130916Z","level":"INFO","fields":{"message":"Process 2563894 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.130951Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2563312)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.133239Z","level":"INFO","fields":{"message":"Process 2563312 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.133265Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2563313)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.187136Z","level":"INFO","fields":{"message":"Process 2563313 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.187151Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2563317)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.241195Z","level":"INFO","fields":{"message":"Process 2563317 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.241233Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2563323)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.295239Z","level":"INFO","fields":{"message":"Process 2563323 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.295275Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2563314)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.350310Z","level":"INFO","fields":{"message":"Process 2563314 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.350352Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2563329)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.405030Z","level":"INFO","fields":{"message":"Process 2563329 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.405067Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2563316)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.460257Z","level":"INFO","fields":{"message":"Process 2563316 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.578143Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578498Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:26:51.578549Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578720Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:26:51.578861Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578867Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578878Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578895Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.578918Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:26:51.578978Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:51.578983Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:51.578995Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579057Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579078Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579105Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579143Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579166Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579204Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579228Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.674655Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:26:51.684132Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:26:51.685428Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685432Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685434Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685440Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685439Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685448Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685446Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685450Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685449Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685459Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685463Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685463Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685465Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685463Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685471Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685474Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685478Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685483Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685488Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685485Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685491Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685495Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685499Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685500Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685502Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685507Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685507Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685512Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685513Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685519Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.687008Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2564346"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.687105Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2564347"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.700887Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2564370"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.700885Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2564371"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701429Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2564372"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701484Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.701493Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701907Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2564374"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701905Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2564373"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.702301Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2564375"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.549029Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:52.567708Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:52.688731Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.688771Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.688783Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564347"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688790Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688833Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688844Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688893Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701177Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.701196Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.701201Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564346"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701204Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701210Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701213Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701235Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703017Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703032Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703037Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564371"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703040Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703055Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703058Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703076Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703139Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703157Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703165Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703206Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703211Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564372"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703209Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564370"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703214Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703221Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703225Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703227Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703233Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703236Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703261Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703278Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703298Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703320Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703328Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564373"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703336Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703359Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703368Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703419Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703721Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703738Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703745Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564374"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703752Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703760Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703766Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703827Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703828Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703838Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703841Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564375"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703843Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703847Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703849Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703898Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:27:18.992831Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:29:54.098878Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.098909Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099037Z","level":"INFO","fields":{"message":"Discovered new app: www.defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099503Z","level":"INFO","fields":{"message":"Added route for domain www.defycards.test -> http://localhost:9002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099509Z","level":"INFO","fields":{"message":"Added route for domain defycards.com -> http://localhost:9002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099513Z","level":"INFO","fields":{"message":"Added route for domain www.defycards.com -> http://localhost:9002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099565Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:29:54.099584Z","level":"INFO","fields":{"message":"Auto-starting app: www.defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099586Z","level":"INFO","fields":{"message":"Starting deploy for www.defycards.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099588Z","level":"INFO","fields":{"message":"Deploying www.defycards.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099591Z","level":"INFO","fields":{"message":"Starting deployment of www.defycards.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:54.100582Z","level":"INFO","fields":{"message":"Started www.defycards.com slot blue with PID 2565458"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:54.611077Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.611108Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102770Z","level":"INFO","fields":{"message":"Health check passed for www.defycards.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:55.102841Z","level":"INFO","fields":{"message":"Health check passed for www.defycards.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:55.102856Z","level":"INFO","fields":{"message":"Deploy started, PID: 2565458"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102864Z","level":"INFO","fields":{"message":"Current slot: www.defycards.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102872Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102879Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102938Z","level":"INFO","fields":{"message":"Deploy completed for www.defycards.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.112127Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.112155Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.614603Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.614646Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.116314Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.116362Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.618762Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.618790Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.120319Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.120358Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.622655Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.622685Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.125090Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.125189Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.627925Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.627964Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.130725Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.130786Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.632179Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.632207Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:00.134614Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:00.134648Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.782502Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.782553Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783192Z","level":"INFO","fields":{"message":"Removing orphaned route for domain www.defycards.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783205Z","level":"INFO","fields":{"message":"Removing orphaned route for domain defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783214Z","level":"INFO","fields":{"message":"Removing orphaned route for domain www.defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783434Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:30:25.284524Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:25.284563Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:25.785949Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:25.785995Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.182098Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:30:26.288598Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.288676Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.790377Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.790445Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.292171Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.292222Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.794803Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.794870Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.296536Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.296579Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.798063Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.798103Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:29.300387Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:29.300794Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:31.125778Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:31.125862Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:58.528382Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:58.528436Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:09.835665Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:09.835717Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:36.936963Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:36.937018Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:35:54.351864Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:35:54.351949Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:05.972323Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:05.972375Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:28.057064Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:28.057125Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:54.203577Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:54.203650Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:38:17.646043Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:38:17.646131Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:45.991517Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:45.991578Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2564374)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.047701Z","level":"INFO","fields":{"message":"Process 2564374 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.047734Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2564375)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.102831Z","level":"INFO","fields":{"message":"Process 2564375 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.102909Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2564370)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.105202Z","level":"INFO","fields":{"message":"Process 2564370 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.105216Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2564371)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.160200Z","level":"INFO","fields":{"message":"Process 2564371 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.160228Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2564372)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.214874Z","level":"INFO","fields":{"message":"Process 2564372 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.214893Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2564373)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.217135Z","level":"INFO","fields":{"message":"Process 2564373 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.217149Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2564346)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.272272Z","level":"INFO","fields":{"message":"Process 2564346 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.272300Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2564347)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.326239Z","level":"INFO","fields":{"message":"Process 2564347 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.493926Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494317Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:39:46.494360Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494552Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:39:46.494701Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494705Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494716Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494739Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494757Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:39:46.494830Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:46.494837Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:46.494837Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494885Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494909Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494936Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494972Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494997Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.495036Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.495060Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.541922Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:39:46.547231Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:39:46.603907Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603912Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603906Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603934Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603933Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603939Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603941Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603936Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603943Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603946Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.603946Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603950Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603943Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603951Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603952Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.603975Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603955Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.603958Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603961Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603966Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603979Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603981Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603985Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604000Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604001Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604003Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604001Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604008Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604010Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604013Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604029Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604045Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.605379Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2568879"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.605544Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2568880"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.616411Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2568893"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.616776Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2568894"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.617482Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2568895"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.617862Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2568896"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.617882Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2568898"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.618246Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2568899"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.539332Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:47.556573Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:47.606998Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607080Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607116Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568879"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607127Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607145Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607152Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607191Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607210Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607224Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607238Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568880"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607248Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607260Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607267Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607336Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618025Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.618061Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.618072Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568893"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618079Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618087Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618093Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618133Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620018Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620033Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620038Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568899"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620042Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620046Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620050Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620083Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620128Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620133Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620135Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568896"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620138Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620141Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620143Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620141Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620151Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620154Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568898"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620162Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620166Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620169Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620171Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620186Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620228Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620250Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620258Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568895"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620265Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620272Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620277Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620328Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631096Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.631117Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.631124Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568894"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631139Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631146Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631151Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631186Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:27.778767Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:27.778823Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2568895)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.834111Z","level":"INFO","fields":{"message":"Process 2568895 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.834149Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2568899)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.889027Z","level":"INFO","fields":{"message":"Process 2568899 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.889068Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2568893)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.944011Z","level":"INFO","fields":{"message":"Process 2568893 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.944046Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2568896)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.945967Z","level":"INFO","fields":{"message":"Process 2568896 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.945985Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2568880)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.001019Z","level":"INFO","fields":{"message":"Process 2568880 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.001053Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2568879)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.003341Z","level":"INFO","fields":{"message":"Process 2568879 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.003365Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2568898)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.005586Z","level":"INFO","fields":{"message":"Process 2568898 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.005600Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2568894)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.060075Z","level":"INFO","fields":{"message":"Process 2568894 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.678928Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679285Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:41:55.679329Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679512Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:41:55.679641Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679645Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679652Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679678Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679693Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:41:55.679754Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:41:55.679760Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:41:55.679780Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679846Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679868Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679895Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679931Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679954Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679990Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.680014Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788790Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788794Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788875Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788801Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788879Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788830Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788880Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788867Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788833Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788893Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788895Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788891Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788901Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788904Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788905Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788911Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788916Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788923Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788933Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.788942Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.790577Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2570678"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.790605Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.790607Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.790916Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2570679"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.791698Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2570680"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.791710Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.791713Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.792352Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2570682"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.792376Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.792378Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.792408Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.792416Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.793485Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2570684"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.793613Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2570685"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.793628Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.793631Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.794266Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2570687"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.794294Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.794305Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.795053Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2570708"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793506Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793551Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793563Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570682"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793571Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793584Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793592Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793648Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793730Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793744Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793750Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570678"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793756Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793762Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793767Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793825Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794169Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794172Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794181Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794181Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794184Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570684"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794186Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570680"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794187Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794191Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794196Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794210Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794214Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794216Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794236Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794253Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795618Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795631Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795634Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570687"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795637Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795640Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795643Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795648Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795656Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795659Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570685"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795669Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795675Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795680Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795683Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795704Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795963Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795972Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795975Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570708"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795978Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795981Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795983Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.796006Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804638Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.804664Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.804672Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570679"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804678Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804686Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804692Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804734Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:00.509117Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:00.525017Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:46.877993Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:46.878043Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2570682)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.943133Z","level":"INFO","fields":{"message":"Process 2570682 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.943157Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2570685)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.998404Z","level":"INFO","fields":{"message":"Process 2570685 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.998438Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2570687)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.054414Z","level":"INFO","fields":{"message":"Process 2570687 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.054445Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2570708)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.108906Z","level":"INFO","fields":{"message":"Process 2570708 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.108934Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2570679)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.164804Z","level":"INFO","fields":{"message":"Process 2570679 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.164862Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2570680)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.219090Z","level":"INFO","fields":{"message":"Process 2570680 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.219108Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2570684)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.274356Z","level":"INFO","fields":{"message":"Process 2570684 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.274411Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2570678)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.330527Z","level":"INFO","fields":{"message":"Process 2570678 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.380771Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:42:47.380840Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381027Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:42:47.381157Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381162Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381175Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381186Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381211Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:42:47.381264Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:47.381269Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:47.381283Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381337Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381358Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381388Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381424Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381447Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381484Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381507Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381535Z","level":"INFO","fields":{"message":"Removing orphaned route for domain proxy.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381540Z","level":"INFO","fields":{"message":"Removing orphaned route for domain kv.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381543Z","level":"INFO","fields":{"message":"Removing orphaned route for domain host.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381545Z","level":"INFO","fields":{"message":"Removing orphaned route for domain soli.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381549Z","level":"INFO","fields":{"message":"Removing orphaned route for domain db.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381552Z","level":"INFO","fields":{"message":"Removing orphaned route for domain agenda.letelegraphe.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381554Z","level":"INFO","fields":{"message":"Removing orphaned route for domain www.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381660Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:42:47.487505Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487505Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487514Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487546Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487535Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487542Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487550Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487546Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487554Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487557Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487556Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487558Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487566Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.487562Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487568Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487561Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487567Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487567Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.487577Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487579Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487580Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487593Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489130Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2571565"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489141Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2571566"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489182Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.489192Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489517Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2571567"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490297Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2571569"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490311Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.490314Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490939Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2571570"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490962Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.490964Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490980Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.490986Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.491804Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2571587"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.492460Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2571602"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.492479Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.492485Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.493195Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2571627"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.543724Z","level":"ERROR","fields":{"message":"Backend rejected WebSocket upgrade: HTTP/1.1 404 Not Found"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:42:47.966257Z","level":"ERROR","fields":{"message":"Backend rejected WebSocket upgrade: HTTP/1.1 404 Not Found"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:42:48.492058Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492125Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492134Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571567"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492144Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492162Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492171Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492227Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492324Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492354Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492359Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571566"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492362Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492366Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492398Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492411Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492486Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492500Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492503Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571570"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492507Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492510Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492513Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492528Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492543Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492547Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492550Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571569"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492552Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492555Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492557Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492566Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492834Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492844Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492847Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571587"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492849Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492852Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492860Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492870Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494268Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494277Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494280Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571602"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494283Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494286Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494289Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494299Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494371Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494375Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494378Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571627"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494380Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494383Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494386Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494394Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504766Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.504787Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.504794Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571565"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504800Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504815Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504825Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504847Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.778081Z","level":"ERROR","fields":{"message":"Backend rejected WebSocket upgrade: HTTP/1.1 404 Not Found"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:44:17.124904Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.124943Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2571566)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.187873Z","level":"INFO","fields":{"message":"Process 2571566 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.187899Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2571569)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.243052Z","level":"INFO","fields":{"message":"Process 2571569 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.243114Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2571602)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.245335Z","level":"INFO","fields":{"message":"Process 2571602 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.245351Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2571627)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.299304Z","level":"INFO","fields":{"message":"Process 2571627 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.299344Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2571570)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.301698Z","level":"INFO","fields":{"message":"Process 2571570 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.301711Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2571567)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.356254Z","level":"INFO","fields":{"message":"Process 2571567 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.356299Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2571587)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.411050Z","level":"INFO","fields":{"message":"Process 2571587 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.411093Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2571565)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.466955Z","level":"INFO","fields":{"message":"Process 2571565 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.627286Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.627660Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:44:17.627706Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.627898Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:44:17.628029Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.628033Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.628044Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.628062Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628080Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:44:17.628142Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:17.628150Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628153Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:17.628190Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628207Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628234Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628271Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628295Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628331Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628354Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628390Z","level":"INFO","fields":{"message":"Added route for domain proxy.solisoft.test -> http://localhost:17475"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628395Z","level":"INFO","fields":{"message":"Added route for domain kv.solisoft.test -> http://localhost:21917"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628399Z","level":"INFO","fields":{"message":"Added route for domain soli.solisoft.test -> http://localhost:24003"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628402Z","level":"INFO","fields":{"message":"Added route for domain www.solisoft.test -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628405Z","level":"INFO","fields":{"message":"Added route for domain db.solisoft.test -> http://localhost:23684"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628408Z","level":"INFO","fields":{"message":"Added route for domain host.solisoft.test -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628411Z","level":"INFO","fields":{"message":"Added route for domain agenda.letelegraphe.test -> http://localhost:22178"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628517Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:44:17.735665Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735670Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735661Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735676Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735694Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735692Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735698Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735713Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735716Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735725Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735727Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735728Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735733Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735737Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735734Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735738Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735755Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735759Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735762Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735765Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.735769Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.735773Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.737397Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2571968"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.737483Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2571969"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.738218Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2571970"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.738234Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.738237Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.739325Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2571972"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.739342Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.739344Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.739982Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2571976"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.740013Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.740016Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.740029Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.740039Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.740988Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2571991"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.741100Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2571996"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.741115Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.741119Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.741851Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2571999"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739560Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739561Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739592Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739597Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571969"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739601Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739600Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739610Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739611Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571970"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739614Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739618Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739679Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739700Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739706Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739739Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741079Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741095Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741098Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571972"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741101Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741105Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741119Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741141Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741419Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741426Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741428Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571976"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741431Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741434Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741436Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741451Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743085Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743112Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743120Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571991"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743126Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743134Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743126Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743139Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743150Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743159Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571996"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743193Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743205Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743212Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743217Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743259Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744018Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.744034Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.744051Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571999"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744057Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744063Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744068Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744103Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751749Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.751774Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.751780Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571968"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751785Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751790Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751795Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751838Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:19.360907Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:19.376993Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:19.393358Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:05.848007Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:05.848058Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2571970)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.903202Z","level":"INFO","fields":{"message":"Process 2571970 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.903239Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2571991)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.906067Z","level":"INFO","fields":{"message":"Process 2571991 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.906079Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2571968)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.960724Z","level":"INFO","fields":{"message":"Process 2571968 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.960755Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2571996)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.015358Z","level":"INFO","fields":{"message":"Process 2571996 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.015423Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2571999)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.070407Z","level":"INFO","fields":{"message":"Process 2571999 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.070433Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2571976)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.125978Z","level":"INFO","fields":{"message":"Process 2571976 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.126005Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2571972)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.181014Z","level":"INFO","fields":{"message":"Process 2571972 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.181047Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2571969)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.235197Z","level":"INFO","fields":{"message":"Process 2571969 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.350498Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351019Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:49:06.351069Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351317Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:49:06.351491Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351495Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351505Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351524Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351544Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:49:06.351596Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.351601Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.351636Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351697Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351716Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351743Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351779Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351803Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351844Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351872Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458609Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458618Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458618Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458640Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458646Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458653Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458652Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458661Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458670Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458678Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458684Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458687Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458691Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458685Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458693Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458692Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458702Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.458705Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.460028Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2573532"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.460063Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.460067Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.460756Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2573533"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.460779Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.460781Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.461866Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2573535"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.461888Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.461890Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.461914Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.461922Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.462914Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2573536"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.463099Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2573539"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.463113Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.463116Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464104Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2573549"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464124Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.464127Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464770Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2573561"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464787Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.464791Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.465421Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2573563"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.544999Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.545462Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.553647Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:07.462184Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.462247Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.462258Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573533"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462267Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462281Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462292Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462368Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463014Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.463034Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.463052Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573535"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463057Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463062Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463065Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463099Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464730Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464759Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464767Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573536"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464774Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464785Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464791Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464878Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464924Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464930Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464934Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573539"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464938Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464943Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464945Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464968Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465153Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465166Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465172Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573549"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465177Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465183Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465188Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465240Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465662Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465674Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465680Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573561"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465686Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465692Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465697Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465735Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467355Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.467381Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.467389Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573563"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467395Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467402Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467408Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467468Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474181Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.474210Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.474218Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573532"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474224Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474231Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474237Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474275Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.507988Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:07.522003Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:07.535510Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:51:43.363786Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:51:43.363920Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:52:06.524478Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:52:06.524527Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:54:12.228707Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:54:12.228757Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:01.939525Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:01.939573Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:13.976366Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:13.976437Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:39.101359Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:39.101426Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:59:34.001922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:59:34.001973Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.283945Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.283975Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2573539)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.339442Z","level":"INFO","fields":{"message":"Process 2573539 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.339479Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2573535)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.394944Z","level":"INFO","fields":{"message":"Process 2573535 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.394985Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2573533)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.448941Z","level":"INFO","fields":{"message":"Process 2573533 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.448958Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2573536)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.502894Z","level":"INFO","fields":{"message":"Process 2573536 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.502914Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2573549)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.557926Z","level":"INFO","fields":{"message":"Process 2573549 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.557945Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2573532)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.612123Z","level":"INFO","fields":{"message":"Process 2573532 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.612137Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2573561)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.666861Z","level":"INFO","fields":{"message":"Process 2573561 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.666894Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2573563)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.722419Z","level":"INFO","fields":{"message":"Process 2573563 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.786587Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787110Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:06:11.787158Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787402Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T12:06:11.787540Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787545Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787557Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787574Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787601Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T12:06:11.787682Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787681Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:11.787688Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:11.787732Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787749Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787775Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787816Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787844Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787881Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787905Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894471Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894468Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894495Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894499Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894536Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894533Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894493Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894503Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894506Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894528Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894541Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894542Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894544Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894548Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894551Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894554Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894554Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894557Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.896026Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2578918"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.896048Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.896051Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.897130Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2578919"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.897150Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.897153Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.897175Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.897183Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.898373Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2578920"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.898393Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2578921"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.898428Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.898441Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.899495Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2578941"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.899553Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.899560Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.900308Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2578946"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.900329Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.900332Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.900345Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.900352Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.901007Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2578947"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.901261Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2578949"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.549609Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:12.549961Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:12.556615Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:12.897265Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.897311Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.897318Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578918"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897327Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897337Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897340Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897387Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899154Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899180Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899186Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578919"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899193Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899215Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899219Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899263Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899901Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899921Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899925Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578921"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899930Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899934Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899937Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899973Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901516Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901533Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901537Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578946"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901540Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901544Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901547Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901572Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901590Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901595Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901598Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578941"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901601Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901604Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901606Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901622Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901765Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901783Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901787Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578947"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901791Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901795Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901797Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901829Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903234Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.903245Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.903248Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578949"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903251Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903255Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903257Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903274Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911168Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.911187Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.911194Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578920"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911199Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911205Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911210Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911245Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:13.506358Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:13.525354Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:13.541517Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:09:06.905627Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:09:06.905698Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:10:23.774785Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:10:23.774855Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:09.616903Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:09.616953Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:13.215980Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:13.216028Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:29.190702Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:29.190771Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:12:26.572644Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:12:26.572721Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:04.553443Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:04.553479Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:14.754569Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:14.754602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:14:51.457611Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:14:51.457662Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:12.354566Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:12.354618Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:27.752181Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:27.752216Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:08.148477Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:08.148548Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:23.171328Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:23.171381Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:31.998484Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:31.998559Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:43.978931Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:43.978973Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:10.163752Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:10.163836Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:28.076633Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:28.076668Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:25.216382Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:25.216433Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:51.089450Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:51.089503Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:04.217437Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:04.217473Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:07.947586Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:07.947632Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:14.573422Z","level":"INFO","fields":{"message":"Circuit breaker reset for http://localhost:24003/"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T12:24:36.556464Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:36.556540Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:52.091381Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:52.091453Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:56.820373Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:56.820428Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:06.215930Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:06.215996Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:10.036783Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:10.036818Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:31.453932Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:31.453984Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:39.829336Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:39.829404Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:17.170859Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:17.170958Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:30.810490Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:30.810543Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:32.719495Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:32.719551Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:32.719563Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:32.721645Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot green with PID 2584029"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.724056Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.724106Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.724120Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584029"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724131Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: Some(2578921)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724160Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724166Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724172Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 2578921)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724176Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2578921)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.780580Z","level":"INFO","fields":{"message":"Process 2578921 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.780617Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.780685Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.780700Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.780945Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:32:33.780962Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:39.023380Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:39.023455Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:39.023469Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:39.026186Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2584091"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.028707Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.028802Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.028834Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584091"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028846Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: green, old_pid: Some(2584029)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028861Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028868Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028874Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 2584029)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028881Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot green (PID: 2584029)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.084353Z","level":"INFO","fields":{"message":"Process 2584029 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.084380Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.084438Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.084447Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.084620Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:32:40.084643Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:51.319020Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2584091)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:51.374291Z","level":"INFO","fields":{"message":"Process 2584091 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:51.374347Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:51.374362Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:51.374380Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:51.375620Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2584236"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:52.378166Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:52.378214Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:52.378229Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584236"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378239Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378255Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378265Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378353Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:59.898886Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2578919)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:59.955584Z","level":"INFO","fields":{"message":"Process 2578919 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:59.955611Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:59.955618Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:59.955623Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:59.956743Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2584313"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:33:00.959450Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:33:00.959518Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:33:00.959537Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584313"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959549Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959565Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959574Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959683Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:34.464691Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2584236)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:34.519721Z","level":"INFO","fields":{"message":"Process 2584236 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:40.976532Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:36:41.014878Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/favicon.ico)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:36:43.283293Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:43.283314Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:43.283318Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:43.284698Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot green with PID 2585898"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:44.286846Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:44.286935Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:44.286984Z","level":"INFO","fields":{"message":"Deploy started, PID: 2585898"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.286993Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287009Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287015Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287024Z","level":"WARN","fields":{"message":"No PID found for old slot blue (status may already be stopped)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287082Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287098Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.316727Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:36:44.316782Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:46.553556Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:46.553600Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:46.553610Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:46.556059Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2585932"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.557608Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.557653Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.557664Z","level":"INFO","fields":{"message":"Deploy started, PID: 2585932"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557673Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: green, old_pid: Some(2585898)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557686Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557693Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557699Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 2585898)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557705Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot green (PID: 2585898)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.612826Z","level":"INFO","fields":{"message":"Process 2585898 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.612851Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.612896Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.612905Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.613073Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:36:47.613088Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:50.573120Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:44:35.441560Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:44:35.441640Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:44:51.203393Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:44:51.203448Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:45:02.011757Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:45:02.011836Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.196008Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.196060Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2578920)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.252409Z","level":"INFO","fields":{"message":"Process 2578920 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.252451Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2585932)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.307001Z","level":"INFO","fields":{"message":"Process 2585932 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.307028Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2578918)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.361271Z","level":"INFO","fields":{"message":"Process 2578918 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.361307Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2578941)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.415576Z","level":"INFO","fields":{"message":"Process 2578941 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.415620Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2578947)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.418356Z","level":"INFO","fields":{"message":"Process 2578947 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.418368Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2578949)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.473736Z","level":"INFO","fields":{"message":"Process 2578949 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.473767Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2584313)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.529377Z","level":"INFO","fields":{"message":"Process 2584313 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.529418Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2578946)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.584714Z","level":"INFO","fields":{"message":"Process 2578946 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.698384Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.698781Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:35:15.698828Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699012Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T13:35:15.699151Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699155Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699165Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699183Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699203Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:35:15.699260Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.699265Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.699273Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699330Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699351Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699384Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699421Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699444Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699481Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699505Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.830860Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.831360Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.841048Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.884659Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884658Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884669Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884678Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884691Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884695Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884699Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884696Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884710Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884709Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884727Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884726Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884730Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884731Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884735Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884738Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884742Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.884749Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.884743Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884745Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.886169Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2594851"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.886884Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2594852"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.886901Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.886904Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.887977Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2594853"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.888003Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.888008Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.889216Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2594857"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.889247Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.889250Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.889276Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.889288Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.890067Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2594877"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.890346Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2594878"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.890361Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.890364Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.891054Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2594881"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.891077Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.891082Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.892116Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2594883"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.252221Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:16.252449Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:16.258903Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:16.888754Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888754Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888805Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888856Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888882Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594852"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888904Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888901Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594851"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888917Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888929Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888937Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889000Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889023Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889051Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889112Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890259Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890275Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890279Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594853"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890282Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890286Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890288Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890309Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890377Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890382Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890385Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594857"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890387Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890390Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890393Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890409Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892225Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.892246Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.892249Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594877"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892252Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892255Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892258Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892274Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893132Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893144Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893155Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594881"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893159Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893164Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893166Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893182Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893619Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893625Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893628Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594883"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893631Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893634Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893636Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893652Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903499Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.903517Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.903520Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594878"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903523Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903527Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903530Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903548Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:17.064304Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:36:09.443850Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:09.443905Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:09.443918Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:09.446399Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot green with PID 2595111"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.449506Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.449575Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.449586Z","level":"INFO","fields":{"message":"Deploy started, PID: 2595111"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449594Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: Some(2594883)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449617Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449625Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449634Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 2594883)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449641Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2594883)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.504953Z","level":"INFO","fields":{"message":"Process 2594883 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.504975Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.505009Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.org -> http://localhost:15109"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.505015Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.test -> http://localhost:15109"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.505136Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:36:10.505141Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:22.488277Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:22.488335Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:22.488347Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:22.490739Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2595162"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.492895Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.492927Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.492935Z","level":"INFO","fields":{"message":"Deploy started, PID: 2595162"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492941Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: green, old_pid: Some(2595111)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492949Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492953Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492961Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 2595111)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492985Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot green (PID: 2595111)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.561884Z","level":"INFO","fields":{"message":"Process 2595111 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.561919Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.561983Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.org -> http://localhost:22178"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.561993Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.test -> http://localhost:22178"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.562215Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:36:23.562256Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:07.786575Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:07.786611Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2594881)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.841298Z","level":"INFO","fields":{"message":"Process 2594881 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.841336Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2594877)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.896095Z","level":"INFO","fields":{"message":"Process 2594877 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.896133Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2594857)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.951232Z","level":"INFO","fields":{"message":"Process 2594857 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.951272Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2594853)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.005976Z","level":"INFO","fields":{"message":"Process 2594853 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.006011Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2594851)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.059683Z","level":"INFO","fields":{"message":"Process 2594851 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.059724Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2594878)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.113628Z","level":"INFO","fields":{"message":"Process 2594878 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.113661Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2594852)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.116099Z","level":"INFO","fields":{"message":"Process 2594852 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.116117Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2595162)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.169696Z","level":"INFO","fields":{"message":"Process 2595162 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.288353Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288670Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:42:08.288700Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288864Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T13:42:08.288974Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288977Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288985Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.289003Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289015Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.289072Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289075Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.289079Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.289109Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289125Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289147Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289172Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289189Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289216Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289232Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.385090Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.390943Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.407128Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407130Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407141Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407159Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407162Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407163Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407160Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407167Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407168Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407168Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407183Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407185Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407186Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407186Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.407188Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407188Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407190Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407191Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.408752Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2599110"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.408800Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.408818Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.410149Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2599111"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.410227Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.410232Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.410903Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.410933Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.414913Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2599112"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.416964Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2599113"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.417021Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.417027Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.425902Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2599116"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.425972Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.425977Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.430921Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2599118"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.430994Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.431000Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.433088Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.433128Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.438366Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2599120"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.438581Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2599119"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.514473Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.518113Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.530619Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.798672Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.802207Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:09.424939Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:09.424969Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:09.424976Z","level":"INFO","fields":{"message":"Deploy started, PID: 2599112"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.424982Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.424988Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.424993Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.425031Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.489552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:09.489755Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:09.492548Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:09.610788Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:09.615249Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:10.484501Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:10.485094Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:10.490874Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:11.222486Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:11.226184Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:12.490393Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:12.490659Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:12.493451Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:13.058505Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:16.486672Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:16.486912Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:16.490678Z","level":"WARN","fields":{"message":"Circuit breaker OPEN for http://localhost:19228/ (5 consecutive failures)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T13:42:16.490707Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:22.495303Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:22.495544Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:28.494763Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:28.496863Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:34.510889Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:34.511166Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:38.484464Z","level":"ERROR","fields":{"message":"Failed to auto-start _admin: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484464Z","level":"ERROR","fields":{"message":"Failed to auto-start kv.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484511Z","level":"ERROR","fields":{"message":"Failed to auto-start host.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484546Z","level":"ERROR","fields":{"message":"Failed to auto-start www.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484546Z","level":"ERROR","fields":{"message":"Failed to auto-start agenda.letelegraphe.org: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484562Z","level":"ERROR","fields":{"message":"Failed to auto-start soli.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484565Z","level":"ERROR","fields":{"message":"Failed to auto-start proxy.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:40.500362Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:40.500582Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:46.516935Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:46.517138Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:46.520748Z","level":"WARN","fields":{"message":"Circuit breaker re-OPENED for http://localhost:19228/ (probe failed)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T13:42:46.520768Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:58:58.531037Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:58.531101Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2599112)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:58.587071Z","level":"INFO","fields":{"message":"Process 2599112 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.033455Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.036231Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:58:59.036342Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037016Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T13:58:59.037242Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037248Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037260Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037279Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037324Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:58:59.037351Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:58:59.037356Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:58:59.037360Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037416Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037436Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037479Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037523Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037545Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037580Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037600Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163977Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163973Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163975Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163994Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164006Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164010Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164015Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164019Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164029Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164044Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164053Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164058Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164060Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164058Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164063Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164081Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164065Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164070Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164075Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164078Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164080Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164082Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164085Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164090Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164096Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164111Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164120Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164118Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.165763Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2613119"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.166170Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2613121"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.166181Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2613120"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178359Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2613155"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178762Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2613156"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178841Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.178857Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178900Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2613157"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.179918Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2613159"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.179976Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.179986Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.180776Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2613160"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.168983Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.169031Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.169040Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613119"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169048Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169070Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169075Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169114Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170757Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.170771Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.170775Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613120"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170778Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170783Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170786Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170821Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171158Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.171186Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.171194Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613121"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171202Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171210Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171215Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171265Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180154Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180185Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180192Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613157"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180199Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180207Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180213Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180254Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180290Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180331Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180337Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613156"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180343Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180349Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180355Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180393Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181863Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181880Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181885Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613159"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181889Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181893Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181897Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181921Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181972Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181976Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181979Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613160"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181981Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181984Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181987Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.182002Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.193970Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.194000Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.194008Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613155"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194015Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194022Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194040Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194089Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T14:00:34.348902Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T14:00:34.348937Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2613155)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.404776Z","level":"INFO","fields":{"message":"Process 2613155 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.404842Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2613121)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.459843Z","level":"INFO","fields":{"message":"Process 2613121 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.459878Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2613156)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.515129Z","level":"INFO","fields":{"message":"Process 2613156 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.515173Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2613159)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.570129Z","level":"INFO","fields":{"message":"Process 2613159 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.570167Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2613120)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.624115Z","level":"INFO","fields":{"message":"Process 2613120 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.624145Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2613119)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.679129Z","level":"INFO","fields":{"message":"Process 2613119 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.679170Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2613160)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.734687Z","level":"INFO","fields":{"message":"Process 2613160 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.734733Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2613157)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.790006Z","level":"INFO","fields":{"message":"Process 2613157 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.586921Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.589268Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T15:48:11.589322Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.589493Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T15:48:11.590163Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.590171Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.590186Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.590233Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590264Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T15:48:11.590300Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T15:48:11.590305Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T15:48:11.590415Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590508Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590542Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590597Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590672Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590723Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590802Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590873Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696413Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696411Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696427Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696433Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696446Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696449Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696449Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696454Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696456Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696461Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696462Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696462Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696467Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696466Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696472Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.696475Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696475Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696499Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.697883Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2676136"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.697908Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.697911Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.698924Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2676137"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.698940Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.698942Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.700003Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2676139"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.700023Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.700026Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.700049Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.700057Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.701222Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2676140"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.701566Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2676141"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.701598Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.701605Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.703934Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2676158"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.703995Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.704000Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.705132Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2676166"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.705167Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.705173Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.705990Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2676167"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.701223Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.701274Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.701284Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676137"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701295Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701307Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701316Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701389Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.702972Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.702989Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.702993Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676140"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.702998Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703003Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703006Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703032Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703159Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.703171Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.703175Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676141"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703179Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703183Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703186Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703209Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705638Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.705660Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.705666Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676139"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705672Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705695Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705708Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705755Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706008Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706036Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706043Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676158"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706050Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706057Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706062Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706101Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706172Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706182Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706187Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676166"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706193Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706199Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706204Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706237Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710272Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.710302Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.710309Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676167"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710315Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710322Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710328Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710370Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713316Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.713333Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.713336Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676136"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713339Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713341Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713344Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713358Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.867466Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T15:48:14.196846Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:56:25.024639Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:56:44.694850Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:56:44.694906Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:26.385215Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:26.385277Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:36.236997Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:36.237066Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:38.151169Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:57:38.977987Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:57:44.512592Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:44.512638Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:54.664903Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:54.664948Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:55.224285Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:55.224342Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:58:51.436973Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:58:51.437031Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.045922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.045976Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.616510Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.616547Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:02:39.871472Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:02:39.871521Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:06:55.962024Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:06:55.962075Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.403499Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.403548Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.871720Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:07:33.970399Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.970450Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:38.334112Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:07:43.125369Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:43.125418Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:43.295552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:07:44.423859Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:11:10.178552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:11:33.641687Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:11:33.641746Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:11:33.871597Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:14:38.828715Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:14:38.828770Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:14:39.198058Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:14:58.236648Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:14:58.236689Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:07.297508Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:07.297592Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:10.975524Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:11.501224Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:11.694268Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:11.894534Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:27.075889Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:27.075927Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:28.590079Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:47.342088Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:47.342144Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:55.325725Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:55.325774Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:57.997905Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:16:18.814355Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:18.814407Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:20.856150Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:16:34.289065Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:34.289119Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:34.852992Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:34.853039Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:52.088440Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:52.088485Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:53.710598Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:16:55.623704Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:17:37.225384Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:37.225442Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:45.888130Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:45.888172Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.353399Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.353450Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.925407Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.925469Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:33.955755Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:18:42.738037Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:42.738091Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:43.298506Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:43.298572Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:58.930908Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:58.930959Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:59.458915Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:59.458954Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:00.986572Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:20:16.027694Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:16.027746Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:16.594242Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:16.594301Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:22.565760Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:22.565821Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:23.797331Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:20:34.346416Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:34.346454Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:17.004820Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:17.004884Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.379897Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.379947Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.947385Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.947445Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:33.346354Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:22:07.236207Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:22:07.236258Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:22:07.806482Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:22:07.806565Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.342976Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.343024Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.902332Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.902407Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:32.654205Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:32.654296Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:38.798624Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:38.798674Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:42.723321Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:42.723373Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:08.194696Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:08.194733Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:08.613343Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:25:17.438916Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:17.438968Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:17.706605Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:25:29.617555Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:29.617602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:29.783623Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:25:39.096695Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:39.096747Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:39.305560Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:26:45.534595Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:26:45.534637Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:26:51.007406Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:33:07.610451Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:07.610507Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:09.347734Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:33:18.110369Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:18.110465Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:19.519344Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:33:42.557193Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:42.557242Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:43.126107Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:43.126168Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:44.433471Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:44.784442Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:35:44.784501Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:35:45.987549Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.259262Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.591657Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.796741Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.990179Z","level":"WARN","fields":{"message":"Circuit breaker OPEN for http://localhost:22178/ (5 consecutive failures)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T17:35:52.990230Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:54.726440Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T17:36:41.505880Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:41.505929Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2676158)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.508071Z","level":"INFO","fields":{"message":"Process 2676158 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.508097Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2676137)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.509184Z","level":"INFO","fields":{"message":"Process 2676137 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.509194Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2676167)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.511384Z","level":"INFO","fields":{"message":"Process 2676167 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.511404Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2676139)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.513380Z","level":"INFO","fields":{"message":"Process 2676139 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.513389Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2676136)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.567205Z","level":"INFO","fields":{"message":"Process 2676136 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.567238Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2676141)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.569437Z","level":"INFO","fields":{"message":"Process 2676141 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.569464Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2676166)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.571011Z","level":"INFO","fields":{"message":"Process 2676166 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.571024Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2676140)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.574146Z","level":"INFO","fields":{"message":"Process 2676140 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.008588Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.008974Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T17:36:42.009039Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.009225Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T17:36:42.011388Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.011416Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.011447Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.011488Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.011526Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T17:36:42.011679Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:36:42.011689Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.011702Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:36:42.011830Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.011917Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012000Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012069Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012099Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012142Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012170Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118357Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118367Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118368Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118389Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118384Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118402Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118400Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118418Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118415Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118414Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118430Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118437Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118442Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118445Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118444Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118452Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118449Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118460Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118467Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118469Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118474Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118516Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118522Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118531Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118538Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118557Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118564Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118982Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.119022Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.119039Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.120111Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2782211"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.120223Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2782212"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.120451Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2782213"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.132453Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2782242"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.132780Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2782243"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.133296Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2782244"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.133400Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2782245"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.133420Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.133429Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.134667Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2782246"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.958391Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.958448Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123266Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123280Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123326Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123359Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123362Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782213"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123373Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782212"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123379Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123399Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123410Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123419Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123428Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123442Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123471Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123495Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134187Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134209Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134213Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782243"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134217Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134220Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134223Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134242Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134669Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134701Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134715Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782211"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134727Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134737Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134740Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134752Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134768Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134774Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782245"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134826Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134858Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134870Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134880Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134897Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134922Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134921Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134932Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782244"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134940Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134948Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134955Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134988Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136393Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.136413Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.136417Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782246"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136420Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136423Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136426Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136441Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.142991Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.143035Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.143043Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782242"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143064Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143073Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143079Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143115Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:47.081498Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:36:49.591727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:37:03.835752Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:03.835804Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:04.401598Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:04.401667Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:05.404474Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:37:16.504236Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:16.504291Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:23.504431Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:23.504464Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:27.054018Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:27.054057Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:34.075210Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:38:51.480411Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:51.480465Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:52.052567Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:52.052618Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:11.654456Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:11.654547Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:13.263800Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:39:37.951326Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:37.951382Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:54.421139Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:54.421210Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:56.502146Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:56.502215Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:20.659964Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:20.660018Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.382183Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.382231Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.948793Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.948872Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:08.704504Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:42:50.538113Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:50.538171Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:56.363171Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:56.363218Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:58.068691Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:42:58.711223Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:43:15.123407Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:15.123462Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:18.319725Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:43:28.031053Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:28.031103Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:50.528064Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:43:59.134258Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:59.134330Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.392067Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.392121Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.955776Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.955863Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:12.263777Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:12.263837Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:26.216690Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:26.216728Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.319902Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.319945Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.888922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.888976Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:43.433123Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:43.433174Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:46.830182Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:46.830218Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:51.461310Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:51.461359Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:52.027145Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:52.027192Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.056904Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.056956Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.626891Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.626953Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:13.489944Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:13.489983Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.083419Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.083469Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.653557Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.653601Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:55.779175Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:55.779236Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:56.346939Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:56.347054Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:40.674098Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:40.674150Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:50.307626Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:50.307718Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:08.899697Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:08.899748Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:09.470127Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:09.470184Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:05.288071Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:05.288123Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:12.855839Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:12.855879Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:13.376454Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:52:26.622841Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:26.622894Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:28.281792Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:52:41.057135Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:41.057185Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:47.562749Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:47.562829Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:47.751357Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:52:49.082351Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:54:18.130914Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:18.130966Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:18.685217Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:54:18.978984Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:54:22.817580Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:22.817630Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:23.140015Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:57.870715Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:57.870762Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2782244)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.925311Z","level":"INFO","fields":{"message":"Process 2782244 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.925363Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2782243)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.981079Z","level":"INFO","fields":{"message":"Process 2782243 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.981129Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2782242)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.035053Z","level":"INFO","fields":{"message":"Process 2782242 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.035097Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2782213)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.088580Z","level":"INFO","fields":{"message":"Process 2782213 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.088624Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2782211)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.143091Z","level":"INFO","fields":{"message":"Process 2782211 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.143147Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2782212)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.198161Z","level":"INFO","fields":{"message":"Process 2782212 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.198211Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2782246)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.253339Z","level":"INFO","fields":{"message":"Process 2782246 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.253387Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2782245)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.307471Z","level":"INFO","fields":{"message":"Process 2782245 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.372123Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.372389Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T18:00:58.372422Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.372576Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T18:00:58.372982Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.372991Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.373001Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.373017Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373035Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T18:00:58.373078Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.373085Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.373089Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373126Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373147Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373180Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373248Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373269Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373298Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373318Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478381Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478381Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478384Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478401Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478421Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478418Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478434Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478453Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478449Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478463Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478468Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478473Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478480Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478488Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478496Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478502Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478513Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478527Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478526Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478533Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478551Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478557Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478560Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478563Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478569Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478573Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478600Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478581Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478594Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478583Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478602Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478607Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.480178Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2813275"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.490365Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2813277"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.490968Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2813278"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.491738Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2813279"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.492148Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2813281"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.492626Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2813280"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.492839Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2813282"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.493230Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2813283"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.555566Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.556050Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.576571Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.993093Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:59.492281Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492346Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492343Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492363Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813278"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492386Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492386Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492400Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813277"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492418Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492433Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492445Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492507Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492552Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492587Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492679Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492890Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492911Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492920Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813279"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492929Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492959Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492971Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.493012Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494507Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494537Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494546Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813282"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494553Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494560Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494567Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494607Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494639Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494649Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494655Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813283"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494662Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494669Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494675Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494706Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496062Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496069Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496072Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813281"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496075Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496078Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496081Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496091Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496924Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496964Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496975Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813275"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496984Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496995Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.497003Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.497047Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.498249Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:59.985458Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:01:01.599727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:01:28.598295Z","level":"ERROR","fields":{"message":"Failed to auto-start agenda.letelegraphe.org: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.220692Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.220760Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2813281)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.275206Z","level":"INFO","fields":{"message":"Process 2813281 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.275258Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2813277)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.332325Z","level":"INFO","fields":{"message":"Process 2813277 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.332427Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2813278)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.386567Z","level":"INFO","fields":{"message":"Process 2813278 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.386607Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2813275)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.441111Z","level":"INFO","fields":{"message":"Process 2813275 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.441156Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2813283)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.495620Z","level":"INFO","fields":{"message":"Process 2813283 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.495671Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2813282)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.549317Z","level":"INFO","fields":{"message":"Process 2813282 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.549366Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2813279)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.602903Z","level":"INFO","fields":{"message":"Process 2813279 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.723358Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.723727Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T18:08:51.723781Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.723980Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T18:08:51.724143Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.724153Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.724170Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.724187Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724212Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T18:08:51.724281Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724303Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:51.724312Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:51.724337Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724364Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724417Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724481Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724520Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724572Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724608Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831598Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831605Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831605Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831622Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831629Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831644Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831649Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831658Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831681Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831678Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831692Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831705Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831710Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831719Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831728Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831753Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831764Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831772Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831779Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831791Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831798Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.831790Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.831836Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.831830Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.832999Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2822846"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.833553Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2822848"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.833574Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2822847"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.833618Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.833627Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.834029Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2822849"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.834962Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2822850"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.835005Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.835013Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.836100Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2822853"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.836157Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.836166Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.836184Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.836206Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.838908Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2822871"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.839032Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2822878"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.879908Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:52.483727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:52.836148Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836237Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836252Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822846"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836267Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836280Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836290Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836309Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836341Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836352Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836353Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822848"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836368Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836383Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836393Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836408Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836423Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836436Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822847"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836458Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836500Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836512Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836520Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836556Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.837974Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.837990Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.837995Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822853"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838000Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838004Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838008Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838028Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838732Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.838748Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.838756Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822850"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838764Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838774Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838782Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838839Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840444Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.840483Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.840494Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822878"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840504Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840514Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840522Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840568Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851317Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.851346Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.851354Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822871"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851360Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851368Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851374Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851408Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:53.734965Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:09:06.067840Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:09:06.067897Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2822878)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.122586Z","level":"INFO","fields":{"message":"Process 2822878 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.122633Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2822850)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.176159Z","level":"INFO","fields":{"message":"Process 2822850 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.176188Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2822853)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.231731Z","level":"INFO","fields":{"message":"Process 2822853 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.231789Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2822847)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.286955Z","level":"INFO","fields":{"message":"Process 2822847 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.287009Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2822871)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.343133Z","level":"INFO","fields":{"message":"Process 2822871 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.343170Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2822848)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.397972Z","level":"INFO","fields":{"message":"Process 2822848 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.398012Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2822846)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.452665Z","level":"INFO","fields":{"message":"Process 2822846 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.226743Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.229453Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T20:11:32.229567Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.229966Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T20:11:32.230257Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.230274Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.230294Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.230316Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230386Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T20:11:32.230408Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230496Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230518Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230525Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:32.230539Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:32.230547Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230586Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230614Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230668Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230705Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.335989Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.335988Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.335984Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336004Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336012Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336023Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336020Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336032Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336059Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336043Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336046Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336051Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336035Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336062Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336062Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336068Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336073Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336124Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336085Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336094Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336098Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336109Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336115Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336119Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336129Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336138Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336148Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336151Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336156Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336158Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336168Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336177Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.337240Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2943702"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.348467Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2943705"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.348498Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2943704"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.348920Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2943706"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.349326Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2943707"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.349884Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2943708"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.349957Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2943709"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.350675Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2943710"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350683Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350682Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350736Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350741Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350743Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943706"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350748Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943704"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350750Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350761Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350769Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350777Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350784Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350790Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350831Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350880Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351087Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351104Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351109Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943707"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351114Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351119Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351123Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351151Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351270Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351287Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351293Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943708"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351298Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351310Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351313Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351314Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351321Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351325Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943709"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351340Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351351Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351372Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351376Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351394Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352404Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352423Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352428Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943705"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352432Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352436Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352440Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352459Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352762Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352774Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352778Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943710"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352782Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352792Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352796Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352822Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352895Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352902Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352905Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943702"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352909Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352913Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352916Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352931Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.590332Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:33.735887Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:33.735940Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2943705)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.789614Z","level":"INFO","fields":{"message":"Process 2943705 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.789658Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2943706)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.843056Z","level":"INFO","fields":{"message":"Process 2943706 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.843103Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2943704)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.898324Z","level":"INFO","fields":{"message":"Process 2943704 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.898378Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2943710)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.952770Z","level":"INFO","fields":{"message":"Process 2943710 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.952832Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2943709)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.008337Z","level":"INFO","fields":{"message":"Process 2943709 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.008402Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2943708)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.063983Z","level":"INFO","fields":{"message":"Process 2943708 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.064007Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2943707)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.118136Z","level":"INFO","fields":{"message":"Process 2943707 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.118162Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2943702)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.173249Z","level":"INFO","fields":{"message":"Process 2943702 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.238602Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239113Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T20:11:34.239172Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239374Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T20:11:34.239517Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239524Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239536Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239559Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239578Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T20:11:34.239658Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.239666Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239671Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.239734Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239761Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239800Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239853Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239891Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239941Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239977Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347553Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347549Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347559Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347570Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347579Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347589Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347600Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347606Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347630Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347633Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347642Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347654Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347666Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347676Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347683Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347690Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347697Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347701Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347710Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347722Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.347725Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347732Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.347741Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.347751Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349346Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2944008"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349618Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2944009"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349626Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.349643Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349692Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2944010"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.350311Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2944013"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.350339Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.350348Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.350771Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2944011"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.351184Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2944014"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.351212Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.351218Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.351224Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.351232Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.352215Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2944016"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.352730Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2944017"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.391782Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.392149Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.404407Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.818888Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:35.352322Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352381Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352395Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944011"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352407Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352420Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352429Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352501Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352585Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352595Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352600Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944013"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352604Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352621Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352625Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352642Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352789Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352797Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352802Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944008"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352806Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352824Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352828Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352844Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353050Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.353067Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.353073Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944014"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353079Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353085Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353090Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353117Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354616Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354640Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354646Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944010"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354650Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354656Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354660Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354688Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354735Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354765Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354770Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944017"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354775Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354780Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354784Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354812Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354822Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354835Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354840Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944016"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354844Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354848Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354852Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354871Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363662Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.363686Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.363693Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944009"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363701Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363711Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363719Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363751Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.356737Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.356772Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2944013)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.413102Z","level":"INFO","fields":{"message":"Process 2944013 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.413151Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2944014)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.468248Z","level":"INFO","fields":{"message":"Process 2944014 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.468336Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2944008)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.524853Z","level":"INFO","fields":{"message":"Process 2944008 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.524894Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2944009)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.579163Z","level":"INFO","fields":{"message":"Process 2944009 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.579190Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2944010)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.633669Z","level":"INFO","fields":{"message":"Process 2944010 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.633715Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2944011)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.689241Z","level":"INFO","fields":{"message":"Process 2944011 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.689294Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2944016)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.744378Z","level":"INFO","fields":{"message":"Process 2944016 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.744411Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2944017)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.799079Z","level":"INFO","fields":{"message":"Process 2944017 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.859413Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.859805Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T20:11:36.859867Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860042Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T20:11:36.860192Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860199Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860212Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860235Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860260Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T20:11:36.860316Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:36.860325Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:36.860342Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860406Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860432Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860468Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860525Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860561Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860610Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860646Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966965Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966965Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966960Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966981Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966991Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966997Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967005Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967016Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967013Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967027Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967031Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967040Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967047Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967042Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967052Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967047Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967060Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967068Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967067Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967181Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967073Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967077Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967090Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967095Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967174Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967224Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967186Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967189Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967193Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967231Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967235Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967252Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.968251Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2944321"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.968468Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2944322"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.977876Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2944335"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.978885Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2944336"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.979620Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2944338"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.979622Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2944337"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.980066Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2944340"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.980419Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2944341"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.022440Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.022733Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.038280Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.451970Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.971594Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.971641Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.971653Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944322"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971673Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971683Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971689Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971733Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976376Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.976424Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.976440Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944321"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976452Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976463Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976472Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976523Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979428Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.979476Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.979491Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944335"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979510Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979529Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979544Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979606Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981452Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981471Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981478Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944338"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981484Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981490Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981495Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981526Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981569Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981603Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981618Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944337"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981632Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981648Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981660Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981678Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981689Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981695Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944340"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981740Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981759Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981774Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981786Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981850Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981998Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.982012Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.982017Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944341"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982021Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982026Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982030Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982050Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990780Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.990803Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.990823Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944336"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990829Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990847Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990853Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990886Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:38.978370Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:39.359614Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:39.771863Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:39.946670Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:40.113797Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}