diff --git a/entrypoint.sh b/entrypoint.sh
index 8361b19..6b21dbd 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -1,6 +1,24 @@
 #!/bin/bash
 set -e
 
+echo "Starting server..."
+.qlot/bin/clackup --system hp --server woo --address 0.0.0.0 --port 3000 src/app.lisp &
+
+SERVER_PID=$!
+
+echo "Waiting 10 seconds before health check..."
+sleep 10
+
+echo "Waiting for server to be ready..."
+for i in {1..60}; do
+  if curl -s -o /dev/null -w "%{http_code}" http://0.0.0.0:3000 | grep -q "200"; then
+    echo "Server is up."
+    break
+  fi
+  echo "Server not ready yet... retrying ($i)"
+  sleep 1
+done
+
 if [[ -n "$CLOUDFLARE_ZONE_ID" && -n "$CLOUDFLARE_API_KEY" ]]; then
   echo "Purging Cloudflare cache..."
   curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/purge_cache" \
@@ -11,5 +29,4 @@ else
   echo "Cloudflare credentials not provided. Skipping cache purge."
 fi
 
-echo "Starting server..."
-exec .qlot/bin/clackup --system hp --server woo --address 0.0.0.0 --port 3000 src/app.lisp
+wait $SERVER_PID
\ No newline at end of file