diff --git a/coolify/applications/mowssk00wc0kgo8ggg0g04o4/.env b/coolify/applications/mowssk00wc0kgo8ggg0g04o4/.env
new file mode 100644
index 0000000..2005fb8
--- /dev/null
+++ b/coolify/applications/mowssk00wc0kgo8ggg0g04o4/.env
@@ -0,0 +1,8 @@
+SOURCE_COMMIT=HEAD
+COOLIFY_URL=https://cors.site.quack-lab.dev
+COOLIFY_FQDN=cors.site.quack-lab.dev
+COOLIFY_BRANCH=
+COOLIFY_RESOURCE_UUID=mowssk00wc0kgo8ggg0g04o4
+COOLIFY_CONTAINER_NAME=mowssk00wc0kgo8ggg0g04o4-150940028761
+PORT=80
+HOST=0.0.0.0
\ No newline at end of file
diff --git a/coolify/applications/mowssk00wc0kgo8ggg0g04o4/README.md b/coolify/applications/mowssk00wc0kgo8ggg0g04o4/README.md
new file mode 100644
index 0000000..9cb0f5f
--- /dev/null
+++ b/coolify/applications/mowssk00wc0kgo8ggg0g04o4/README.md
@@ -0,0 +1,2 @@
+Resource name: cors
+Latest Deployment Date: 2025-10-18 15:09:55
diff --git a/coolify/applications/mowssk00wc0kgo8ggg0g04o4/docker-compose.yaml b/coolify/applications/mowssk00wc0kgo8ggg0g04o4/docker-compose.yaml
new file mode 100644
index 0000000..a59b53d
--- /dev/null
+++ b/coolify/applications/mowssk00wc0kgo8ggg0g04o4/docker-compose.yaml
@@ -0,0 +1,57 @@
+services:
+ mowssk00wc0kgo8ggg0g04o4-150940028761:
+ image: 'redocly/cors-anywhere:latest'
+ container_name: mowssk00wc0kgo8ggg0g04o4-150940028761
+ restart: unless-stopped
+ expose:
+ - '80'
+ networks:
+ coolify:
+ aliases:
+ - mowssk00wc0kgo8ggg0g04o4-150940028761
+ mem_limit: '0'
+ memswap_limit: '0'
+ mem_swappiness: 60
+ mem_reservation: '0'
+ cpus: 0.0
+ cpu_shares: 1024
+ env_file:
+ - .env
+ labels:
+ - traefik.enable=true
+ - traefik.http.middlewares.gzip.compress=true
+ - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
+ - traefik.http.routers.http-0-mowssk00wc0kgo8ggg0g04o4.entryPoints=http
+ - traefik.http.routers.http-0-mowssk00wc0kgo8ggg0g04o4.middlewares=redirect-to-https
+ - 'traefik.http.routers.http-0-mowssk00wc0kgo8ggg0g04o4.rule=Host(`cors.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.http-0-mowssk00wc0kgo8ggg0g04o4.service=http-0-mowssk00wc0kgo8ggg0g04o4
+ - traefik.http.routers.https-0-mowssk00wc0kgo8ggg0g04o4.entryPoints=https
+ - traefik.http.routers.https-0-mowssk00wc0kgo8ggg0g04o4.middlewares=gzip
+ - 'traefik.http.routers.https-0-mowssk00wc0kgo8ggg0g04o4.rule=Host(`cors.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.https-0-mowssk00wc0kgo8ggg0g04o4.service=https-0-mowssk00wc0kgo8ggg0g04o4
+ - traefik.http.routers.https-0-mowssk00wc0kgo8ggg0g04o4.tls.certresolver=letsencrypt
+ - traefik.http.routers.https-0-mowssk00wc0kgo8ggg0g04o4.tls=true
+ - traefik.http.services.http-0-mowssk00wc0kgo8ggg0g04o4.loadbalancer.server.port=80
+ - traefik.http.services.https-0-mowssk00wc0kgo8ggg0g04o4.loadbalancer.server.port=80
+ - 'caddy_0.encode=zstd gzip'
+ - 'caddy_0.handle_path.0_reverse_proxy={{upstreams 80}}'
+ - 'caddy_0.handle_path=/*'
+ - caddy_0.header=-Server
+ - 'caddy_0.try_files={path} /index.html /index.php'
+ - 'caddy_0=https://cors.site.quack-lab.dev'
+ - caddy_ingress_network=coolify
+ - coolify.managed=true
+ - coolify.version=4.0.0-beta.434
+ - coolify.applicationId=1
+ - coolify.type=application
+ - coolify.name=mowssk00wc0kgo8ggg0g04o4
+ - coolify.resourceName=cors
+ - coolify.projectName=services
+ - coolify.serviceName=cors
+ - coolify.environmentName=production
+ - coolify.pullRequestId=0
+networks:
+ coolify:
+ external: true
+ name: coolify
+ attachable: true
diff --git a/coolify/proxy/caddy/config/caddy/Caddyfile.autosave b/coolify/proxy/caddy/config/caddy/Caddyfile.autosave
index 4fba1b3..d3c1e88 100644
--- a/coolify/proxy/caddy/config/caddy/Caddyfile.autosave
+++ b/coolify/proxy/caddy/config/caddy/Caddyfile.autosave
@@ -31,6 +31,14 @@ https://calibre.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
+https://cors.site.quack-lab.dev {
+ encode zstd gzip
+ handle_path /* {
+ reverse_proxy 10.0.4.16:80
+ }
+ header -Server
+ try_files {path} /index.html /index.php
+}
https://docker.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
@@ -81,6 +89,14 @@ https://grist.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
+https://immich.site.quack-lab.dev {
+ encode zstd gzip
+ handle_path /* {
+ reverse_proxy 10.0.61.5:2283
+ }
+ header -Server
+ try_files {path} /index.html /index.php
+}
https://jelly.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
@@ -113,10 +129,18 @@ https://n8n.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
+https://nsq-http.site.quack-lab.dev {
+ encode zstd gzip
+ handle_path /* {
+ reverse_proxy 10.0.41.3:4151
+ }
+ header -Server
+ try_files {path} /index.html /index.php
+}
https://nsq.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
- reverse_proxy 10.0.41.4:4151
+ reverse_proxy 10.0.41.3:4151
}
header -Server
try_files {path} /index.html /index.php
@@ -124,7 +148,7 @@ https://nsq.site.quack-lab.dev {
https://nsqadmin.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
- reverse_proxy 10.0.41.2:4171
+ reverse_proxy 10.0.41.4:4171
}
header -Server
try_files {path} /index.html /index.php
@@ -137,6 +161,14 @@ https://pastefy.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
+https://pdf.site.quack-lab.dev {
+ encode zstd gzip
+ handle_path /* {
+ reverse_proxy 10.0.60.2:8080
+ }
+ header -Server
+ try_files {path} /index.html /index.php
+}
https://pocketbase-autoclip.site.quack-lab.dev {
handle_path /* {
reverse_proxy 10.0.34.2:8080
diff --git a/coolify/proxy/caddy/config/caddy/autosave.json b/coolify/proxy/caddy/config/caddy/autosave.json
index 2055b09..3a0ebe1 100644
--- a/coolify/proxy/caddy/config/caddy/autosave.json
+++ b/coolify/proxy/caddy/config/caddy/autosave.json
@@ -1 +1 @@
-{"admin":{"listen":"tcp/localhost:2019"},"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.49.2:8090"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-youtube-seencounter.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.57.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-youtube-timestamps.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.56.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-truckermajster.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.50.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-shoppinglist.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.34.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-autoclip.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.48.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-scratch.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.39.2:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["authwarden.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.31.2:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["bitwarden.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.47.2:24900"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["meili-web.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.42.2:9000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["portainer.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.41.2:4171"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["nsqadmin.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.51.2:8083"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["calibre.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.46.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["evebase.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.35.2:43433"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["grafana.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.43.2:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pastefy.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.53.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["torrent.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.52.3:3000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["zipline.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.44.2:5006"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["actual.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.40.2:5000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["docker.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.37.2:3923"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["files.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"authentication","providers":{"http_basic":{"accounts":[{"password":"$2a$14$Sn2smnUNWQazfUQL.OtW/urEng2YWtAR4iUcahkmKoWCog9lRgMOy","username":"dave"}],"hash":{"algorithm":"bcrypt"},"hash_cache":{}}}},{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.59.2:8484"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["grist.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.45.2:8096"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["jelly.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.38.2:7700"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["meili.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.54.6:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["zulip.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.29.2:8384"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["sync.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.36.2:3000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["git.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.55.2:5678"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["n8n.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.41.4:4151"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["nsq.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"static_response","status_code":503}]}]}],"terminal":true}]},"srv1":{"listen":[":80"],"routes":[{"handle":[{"handler":"static_response","status_code":503}]}]}}}}}
\ No newline at end of file
+{"admin":{"listen":"tcp/localhost:2019"},"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.49.2:8090"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-youtube-seencounter.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.57.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-youtube-timestamps.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.56.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-truckermajster.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.50.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-shoppinglist.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.34.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-autoclip.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.48.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pocketbase-scratch.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.39.2:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["authwarden.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.31.2:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["bitwarden.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.47.2:24900"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["meili-web.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.42.2:9000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["portainer.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.41.3:4151"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["nsq-http.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.41.4:4171"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["nsqadmin.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.51.2:8083"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["calibre.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.46.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["evebase.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.35.2:43433"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["grafana.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.43.2:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pastefy.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.53.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["torrent.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.52.3:3000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["zipline.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.44.2:5006"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["actual.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.40.2:5000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["docker.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.61.5:2283"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["immich.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.37.2:3923"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["files.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"handler":"authentication","providers":{"http_basic":{"accounts":[{"password":"$2a$14$Sn2smnUNWQazfUQL.OtW/urEng2YWtAR4iUcahkmKoWCog9lRgMOy","username":"dave"}],"hash":{"algorithm":"bcrypt"},"hash_cache":{}}}},{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.59.2:8484"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["grist.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.45.2:8096"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["jelly.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.38.2:7700"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["meili.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.54.6:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["zulip.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.4.16:80"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["cors.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.29.2:8384"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["sync.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.36.2:3000"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["git.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.55.2:5678"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["n8n.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.41.3:4151"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["nsq.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"deferred":true,"delete":["Server"]}}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html","/index.php"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["zstd","gzip"]}]},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"rewrite"}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"10.0.60.2:8080"}]}]}]}],"match":[{"path":["/*"]}]}]}],"match":[{"host":["pdf.site.quack-lab.dev"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"static_response","status_code":503}]}]}],"terminal":true}]},"srv1":{"listen":[":80"],"routes":[{"handle":[{"handler":"static_response","status_code":503}]}]}}}}}
\ No newline at end of file
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.crt b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.crt
new file mode 100644
index 0000000..a323ed2
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.crt
@@ -0,0 +1,49 @@
+-----BEGIN CERTIFICATE-----
+MIIDmjCCAyGgAwIBAgISBrquS9H16cNJ1SXt0JNKWwgXMAoGCCqGSM49BAMDMDIx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
+ODAeFw0yNTEwMTgxNDExMzBaFw0yNjAxMTYxNDExMjlaMCIxIDAeBgNVBAMTF2Nv
+cnMuc2l0ZS5xdWFjay1sYWIuZGV2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
+YVCp0XamGAoNOd0aVtczoSVIe6r4wLjNPkdXe8VQe+pQjSzpM3EWyT6zmF+0eMyv
+ICpDb1JornHuyh6e1Ch0HKOCAiUwggIhMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUE
+FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU
+Bg/E1Z8vtZB4fxEl2/ASaJMUxDIwHwYDVR0jBBgwFoAUjw0TovYuftFQbDMYOF1Z
+jiNykcowMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTguaS5s
+ZW5jci5vcmcvMCIGA1UdEQQbMBmCF2NvcnMuc2l0ZS5xdWFjay1sYWIuZGV2MBMG
+A1UdIAQMMAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9lOC5j
+LmxlbmNyLm9yZy8yNC5jcmwwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgBJnJtp
+3h187Pw23s2HZKa4W68Kh4AZ0VVS++nrKd34wwAAAZn33th4AAAEAwBHMEUCIQCY
+nhZyerjBGyUa6eYyy2/AxQGhnxSj4Fa3A3bcJZE1SAIgHfHZ3H+cH+MDvOScoRLE
+CxWZu4mVKlvRWNyNFj4OtEkAdgCWl2S/VViXrfdDh2g3CEJ36fA61fak8zZuRqQ/
+D8qpxgAAAZn33tiwAAAEAwBHMEUCIDLMvrT3DhL2/wr5bZ371YswehuyzSDGa4z+
+fvaxN/0PAiEAk/ZlZ1hN9ET/oN2ma8ZZS0VXlLUg9H6AQMhQQExXBz4wCgYIKoZI
+zj0EAwMDZwAwZAIwYRvAQ3gseYtwoIQpHGCztFjs8X8Fz3pBzQGKqq+UntGGPV4W
+WD0emAUw/EbbT5jOAjA4ZP7I+0SWewoBGZDfYJ7RAc7VXiYDa1MtIfhMoN46PJt7
+1hxbYwY/sZsVDU2Q2YY=
+-----END CERTIFICATE-----
+
+-----BEGIN CERTIFICATE-----
+MIIEVjCCAj6gAwIBAgIQY5WTY8JOcIJxWRi/w9ftVjANBgkqhkiG9w0BAQsFADBP
+MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
+Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
+Fw0yNzAzMTIyMzU5NTlaMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
+bmNyeXB0MQswCQYDVQQDEwJFODB2MBAGByqGSM49AgEGBSuBBAAiA2IABNFl8l7c
+S7QMApzSsvru6WyrOq44ofTUOTIzxULUzDMMNMchIJBwXOhiLxxxs0LXeb5GDcHb
+R6EToMffgSZjO9SNHfY9gjMy9vQr5/WWOrQTZxh7az6NSNnq3u2ubT6HTKOB+DCB
+9TAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
+MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI8NE6L2Ln7RUGwzGDhdWY4j
+cpHKMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEB
+BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzATBgNVHSAE
+DDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5j
+ci5vcmcvMA0GCSqGSIb3DQEBCwUAA4ICAQBnE0hGINKsCYWi0Xx1ygxD5qihEjZ0
+RI3tTZz1wuATH3ZwYPIp97kWEayanD1j0cDhIYzy4CkDo2jB8D5t0a6zZWzlr98d
+AQFNh8uKJkIHdLShy+nUyeZxc5bNeMp1Lu0gSzE4McqfmNMvIpeiwWSYO9w82Ob8
+otvXcO2JUYi3svHIWRm3+707DUbL51XMcY2iZdlCq4Wa9nbuk3WTU4gr6LY8MzVA
+aDQG2+4U3eJ6qUF10bBnR1uuVyDYs9RhrwucRVnfuDj29CMLTsplM5f5wSV5hUpm
+Uwp/vV7M4w4aGunt74koX71n4EdagCsL/Yk5+mAQU0+tue0JOfAV/R6t1k+Xk9s2
+HMQFeoxppfzAVC04FdG9M+AC2JWxmFSt6BCuh3CEey3fE52Qrj9YM75rtvIjsm/1
+Hl+u//Wqxnu1ZQ4jpa+VpuZiGOlWrqSP9eogdOhCGisnyewWJwRQOqK16wiGyZeR
+xs/Bekw65vwSIaVkBruPiTfMOo0Zh4gVa8/qJgMbJbyrwwG97z/PRgmLKCDl8z3d
+tA0Z7qq7fta0Gl24uyuB05dqI5J1LvAzKuWdIjT1tP8qCoxSE/xpix8hX2dt3h+/
+jujUgFPFZ0EVZ0xSyBNRF3MboGZnYXFUxpNjTWPKpagDHJQmqrAcDmWJnMsFY3jS
+u1igv3OefnWjSQ==
+-----END CERTIFICATE-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.json b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.json
new file mode 100644
index 0000000..229b7cc
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.json
@@ -0,0 +1,9 @@
+{
+ "sans": [
+ "cors.site.quack-lab.dev"
+ ],
+ "issuer_data": {
+ "url": "https://acme-v02.api.letsencrypt.org/acme/cert/06baae4bd1f5e9c349d525edd0934a5b0817",
+ "ca": "https://acme-v02.api.letsencrypt.org/directory"
+ }
+}
\ No newline at end of file
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.key b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.key
new file mode 100644
index 0000000..34396fc
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/cors.site.quack-lab.dev/cors.site.quack-lab.dev.key
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIMwOezY9jAvUEx2wsTeisMCNugqpxHMXg9gu7sKZ9WZToAoGCCqGSM49
+AwEHoUQDQgAEYVCp0XamGAoNOd0aVtczoSVIe6r4wLjNPkdXe8VQe+pQjSzpM3EW
+yT6zmF+0eMyvICpDb1JornHuyh6e1Ch0HA==
+-----END EC PRIVATE KEY-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.crt b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.crt
new file mode 100644
index 0000000..049ccfc
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.crt
@@ -0,0 +1,49 @@
+-----BEGIN CERTIFICATE-----
+MIIDnzCCAySgAwIBAgISBoL6nXOTnMESvWdZWH6PDjkVMAoGCCqGSM49BAMDMDIx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
+ODAeFw0yNTEwMTgxMTM0NTVaFw0yNjAxMTYxMTM0NTRaMCQxIjAgBgNVBAMTGWlt
+bWljaC5zaXRlLnF1YWNrLWxhYi5kZXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
+AAQAUJMf32D+31yo5JFntNHAwn2CHk9RdQAhYXe9SYSSBczwRSnxmPptNGm27kIY
+ogXilHyiNDulAo4GnwfT3Lr7o4ICJjCCAiIwDgYDVR0PAQH/BAQDAgeAMB0GA1Ud
+JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW
+BBQDb2Ei4flX62OBrO7xJ4+xDqCsATAfBgNVHSMEGDAWgBSPDROi9i5+0VBsMxg4
+XVmOI3KRyjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lOC5p
+LmxlbmNyLm9yZy8wJAYDVR0RBB0wG4IZaW1taWNoLnNpdGUucXVhY2stbGFiLmRl
+djATBgNVHSAEDDAKMAgGBmeBDAECATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8v
+ZTguYy5sZW5jci5vcmcvMjIuY3JsMIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHYA
+yzj3FYl8hKFEX1vB3fvJbvKaWc1HCmkFhbDLFMMUWOcAAAGZ9097DgAABAMARzBF
+AiEA/sp8Fr5niv7mbr7D6kL3cFdKsfU0WTjLuM++nFIrKMICIE3dQEAUWICrcIz2
+nz+YKmrVCgM1LvUmz5ZhpsQuDM6yAHUAGYbUxyiqb/66A294Kk0BkarOLXIxD67O
+XXBBLSVMx9QAAAGZ9097AQAABAMARjBEAiBIFHuDKL0etwtpNIjXpf3ZNgvwP9Tp
+9rC3ARYM5LdGKQIgBsYUuXOBTbU2ObKi0SMK8h2VmRMZxNYBLumf1S0zz2gwCgYI
+KoZIzj0EAwMDaQAwZgIxAP947/adBy0vL58F5nbX6voOl/nYJcD0BKBaamfNt+GZ
+2ITLESiyBMRbWGLUeua1WwIxAOqYF+RuqC59eQVLKNDXSoqoEOuxhdCpciKN39DN
+37ZfZgzqKyR44fDfrbgyuX/+LA==
+-----END CERTIFICATE-----
+
+-----BEGIN CERTIFICATE-----
+MIIEVjCCAj6gAwIBAgIQY5WTY8JOcIJxWRi/w9ftVjANBgkqhkiG9w0BAQsFADBP
+MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
+Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
+Fw0yNzAzMTIyMzU5NTlaMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
+bmNyeXB0MQswCQYDVQQDEwJFODB2MBAGByqGSM49AgEGBSuBBAAiA2IABNFl8l7c
+S7QMApzSsvru6WyrOq44ofTUOTIzxULUzDMMNMchIJBwXOhiLxxxs0LXeb5GDcHb
+R6EToMffgSZjO9SNHfY9gjMy9vQr5/WWOrQTZxh7az6NSNnq3u2ubT6HTKOB+DCB
+9TAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
+MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI8NE6L2Ln7RUGwzGDhdWY4j
+cpHKMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEB
+BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzATBgNVHSAE
+DDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5j
+ci5vcmcvMA0GCSqGSIb3DQEBCwUAA4ICAQBnE0hGINKsCYWi0Xx1ygxD5qihEjZ0
+RI3tTZz1wuATH3ZwYPIp97kWEayanD1j0cDhIYzy4CkDo2jB8D5t0a6zZWzlr98d
+AQFNh8uKJkIHdLShy+nUyeZxc5bNeMp1Lu0gSzE4McqfmNMvIpeiwWSYO9w82Ob8
+otvXcO2JUYi3svHIWRm3+707DUbL51XMcY2iZdlCq4Wa9nbuk3WTU4gr6LY8MzVA
+aDQG2+4U3eJ6qUF10bBnR1uuVyDYs9RhrwucRVnfuDj29CMLTsplM5f5wSV5hUpm
+Uwp/vV7M4w4aGunt74koX71n4EdagCsL/Yk5+mAQU0+tue0JOfAV/R6t1k+Xk9s2
+HMQFeoxppfzAVC04FdG9M+AC2JWxmFSt6BCuh3CEey3fE52Qrj9YM75rtvIjsm/1
+Hl+u//Wqxnu1ZQ4jpa+VpuZiGOlWrqSP9eogdOhCGisnyewWJwRQOqK16wiGyZeR
+xs/Bekw65vwSIaVkBruPiTfMOo0Zh4gVa8/qJgMbJbyrwwG97z/PRgmLKCDl8z3d
+tA0Z7qq7fta0Gl24uyuB05dqI5J1LvAzKuWdIjT1tP8qCoxSE/xpix8hX2dt3h+/
+jujUgFPFZ0EVZ0xSyBNRF3MboGZnYXFUxpNjTWPKpagDHJQmqrAcDmWJnMsFY3jS
+u1igv3OefnWjSQ==
+-----END CERTIFICATE-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.json b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.json
new file mode 100644
index 0000000..b180c80
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.json
@@ -0,0 +1,9 @@
+{
+ "sans": [
+ "immich.site.quack-lab.dev"
+ ],
+ "issuer_data": {
+ "url": "https://acme-v02.api.letsencrypt.org/acme/cert/0682fa9d73939cc112bd6759587e8f0e3915",
+ "ca": "https://acme-v02.api.letsencrypt.org/directory"
+ }
+}
\ No newline at end of file
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.key b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.key
new file mode 100644
index 0000000..0a1cf05
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/immich.site.quack-lab.dev/immich.site.quack-lab.dev.key
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEINvqtsVmzaZFk688kHAZzboU1lQND4KDbKK4Fo7WJ92GoAoGCCqGSM49
+AwEHoUQDQgAEAFCTH99g/t9cqOSRZ7TRwMJ9gh5PUXUAIWF3vUmEkgXM8EUp8Zj6
+bTRptu5CGKIF4pR8ojQ7pQKOBp8H09y6+w==
+-----END EC PRIVATE KEY-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.crt b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.crt
new file mode 100644
index 0000000..6365a34
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.crt
@@ -0,0 +1,49 @@
+-----BEGIN CERTIFICATE-----
+MIIDoTCCAyigAwIBAgISBs3wdTk4mKq6Gqh+4mQLmaWaMAoGCCqGSM49BAMDMDIx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
+NzAeFw0yNTEwMTcxNDI1MDVaFw0yNjAxMTUxNDI1MDRaMCYxJDAiBgNVBAMTG25z
+cS1odHRwLnNpdGUucXVhY2stbGFiLmRldjBZMBMGByqGSM49AgEGCCqGSM49AwEH
+A0IABAp6tUcPWX8ktmS/6UtC23XLJjU7GtQmX6C+JYy33dhJniCppOuFjqKwoDwa
+UTE4+UKcBcqaqk/fK2sZFHJ5GCujggIoMIICJDAOBgNVHQ8BAf8EBAMCB4AwHQYD
+VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0O
+BBYEFPmmiL1Qd2bOmOEXtjOFZ0wmvabfMB8GA1UdIwQYMBaAFK5IntyHHUSgb9qi
+5WB0BHjCnACAMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U3
+LmkubGVuY3Iub3JnLzAmBgNVHREEHzAdghtuc3EtaHR0cC5zaXRlLnF1YWNrLWxh
+Yi5kZXYwEwYDVR0gBAwwCjAIBgZngQwBAgEwLQYDVR0fBCYwJDAioCCgHoYcaHR0
+cDovL2U3LmMubGVuY3Iub3JnLzI3LmNybDCCAQMGCisGAQQB1nkCBAIEgfQEgfEA
+7wB1AGQRxGykEuyniRyiAi4AvKtPKAfUHjUnq+r+1QPJfc3wAAABmfLE6s4AAAQD
+AEYwRAIgZ5fDoAaOObh3ZHVPH3VuDmFCpOAmOesq9EvNEMARZqICIH4AWUpAuLQv
+JrGq1TlLSt3b4w3HY5VY+0WvqR7BnRZlAHYAyzj3FYl8hKFEX1vB3fvJbvKaWc1H
+CmkFhbDLFMMUWOcAAAGZ8sTq4AAABAMARzBFAiEA9n54yf0Qzv3fiB6Ks9CEuGGx
+wjZUNko6mOTnSTDsaUECIHIXcseTBWvhk7fj1mvc2J0ZUeg8bAsU8Dd2wTZnXZDq
+MAoGCCqGSM49BAMDA2cAMGQCMGkD/ZJsO02N5mF+qpt/ppb8muQxAKfcgADVsFpB
+c52Y384rXSEp/mhF+visLDnuoAIwFSWn9EHxpszniFsyGeUOdtyRbuo5l6y/CXk4
+Oqmq8plTaikOuH3ghtQ76ncFwWqh
+-----END CERTIFICATE-----
+
+-----BEGIN CERTIFICATE-----
+MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
+WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
+RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
+CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
+QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
+gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
+ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
+wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
+AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
+BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
+Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
+aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
+h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
+yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
+OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
+yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
+M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
+UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
+Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
+tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
+YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
++VUwFj9tmWxyR/M=
+-----END CERTIFICATE-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.json b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.json
new file mode 100644
index 0000000..28b249d
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.json
@@ -0,0 +1,9 @@
+{
+ "sans": [
+ "nsq-http.site.quack-lab.dev"
+ ],
+ "issuer_data": {
+ "url": "https://acme-v02.api.letsencrypt.org/acme/cert/06cdf075393898aaba1aa87ee2640b99a59a",
+ "ca": "https://acme-v02.api.letsencrypt.org/directory"
+ }
+}
\ No newline at end of file
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.key b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.key
new file mode 100644
index 0000000..359742c
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/nsq-http.site.quack-lab.dev/nsq-http.site.quack-lab.dev.key
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIERsont34f+GqkCq7v5DWcoU/Rxg4MwIjGyqCvFsocHJoAoGCCqGSM49
+AwEHoUQDQgAECnq1Rw9ZfyS2ZL/pS0LbdcsmNTsa1CZfoL4ljLfd2EmeIKmk64WO
+orCgPBpRMTj5QpwFypqqT98raxkUcnkYKw==
+-----END EC PRIVATE KEY-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.crt b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.crt
new file mode 100644
index 0000000..a5117b6
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.crt
@@ -0,0 +1,49 @@
+-----BEGIN CERTIFICATE-----
+MIIDmzCCAyCgAwIBAgISBRGHZ+DFfRETlBS1IWa81Ti8MAoGCCqGSM49BAMDMDIx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
+ODAeFw0yNTEwMTcxNDM5MDdaFw0yNjAxMTUxNDM5MDZaMCExHzAdBgNVBAMTFnBk
+Zi5zaXRlLnF1YWNrLWxhYi5kZXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASt
+eZp5g9Iy2Owl/NdtmwYsLgau/jyG6Wz/8UwJwwNa1HuUIDQ1HpSd4CIU/rk2blTB
+TBT4XklNMxfbtc+oNSNqo4ICJTCCAiEwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQW
+MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ2
+XAf6Pv+RqoD6bhoJL9vN3KbfWDAfBgNVHSMEGDAWgBSPDROi9i5+0VBsMxg4XVmO
+I3KRyjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lOC5pLmxl
+bmNyLm9yZy8wIQYDVR0RBBowGIIWcGRmLnNpdGUucXVhY2stbGFiLmRldjATBgNV
+HSAEDDAKMAgGBmeBDAECATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTguYy5s
+ZW5jci5vcmcvNjEuY3JsMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcASZybad4d
+fOz8Nt7Nh2SmuFuvCoeAGdFVUvvp6ynd+MMAAAGZ8tHDAwAABAMASDBGAiEAkLHn
+0+kDzKunm4PyZfhe4CRBb4/INptUjsqrvi1Yb74CIQDECsQNe+foiNs7HdQQkSPS
+gpdcXTJNQLjRzTR0ijft1wB2ABmG1Mcoqm/+ugNveCpNAZGqzi1yMQ+uzl1wQS0l
+TMfUAAABmfLRwwUAAAQDAEcwRQIhAObr5yWIQRyQylh9o98rHA8bhRK2MjkV/2a6
+d/kv/s4qAiBTEklSMeXTrAD9YZJTH7+5pZc9BpPVdwGRjureDJQKzzAKBggqhkjO
+PQQDAwNpADBmAjEAuBhvI2AzPcQEWKTV4eUQv6yU1Uc1D7mU2t+FoeDDfXIaENyW
+QunB44vgGXgqRp0jAjEA/OlHBZDLFx/krJEpB7RtheZFgIxDxauuLkDUdonDqx6u
+3VlA6WZOVH1bb+QX1/87
+-----END CERTIFICATE-----
+
+-----BEGIN CERTIFICATE-----
+MIIEVjCCAj6gAwIBAgIQY5WTY8JOcIJxWRi/w9ftVjANBgkqhkiG9w0BAQsFADBP
+MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
+Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
+Fw0yNzAzMTIyMzU5NTlaMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
+bmNyeXB0MQswCQYDVQQDEwJFODB2MBAGByqGSM49AgEGBSuBBAAiA2IABNFl8l7c
+S7QMApzSsvru6WyrOq44ofTUOTIzxULUzDMMNMchIJBwXOhiLxxxs0LXeb5GDcHb
+R6EToMffgSZjO9SNHfY9gjMy9vQr5/WWOrQTZxh7az6NSNnq3u2ubT6HTKOB+DCB
+9TAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
+MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI8NE6L2Ln7RUGwzGDhdWY4j
+cpHKMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEB
+BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzATBgNVHSAE
+DDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5j
+ci5vcmcvMA0GCSqGSIb3DQEBCwUAA4ICAQBnE0hGINKsCYWi0Xx1ygxD5qihEjZ0
+RI3tTZz1wuATH3ZwYPIp97kWEayanD1j0cDhIYzy4CkDo2jB8D5t0a6zZWzlr98d
+AQFNh8uKJkIHdLShy+nUyeZxc5bNeMp1Lu0gSzE4McqfmNMvIpeiwWSYO9w82Ob8
+otvXcO2JUYi3svHIWRm3+707DUbL51XMcY2iZdlCq4Wa9nbuk3WTU4gr6LY8MzVA
+aDQG2+4U3eJ6qUF10bBnR1uuVyDYs9RhrwucRVnfuDj29CMLTsplM5f5wSV5hUpm
+Uwp/vV7M4w4aGunt74koX71n4EdagCsL/Yk5+mAQU0+tue0JOfAV/R6t1k+Xk9s2
+HMQFeoxppfzAVC04FdG9M+AC2JWxmFSt6BCuh3CEey3fE52Qrj9YM75rtvIjsm/1
+Hl+u//Wqxnu1ZQ4jpa+VpuZiGOlWrqSP9eogdOhCGisnyewWJwRQOqK16wiGyZeR
+xs/Bekw65vwSIaVkBruPiTfMOo0Zh4gVa8/qJgMbJbyrwwG97z/PRgmLKCDl8z3d
+tA0Z7qq7fta0Gl24uyuB05dqI5J1LvAzKuWdIjT1tP8qCoxSE/xpix8hX2dt3h+/
+jujUgFPFZ0EVZ0xSyBNRF3MboGZnYXFUxpNjTWPKpagDHJQmqrAcDmWJnMsFY3jS
+u1igv3OefnWjSQ==
+-----END CERTIFICATE-----
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.json b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.json
new file mode 100644
index 0000000..96471a3
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.json
@@ -0,0 +1,9 @@
+{
+ "sans": [
+ "pdf.site.quack-lab.dev"
+ ],
+ "issuer_data": {
+ "url": "https://acme-v02.api.letsencrypt.org/acme/cert/05118767e0c57d11139414b52166bcd538bc",
+ "ca": "https://acme-v02.api.letsencrypt.org/directory"
+ }
+}
\ No newline at end of file
diff --git a/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.key b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.key
new file mode 100644
index 0000000..6f1ba57
--- /dev/null
+++ b/coolify/proxy/caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/pdf.site.quack-lab.dev/pdf.site.quack-lab.dev.key
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEICWkgxD926BsJ/S1FIAPoj4FlpoMTXTWsB0wnMf27j1XoAoGCCqGSM49
+AwEHoUQDQgAErXmaeYPSMtjsJfzXbZsGLC4Grv48huls//FMCcMDWtR7lCA0NR6U
+neAiFP65Nm5UwUwU+F5JTTMX27XPqDUjag==
+-----END EC PRIVATE KEY-----
diff --git a/coolify/proxy/caddy/data/caddy/last_clean.json b/coolify/proxy/caddy/data/caddy/last_clean.json
index 3d87d6a..12b5912 100644
--- a/coolify/proxy/caddy/data/caddy/last_clean.json
+++ b/coolify/proxy/caddy/data/caddy/last_clean.json
@@ -1 +1 @@
-{"tls":{"timestamp":"2025-10-15T07:16:48.987604313Z","instance_id":"dbe630cc-bc9f-443e-b311-aec406294c5c"}}
\ No newline at end of file
+{"tls":{"timestamp":"2025-10-18T12:33:22.477159322Z","instance_id":"dbe630cc-bc9f-443e-b311-aec406294c5c"}}
\ No newline at end of file
diff --git a/coolify/services/n0884oo0ws0s4ocw4c44scss/.env b/coolify/services/n0884oo0ws0s4ocw4c44scss/.env
new file mode 100644
index 0000000..f5d0812
--- /dev/null
+++ b/coolify/services/n0884oo0ws0s4ocw4c44scss/.env
@@ -0,0 +1,3 @@
+SERVICE_NAME_STIRLING_PDF=stirling-pdf
+SERVICE_FQDN_STIRLING_PDF=pdf.site.quack-lab.dev
+SERVICE_URL_STIRLING_PDF=https://pdf.site.quack-lab.dev
\ No newline at end of file
diff --git a/coolify/services/n0884oo0ws0s4ocw4c44scss/docker-compose.yml b/coolify/services/n0884oo0ws0s4ocw4c44scss/docker-compose.yml
new file mode 100644
index 0000000..d3c82aa
--- /dev/null
+++ b/coolify/services/n0884oo0ws0s4ocw4c44scss/docker-compose.yml
@@ -0,0 +1,66 @@
+services:
+ stirling-pdf:
+ image: 'docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest'
+ ports:
+ - '8080:8080'
+ volumes:
+ - 'n0884oo0ws0s4ocw4c44scss_stirling-pdf-extraconfigs:/configs'
+ - 'n0884oo0ws0s4ocw4c44scss_stirling-pdf-customfiles:/customFiles/'
+ - 'n0884oo0ws0s4ocw4c44scss_stirling-pdf-pipeline:/pipeline/'
+ environment:
+ DISABLE_ADDITIONAL_FEATURES: 'false'
+ LANGS: en_GB
+ COOLIFY_RESOURCE_UUID: n0884oo0ws0s4ocw4c44scss
+ COOLIFY_CONTAINER_NAME: stirling-pdf-n0884oo0ws0s4ocw4c44scss
+ COOLIFY_FQDN: pdf.site.quack-lab.dev
+ COOLIFY_URL: 'https://pdf.site.quack-lab.dev'
+ SERVICE_NAME_STIRLING_PDF: stirling-pdf
+ container_name: stirling-pdf-n0884oo0ws0s4ocw4c44scss
+ restart: unless-stopped
+ labels:
+ - coolify.managed=true
+ - coolify.version=4.0.0-beta.434
+ - coolify.serviceId=39
+ - coolify.type=service
+ - coolify.name=stirling-pdf-n0884oo0ws0s4ocw4c44scss
+ - coolify.resourceName=pdf
+ - coolify.projectName=services
+ - coolify.serviceName=stirling-pdf
+ - coolify.environmentName=production
+ - coolify.pullRequestId=0
+ - coolify.service.subId=69
+ - coolify.service.subType=application
+ - coolify.service.subName=stirling-pdf
+ - traefik.enable=true
+ - traefik.http.middlewares.gzip.compress=true
+ - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
+ - traefik.http.routers.http-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.entryPoints=http
+ - traefik.http.routers.http-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.middlewares=redirect-to-https
+ - 'traefik.http.routers.http-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.rule=Host(`pdf.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.https-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.entryPoints=https
+ - traefik.http.routers.https-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.middlewares=gzip
+ - 'traefik.http.routers.https-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.rule=Host(`pdf.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.https-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.tls.certresolver=letsencrypt
+ - traefik.http.routers.https-0-n0884oo0ws0s4ocw4c44scss-stirling-pdf.tls=true
+ - 'caddy_0.encode=zstd gzip'
+ - 'caddy_0.handle_path.0_reverse_proxy={{upstreams 8080}}'
+ - 'caddy_0.handle_path=/*'
+ - caddy_0.header=-Server
+ - 'caddy_0.try_files={path} /index.html /index.php'
+ - 'caddy_0=https://pdf.site.quack-lab.dev'
+ - caddy_ingress_network=n0884oo0ws0s4ocw4c44scss
+ networks:
+ n0884oo0ws0s4ocw4c44scss: null
+volumes:
+ n0884oo0ws0s4ocw4c44scss_stirling-pdf-extraconfigs:
+ name: n0884oo0ws0s4ocw4c44scss_stirling-pdf-extraconfigs
+ n0884oo0ws0s4ocw4c44scss_stirling-pdf-customfiles:
+ name: n0884oo0ws0s4ocw4c44scss_stirling-pdf-customfiles
+ n0884oo0ws0s4ocw4c44scss_stirling-pdf-pipeline:
+ name: n0884oo0ws0s4ocw4c44scss_stirling-pdf-pipeline
+networks:
+ n0884oo0ws0s4ocw4c44scss:
+ name: n0884oo0ws0s4ocw4c44scss
+ external: true
+configs: { }
+secrets: { }
diff --git a/coolify/services/rokg4k0o0sw404gowks8og80/.env b/coolify/services/rokg4k0o0sw404gowks8og80/.env
new file mode 100644
index 0000000..5bf3673
--- /dev/null
+++ b/coolify/services/rokg4k0o0sw404gowks8og80/.env
@@ -0,0 +1,17 @@
+SERVICE_NAME_IMMICH=immich
+SERVICE_NAME_IMMICH_MACHINE_LEARNING=immich-machine-learning
+SERVICE_NAME_REDIS=redis
+SERVICE_NAME_DATABASE=database
+SERVICE_FQDN_IMMICH=immich.site.quack-lab.dev
+SERVICE_FQDN_IMMICH_2283=immich.site.quack-lab.dev
+SERVICE_PASSWORD_POSTGRES=GIeKrmc33b6T40sNgA0nHQzm3nvI1ar1
+SERVICE_URL_IMMICH=https://immich.site.quack-lab.dev
+SERVICE_URL_IMMICH_2283=https://immich.site.quack-lab.dev
+SERVICE_USER_POSTGRES=sHTi28dK0OcwfHwP
+DB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
+DB_USERNAME=$SERVICE_USER_POSTGRES
+POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+POSTGRES_USER=${SERVICE_USER_POSTGRES}
+DB_DATABASE_NAME=immich
+DB_STORAGE_TYPE=SSD
+TZ=Etc/UTC
\ No newline at end of file
diff --git a/coolify/services/rokg4k0o0sw404gowks8og80/docker-compose.yml b/coolify/services/rokg4k0o0sw404gowks8og80/docker-compose.yml
new file mode 100644
index 0000000..e57b839
--- /dev/null
+++ b/coolify/services/rokg4k0o0sw404gowks8og80/docker-compose.yml
@@ -0,0 +1,195 @@
+services:
+ immich:
+ image: 'ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}'
+ volumes:
+ - 'rokg4k0o0sw404gowks8og80_immich-uploads:/usr/src/app/upload'
+ - '/etc/localtime:/etc/localtime:ro'
+ environment:
+ SERVICE_URL_IMMICH_2283: 'https://immich.site.quack-lab.dev'
+ UPLOAD_LOCATION: ./library
+ DB_DATA_LOCATION: ./postgres
+ DB_PASSWORD: $SERVICE_PASSWORD_POSTGRES
+ DB_USERNAME: $SERVICE_USER_POSTGRES
+ DB_DATABASE_NAME: '${DB_DATABASE_NAME:-immich}'
+ TZ: '${TZ:-Etc/UTC}'
+ COOLIFY_RESOURCE_UUID: rokg4k0o0sw404gowks8og80
+ COOLIFY_CONTAINER_NAME: immich-rokg4k0o0sw404gowks8og80
+ COOLIFY_FQDN: immich.site.quack-lab.dev
+ COOLIFY_URL: 'https://immich.site.quack-lab.dev'
+ SERVICE_NAME_IMMICH: immich
+ SERVICE_NAME_IMMICH_MACHINE_LEARNING: immich-machine-learning
+ SERVICE_NAME_REDIS: redis
+ SERVICE_NAME_DATABASE: database
+ depends_on:
+ redis:
+ condition: service_healthy
+ database:
+ condition: service_healthy
+ healthcheck:
+ disable: false
+ container_name: immich-rokg4k0o0sw404gowks8og80
+ restart: unless-stopped
+ labels:
+ - coolify.managed=true
+ - coolify.version=4.0.0-beta.434
+ - coolify.serviceId=40
+ - coolify.type=service
+ - coolify.name=immich-rokg4k0o0sw404gowks8og80
+ - coolify.resourceName=immich
+ - coolify.projectName=services
+ - coolify.serviceName=immich
+ - coolify.environmentName=production
+ - coolify.pullRequestId=0
+ - coolify.service.subId=70
+ - coolify.service.subType=application
+ - coolify.service.subName=immich
+ - traefik.enable=true
+ - traefik.http.middlewares.gzip.compress=true
+ - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
+ - traefik.http.routers.http-0-rokg4k0o0sw404gowks8og80-immich.entryPoints=http
+ - traefik.http.routers.http-0-rokg4k0o0sw404gowks8og80-immich.middlewares=redirect-to-https
+ - 'traefik.http.routers.http-0-rokg4k0o0sw404gowks8og80-immich.rule=Host(`immich.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.http-0-rokg4k0o0sw404gowks8og80-immich.service=http-0-rokg4k0o0sw404gowks8og80-immich
+ - traefik.http.routers.https-0-rokg4k0o0sw404gowks8og80-immich.entryPoints=https
+ - traefik.http.routers.https-0-rokg4k0o0sw404gowks8og80-immich.middlewares=gzip
+ - 'traefik.http.routers.https-0-rokg4k0o0sw404gowks8og80-immich.rule=Host(`immich.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.https-0-rokg4k0o0sw404gowks8og80-immich.service=https-0-rokg4k0o0sw404gowks8og80-immich
+ - traefik.http.routers.https-0-rokg4k0o0sw404gowks8og80-immich.tls.certresolver=letsencrypt
+ - traefik.http.routers.https-0-rokg4k0o0sw404gowks8og80-immich.tls=true
+ - traefik.http.services.http-0-rokg4k0o0sw404gowks8og80-immich.loadbalancer.server.port=2283
+ - traefik.http.services.https-0-rokg4k0o0sw404gowks8og80-immich.loadbalancer.server.port=2283
+ - 'caddy_0.encode=zstd gzip'
+ - 'caddy_0.handle_path.0_reverse_proxy={{upstreams 2283}}'
+ - 'caddy_0.handle_path=/*'
+ - caddy_0.header=-Server
+ - 'caddy_0.try_files={path} /index.html /index.php'
+ - 'caddy_0=https://immich.site.quack-lab.dev'
+ - caddy_ingress_network=rokg4k0o0sw404gowks8og80
+ networks:
+ rokg4k0o0sw404gowks8og80: null
+ immich-machine-learning:
+ container_name: immich-machine-learning-rokg4k0o0sw404gowks8og80
+ image: 'ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}'
+ volumes:
+ - 'rokg4k0o0sw404gowks8og80_immich-model-cache:/cache'
+ environment:
+ UPLOAD_LOCATION: ./library
+ DB_DATA_LOCATION: ./postgres
+ DB_PASSWORD: $SERVICE_PASSWORD_POSTGRES
+ DB_USERNAME: $SERVICE_USER_POSTGRES
+ DB_DATABASE_NAME: '${DB_DATABASE_NAME:-immich}'
+ TZ: '${TZ:-Etc/UTC}'
+ COOLIFY_RESOURCE_UUID: rokg4k0o0sw404gowks8og80
+ COOLIFY_CONTAINER_NAME: immich-machine-learning-rokg4k0o0sw404gowks8og80
+ SERVICE_NAME_IMMICH: immich
+ SERVICE_NAME_IMMICH_MACHINE_LEARNING: immich-machine-learning
+ SERVICE_NAME_REDIS: redis
+ SERVICE_NAME_DATABASE: database
+ healthcheck:
+ disable: false
+ restart: unless-stopped
+ labels:
+ - coolify.managed=true
+ - coolify.version=4.0.0-beta.434
+ - coolify.serviceId=40
+ - coolify.type=service
+ - coolify.name=immich-machine-learning-rokg4k0o0sw404gowks8og80
+ - coolify.resourceName=immich
+ - coolify.projectName=services
+ - coolify.serviceName=immich-machine-learning
+ - coolify.environmentName=production
+ - coolify.pullRequestId=0
+ - coolify.service.subId=71
+ - coolify.service.subType=application
+ - coolify.service.subName=immich-machine-learning
+ networks:
+ rokg4k0o0sw404gowks8og80: null
+ redis:
+ image: 'redis:7.4-alpine'
+ healthcheck:
+ test:
+ - CMD
+ - redis-cli
+ - PING
+ interval: 5s
+ timeout: 10s
+ retries: 20
+ container_name: redis-rokg4k0o0sw404gowks8og80
+ restart: unless-stopped
+ labels:
+ - coolify.managed=true
+ - coolify.version=4.0.0-beta.434
+ - coolify.serviceId=40
+ - coolify.type=service
+ - coolify.name=redis-rokg4k0o0sw404gowks8og80
+ - coolify.resourceName=immich
+ - coolify.projectName=services
+ - coolify.serviceName=redis
+ - coolify.environmentName=production
+ - coolify.pullRequestId=0
+ - coolify.service.subId=24
+ - coolify.service.subType=database
+ - coolify.service.subName=redis
+ networks:
+ rokg4k0o0sw404gowks8og80: null
+ environment:
+ COOLIFY_RESOURCE_UUID: rokg4k0o0sw404gowks8og80
+ COOLIFY_CONTAINER_NAME: redis-rokg4k0o0sw404gowks8og80
+ SERVICE_NAME_IMMICH: immich
+ SERVICE_NAME_IMMICH_MACHINE_LEARNING: immich-machine-learning
+ SERVICE_NAME_REDIS: redis
+ SERVICE_NAME_DATABASE: database
+ database:
+ image: 'ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0'
+ environment:
+ POSTGRES_PASSWORD: '${SERVICE_PASSWORD_POSTGRES}'
+ POSTGRES_USER: '${SERVICE_USER_POSTGRES}'
+ POSTGRES_DB: '${DB_DATABASE_NAME:-immich}'
+ POSTGRES_INITDB_ARGS: '--data-checksums'
+ DB_STORAGE_TYPE: '${DB_STORAGE_TYPE:-SSD}'
+ COOLIFY_RESOURCE_UUID: rokg4k0o0sw404gowks8og80
+ COOLIFY_CONTAINER_NAME: database-rokg4k0o0sw404gowks8og80
+ SERVICE_NAME_IMMICH: immich
+ SERVICE_NAME_IMMICH_MACHINE_LEARNING: immich-machine-learning
+ SERVICE_NAME_REDIS: redis
+ SERVICE_NAME_DATABASE: database
+ volumes:
+ - 'rokg4k0o0sw404gowks8og80_immich-postgres-data:/var/lib/postgresql/data'
+ healthcheck:
+ test:
+ - CMD-SHELL
+ - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
+ interval: 5s
+ timeout: 20s
+ retries: 10
+ container_name: database-rokg4k0o0sw404gowks8og80
+ restart: unless-stopped
+ labels:
+ - coolify.managed=true
+ - coolify.version=4.0.0-beta.434
+ - coolify.serviceId=40
+ - coolify.type=service
+ - coolify.name=database-rokg4k0o0sw404gowks8og80
+ - coolify.resourceName=immich
+ - coolify.projectName=services
+ - coolify.serviceName=database
+ - coolify.environmentName=production
+ - coolify.pullRequestId=0
+ - coolify.service.subId=25
+ - coolify.service.subType=database
+ - coolify.service.subName=database
+ networks:
+ rokg4k0o0sw404gowks8og80: null
+volumes:
+ rokg4k0o0sw404gowks8og80_immich-uploads:
+ name: rokg4k0o0sw404gowks8og80_immich-uploads
+ rokg4k0o0sw404gowks8og80_immich-model-cache:
+ name: rokg4k0o0sw404gowks8og80_immich-model-cache
+ rokg4k0o0sw404gowks8og80_immich-postgres-data:
+ name: rokg4k0o0sw404gowks8og80_immich-postgres-data
+networks:
+ rokg4k0o0sw404gowks8og80:
+ name: rokg4k0o0sw404gowks8og80
+ external: true
+configs: { }
+secrets: { }
diff --git a/coolify/services/sw0k48s8kckoo80g80co0c0o/docker-compose.yml b/coolify/services/sw0k48s8kckoo80g80co0c0o/docker-compose.yml
index 41cac33..2b9298b 100644
--- a/coolify/services/sw0k48s8kckoo80g80co0c0o/docker-compose.yml
+++ b/coolify/services/sw0k48s8kckoo80g80co0c0o/docker-compose.yml
@@ -66,28 +66,46 @@ services:
- traefik.http.routers.http-0-sw0k48s8kckoo80g80co0c0o-nsqd.middlewares=redirect-to-https
- 'traefik.http.routers.http-0-sw0k48s8kckoo80g80co0c0o-nsqd.rule=Host(`nsq.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.http-0-sw0k48s8kckoo80g80co0c0o-nsqd.service=http-0-sw0k48s8kckoo80g80co0c0o-nsqd
+ - traefik.http.routers.http-1-sw0k48s8kckoo80g80co0c0o-nsqd.entryPoints=http
+ - traefik.http.routers.http-1-sw0k48s8kckoo80g80co0c0o-nsqd.middlewares=redirect-to-https
+ - 'traefik.http.routers.http-1-sw0k48s8kckoo80g80co0c0o-nsqd.rule=Host(`nsq-http.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.http-1-sw0k48s8kckoo80g80co0c0o-nsqd.service=http-1-sw0k48s8kckoo80g80co0c0o-nsqd
- traefik.http.routers.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.entryPoints=https
- traefik.http.routers.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.middlewares=gzip
- 'traefik.http.routers.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.rule=Host(`nsq.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.service=https-0-sw0k48s8kckoo80g80co0c0o-nsqd
- traefik.http.routers.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.tls.certresolver=letsencrypt
- traefik.http.routers.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.tls=true
+ - traefik.http.routers.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.entryPoints=https
+ - traefik.http.routers.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.middlewares=gzip
+ - 'traefik.http.routers.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.rule=Host(`nsq-http.site.quack-lab.dev`) && PathPrefix(`/`)'
+ - traefik.http.routers.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.service=https-1-sw0k48s8kckoo80g80co0c0o-nsqd
+ - traefik.http.routers.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.tls.certresolver=letsencrypt
+ - traefik.http.routers.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.tls=true
- traefik.http.services.http-0-sw0k48s8kckoo80g80co0c0o-nsqd.loadbalancer.server.port=4151
+ - traefik.http.services.http-1-sw0k48s8kckoo80g80co0c0o-nsqd.loadbalancer.server.port=4151
- traefik.http.services.https-0-sw0k48s8kckoo80g80co0c0o-nsqd.loadbalancer.server.port=4151
+ - traefik.http.services.https-1-sw0k48s8kckoo80g80co0c0o-nsqd.loadbalancer.server.port=4151
- 'caddy_0.encode=zstd gzip'
- 'caddy_0.handle_path.0_reverse_proxy={{upstreams 4151}}'
- 'caddy_0.handle_path=/*'
- caddy_0.header=-Server
- 'caddy_0.try_files={path} /index.html /index.php'
- 'caddy_0=https://nsq.site.quack-lab.dev'
+ - 'caddy_1.encode=zstd gzip'
+ - 'caddy_1.handle_path.1_reverse_proxy={{upstreams 4151}}'
+ - 'caddy_1.handle_path=/*'
+ - caddy_1.header=-Server
+ - 'caddy_1.try_files={path} /index.html /index.php'
+ - 'caddy_1=https://nsq-http.site.quack-lab.dev'
- caddy_ingress_network=sw0k48s8kckoo80g80co0c0o
networks:
sw0k48s8kckoo80g80co0c0o: null
environment:
COOLIFY_RESOURCE_UUID: sw0k48s8kckoo80g80co0c0o
COOLIFY_CONTAINER_NAME: nsqd-sw0k48s8kckoo80g80co0c0o
- COOLIFY_FQDN: nsq.site.quack-lab.dev
- COOLIFY_URL: 'https://nsq.site.quack-lab.dev'
+ COOLIFY_FQDN: 'nsq.site.quack-lab.dev,nsq-http.site.quack-lab.dev'
+ COOLIFY_URL: 'https://nsq.site.quack-lab.dev,https://nsq-http.site.quack-lab.dev'
SERVICE_NAME_NSQLOOKUPD: nsqlookupd
SERVICE_NAME_NSQD: nsqd
SERVICE_NAME_NSQADMIN: nsqadmin
diff --git a/syncthing-sparky/config.xml b/syncthing-sparky/config.xml
index a87fd68..c82e32d 100644
--- a/syncthing-sparky/config.xml
+++ b/syncthing-sparky/config.xml
@@ -1642,6 +1642,9 @@
basic
+
+
+
@@ -2114,54 +2117,6 @@
4096
-
- basic
-
-
-
-
-
-
-
-
-
- 10
-
-
-
- 3600
-
- basic
-
- 0
- 0
- 0
- random
- false
- 0
- 0
- 1
- 10
- false
- false
- .stfolder
- false
- 0
- 16
- false
- standard
- standard
- false
- false
- false
- false
- false
- false
-
- 1024
- 4096
-
-
basic