diff --git a/Dockerfile b/Dockerfile
index 33c15197850d80fabed2f19bbe6f119c02ef04ad..524d9635f9642d31955461fc29b8b78d4d637caa 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -14,6 +14,8 @@ RUN pnpm run build
 
 FROM nginx:stable-alpine
 
+RUN apk add --no-cache fcgiwrap spawn-fcgi
+
 COPY rootfs/ /
 COPY --from=build /app/dist /app/frontend
 
@@ -25,6 +27,8 @@ ENV PUID=${PUID}
 ENV PGID=${PGID}
 
 RUN chmod +x /docker-entrypoint.sh
+RUN chmod +x /usr/lib/nginx-api/reload.sh
+RUN chmod +x /usr/lib/nginx-api/test.sh
 
 EXPOSE 80 81 443
 
diff --git a/rootfs/docker-entrypoint.sh b/rootfs/docker-entrypoint.sh
index 970305b14ddae7bb3304313522a93b163267acac..ab4680d8b543093fb272a1dab2d32d51622bcda7 100644
--- a/rootfs/docker-entrypoint.sh
+++ b/rootfs/docker-entrypoint.sh
@@ -4,6 +4,7 @@ set -e
 # Create necessary directories
 mkdir -p /data/custom_ssl /data/logs /data/access /data/nginx /data/letsencrypt-acme-challenge /data/nginx/default_host /data/nginx/default_www /data/nginx/proxy_host /data/nginx/redirection_host /data/nginx/stream /data/nginx/dead_host /data/nginx/temp
 mkdir -p /etc/letsencrypt /run/nginx /tmp/nginx/body /var/log/nginx /var/lib/nginx/cache/public /var/lib/nginx/cache/private /var/cache/nginx/proxy_temp
+mkdir -p /var/run
 
 # Set proper permissions
 chown -R ${PUID:-1000}:${PGID:-1000} /data
@@ -13,6 +14,7 @@ chown -R ${PUID:-1000}:${PGID:-1000} /tmp/nginx
 chown -R ${PUID:-1000}:${PGID:-1000} /var/cache/nginx
 chown -R ${PUID:-1000}:${PGID:-1000} /var/lib/nginx
 chown -R ${PUID:-1000}:${PGID:-1000} /var/log/nginx
+chown -R ${PUID:-1000}:${PGID:-1000} /var/run
 
-# Execute the main command
+spawn-fcgi -s /var/run/fcgiwrap.socket -M 766 /usr/bin/fcgiwrap &
 exec "$@"
diff --git a/rootfs/etc/nginx/nginx.conf b/rootfs/etc/nginx/nginx.conf
index bda8d2c0393ac0f60939d9821aec9e458bb92101..9704ec68aef7f4345b0c4d40ac04d8d9ae7d8f75 100644
--- a/rootfs/etc/nginx/nginx.conf
+++ b/rootfs/etc/nginx/nginx.conf
@@ -48,6 +48,25 @@ http {
 		default http;
 	}
 
+	# Nginx api endpoints
+	server {
+		listen 8081;
+		listen [::]:8081;
+		server_name nginx-api;
+
+		location /nginx-api/reload {
+			include /etc/nginx/fastcgi_params;
+			fastcgi_pass unix:/var/run/fcgiwrap.socket;
+			fastcgi_param SCRIPT_FILENAME /usr/lib/nginx-api/reload.sh;
+		}
+
+		location /nginx-api/test {
+			include /etc/nginx/fastcgi_params;
+			fastcgi_pass unix:/var/run/fcgiwrap.socket;
+			fastcgi_param SCRIPT_FILENAME /usr/lib/nginx-api/test.sh;
+		}
+	}
+
 	# Files generated by Proxy Manager
 	include /etc/nginx/conf.d/*.conf;
 	include /data/nginx/proxy_host/*.conf;
diff --git a/rootfs/usr/lib/nginx-api/reload.sh b/rootfs/usr/lib/nginx-api/reload.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ac4dbb72ba67e95e40954b077bade92cf3a0a9ad
--- /dev/null
+++ b/rootfs/usr/lib/nginx-api/reload.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+output=$(nginx -s reload 2>&1)
+status=$?
+
+if [ $status -eq 0 ]; then
+  echo "Status: 200 OK"
+  echo "Content-Type: text/plain"
+  echo ""
+  echo "$output"
+else
+  echo "Status: 500 Internal Server Error"
+  echo "Content-Type: text/plain"
+  echo ""
+  echo "$output"
+fi
\ No newline at end of file
diff --git a/rootfs/usr/lib/nginx-api/test.sh b/rootfs/usr/lib/nginx-api/test.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1628523ff3c6c54defa13429b04aed89a83bf3e5
--- /dev/null
+++ b/rootfs/usr/lib/nginx-api/test.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+output=$(nginx -t 2>&1)
+status=$?
+
+if [ $status -eq 0 ]; then
+  echo "Status: 200 OK"
+  echo "Content-Type: text/plain"
+  echo ""
+  echo "$output"
+else
+  echo "Status: 500 Internal Server Error"
+  echo "Content-Type: text/plain"
+  echo ""
+  echo "$output"
+fi
\ No newline at end of file