This commit is contained in:
Sparky
2025-10-16 10:34:43 +01:00
parent 6f6d7b57cf
commit 205fafb52b
29 changed files with 847 additions and 5 deletions

View File

@@ -7,6 +7,14 @@ https://actual.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
https://auth.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
reverse_proxy 10.0.60.4:9000
}
header -Server
try_files {path} /index.html /index.php
}
https://authwarden.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
@@ -70,6 +78,14 @@ https://grafana.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
https://grist.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
reverse_proxy 10.0.59.2:8484
}
header -Server
try_files {path} /index.html /index.php
}
https://jelly.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
@@ -147,6 +163,13 @@ https://pocketbase-shoppinglist.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
https://pocketbase-truckermajster.site.quack-lab.dev {
handle_path /* {
reverse_proxy 10.0.56.2:8080
}
header -Server
try_files {path} /index.html /index.php
}
https://pocketbase-youtube-seencounter.site.quack-lab.dev {
encode zstd gzip
handle_path /* {
@@ -155,6 +178,13 @@ https://pocketbase-youtube-seencounter.site.quack-lab.dev {
header -Server
try_files {path} /index.html /index.php
}
https://pocketbase-youtube-timestamps.site.quack-lab.dev {
handle_path /* {
reverse_proxy 10.0.57.2:8080
}
header -Server
try_files {path} /index.html /index.php
}
https://portainer.site.quack-lab.dev {
encode zstd gzip
handle_path /* {

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
-----BEGIN CERTIFICATE-----
MIIDnDCCAyOgAwIBAgISBU+Vys8TShiwfq4ybidhUMY4MAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
ODAeFw0yNTEwMTYwODMwMTBaFw0yNjAxMTQwODMwMDlaMCIxIDAeBgNVBAMTF2F1
dGguc2l0ZS5xdWFjay1sYWIuZGV2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
0/BbxIW6Im0B+GriasP5LM2NoiPXilnpLq9Ycc4Awpie1nBFy09Y8ASg3sDnyCXo
s3vkwmpskj+flJdPblQAeqOCAicwggIjMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU
949bBGM7ttKu/S1PmOmTFSPxx88wHwYDVR0jBBgwFoAUjw0TovYuftFQbDMYOF1Z
jiNykcowMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTguaS5s
ZW5jci5vcmcvMCIGA1UdEQQbMBmCF2F1dGguc2l0ZS5xdWFjay1sYWIuZGV2MBMG
A1UdIAQMMAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9lOC5j
LmxlbmNyLm9yZy81Ny5jcmwwggEGBgorBgEEAdZ5AgQCBIH3BIH0APIAdwAZhtTH
KKpv/roDb3gqTQGRqs4tcjEPrs5dcEEtJUzH1AAAAZnsWaFHAAAEAwBIMEYCIQDb
XMesHdiiBKrD47HP7n+jkJ2lkbDBpeFB6Ol4kWG2XAIhALMqsWNmy+wsLio2GTvZ
TeSXXQcngcrOyAWKpYR1m1qYAHcAlpdkv1VYl633Q4doNwhCd+nwOtX2pPM2bkak
Pw/KqcYAAAGZ7FmhdAAABAMASDBGAiEA+d9ICZIT0xJLJmPTGVvpcTfpH8PT2sps
CIrYoO5idFYCIQCarYqfDtJ5mxEQmwIZEPMLauWEjwSnTcRhIvkKdRKbejAKBggq
hkjOPQQDAwNnADBkAjBvFYSmsDrWDS1QNl+HIkSnwcs9JSBp+c4jbNy9r9dzDWhd
9WN+7S3UuoLYR9HNOfECMBbiJlZUEPoeiSGPU83XMaH+KxNbQyIyOBvdTV8SV4uB
kblTTGotDFseN/yChKNsnA==
-----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-----

View File

@@ -0,0 +1,9 @@
{
"sans": [
"auth.site.quack-lab.dev"
],
"issuer_data": {
"url": "https://acme-v02.api.letsencrypt.org/acme/cert/054f95cacf134a18b07eae326e276150c638",
"ca": "https://acme-v02.api.letsencrypt.org/directory"
}
}

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIO0VKy2cdclorWmAaL1fCBUy3sGu7mzYnGafqzOhNWJjoAoGCCqGSM49
AwEHoUQDQgAE0/BbxIW6Im0B+GriasP5LM2NoiPXilnpLq9Ycc4Awpie1nBFy09Y
8ASg3sDnyCXos3vkwmpskj+flJdPblQAeg==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,49 @@
-----BEGIN CERTIFICATE-----
MIIDnTCCAyOgAwIBAgISBcsskq7kiZxXKd5jXA3LSEDRMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NzAeFw0yNTEwMTYwODI4MDRaFw0yNjAxMTQwODI4MDNaMCMxITAfBgNVBAMTGGdy
aXN0LnNpdGUucXVhY2stbGFiLmRldjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BMFr4TmcWjfosSNdMi0aF3BtOHIRYikZ6iHSwzUTYtRlUkYBIu7h936+B20nEQCG
Dz+jg61LBTqIE7kNXo0X1MqjggImMIICIjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0l
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYE
FOIt1EoT4kO9SX0vJh9Tlq8fiqLvMB8GA1UdIwQYMBaAFK5IntyHHUSgb9qi5WB0
BHjCnACAMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U3Lmku
bGVuY3Iub3JnLzAjBgNVHREEHDAaghhncmlzdC5zaXRlLnF1YWNrLWxhYi5kZXYw
EwYDVR0gBAwwCjAIBgZngQwBAgEwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2U3
LmMubGVuY3Iub3JnLzgyLmNybDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AEmc
m2neHXzs/DbezYdkprhbrwqHgBnRVVL76esp3fjDAAABmexXtC8AAAQDAEcwRQIh
AKeq8lDCCT27v/23z81J3yNQXTo09tX7dlGu1ifmFeaeAiBY7pDOSHWN00DNHsNU
CYVhBrDigHPpx0nN3sSHNW9ziwB2AJaXZL9VWJet90OHaDcIQnfp8DrV9qTzNm5G
pD8PyqnGAAABmexXtHMAAAQDAEcwRQIgMWhWVbgnDKWuhbOuLriZSWGXxbIwS+RI
J82XthX4e58CIQCNlkPTIWHhMFuEVjkfzoQtNhU19QRXbuE+1KxOrIjZkTAKBggq
hkjOPQQDAwNoADBlAjEA0MUzr8uyu9MxrGzWZZveB+iRUsacGDCQSzqsmo8+etit
beR9GKFuSoVHk8Ym8wpVAjA8TUNL2KWL1Afngn5FQSWX7ECuOK8nvsD2LjP5HJx+
ZLTWEEqvNxiAZU2ceYcBEms=
-----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-----

View File

@@ -0,0 +1,9 @@
{
"sans": [
"grist.site.quack-lab.dev"
],
"issuer_data": {
"url": "https://acme-v02.api.letsencrypt.org/acme/cert/05cb2c92aee4899c5729de635c0dcb4840d1",
"ca": "https://acme-v02.api.letsencrypt.org/directory"
}
}

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEICsX4lQwZdrP9AttKSz3l+3fG0DOk/XF7FBwZdGzDSbboAoGCCqGSM49
AwEHoUQDQgAEwWvhOZxaN+ixI10yLRoXcG04chFiKRnqIdLDNRNi1GVSRgEi7uH3
fr4HbScRAIYPP6ODrUsFOogTuQ1ejRfUyg==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,50 @@
-----BEGIN CERTIFICATE-----
MIIDxTCCA0ugAwIBAgISBhO2ydrqb3YmR4XR7AUz8O7PMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NzAeFw0yNTEwMTMxMjQ3NDhaFw0yNjAxMTExMjQ3NDdaMDcxNTAzBgNVBAMTLHBv
Y2tldGJhc2UtdHJ1Y2tlcm1hanN0ZXIuc2l0ZS5xdWFjay1sYWIuZGV2MFkwEwYH
KoZIzj0CAQYIKoZIzj0DAQcDQgAEWxUy4Ik5Afp4L4l8QeXO6KHtvHt3DWNIPyRQ
pmgGPrZKDMtWf3HEnZUrb5Rn3DT6khc/aRpbEKJh3+5iz9A+gqOCAjowggI2MA4G
A1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUPZK2w/YlUOEutPqVjima4cMmMNEwHwYDVR0j
BBgwFoAUrkie3IcdRKBv2qLlYHQEeMKcAIAwMgYIKwYBBQUHAQEEJjAkMCIGCCsG
AQUFBzAChhZodHRwOi8vZTcuaS5sZW5jci5vcmcvMDcGA1UdEQQwMC6CLHBvY2tl
dGJhc2UtdHJ1Y2tlcm1hanN0ZXIuc2l0ZS5xdWFjay1sYWIuZGV2MBMGA1UdIAQM
MAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9lNy5jLmxlbmNy
Lm9yZy84MC5jcmwwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgCWl2S/VViXrfdD
h2g3CEJ36fA61fak8zZuRqQ/D8qpxgAAAZnd0mpbAAAEAwBHMEUCIQDZ/1HQsoKp
UHWkqPL9+7N321cNlTwYhi5xDJuErw27EAIgdbuIAKBcZ9UYkZ+zuOeMZDxDHOM4
Laq/dq63gRs2rOIAdgDLOPcViXyEoURfW8Hd+8lu8ppZzUcKaQWFsMsUwxRY5wAA
AZnd0nIRAAAEAwBHMEUCIBacRhikhEbNPP4drtsE/pqoVcVN/xrupFIRdb3uxM5P
AiEA/DOznNcjanDgawlOMj6gHjpykAePrS6MFvuODoHaGC0wCgYIKoZIzj0EAwMD
aAAwZQIxAONcFllNrqwoUGvth55hswh3AQLBwjN5TYAZHZl0jMMXC6KVuAG+ljeX
zqNPz0jHHQIwGcozVhs3vh5vU6/ISXBFipIW+rTIZj84RVQYGZ6rDGYaNrqB29aq
38lf2y6dyUv8
-----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-----

View File

@@ -0,0 +1,9 @@
{
"sans": [
"pocketbase-truckermajster.site.quack-lab.dev"
],
"issuer_data": {
"url": "https://acme-v02.api.letsencrypt.org/acme/cert/0613b6c9daea6f76264785d1ec0533f0eecf",
"ca": "https://acme-v02.api.letsencrypt.org/directory"
}
}

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIGrPC3bbk7pRjUI3pZErdXe6wuOSOwhZ3GtN7mku/8hkoAoGCCqGSM49
AwEHoUQDQgAEWxUy4Ik5Afp4L4l8QeXO6KHtvHt3DWNIPyRQpmgGPrZKDMtWf3HE
nZUrb5Rn3DT6khc/aRpbEKJh3+5iz9A+gg==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,50 @@
-----BEGIN CERTIFICATE-----
MIIDzzCCA1SgAwIBAgISBeeWE8810REg5pSyKf8Fvi1vMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
ODAeFw0yNTEwMTQwNjI0NTlaFw0yNjAxMTIwNjI0NThaMDsxOTA3BgNVBAMTMHBv
Y2tldGJhc2UteW91dHViZS10aW1lc3RhbXBzLnNpdGUucXVhY2stbGFiLmRldjBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHdfEgHmGYGG0j1anjsZs/ALDEuxZiI+
8K8ulObkkorYjzZsUgEwK1EicBleqdIGsKKzon2qz+lXCnIKqeqKXOSjggI/MIIC
OzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBLHn/hUH8PNEKlYK6mX7ZeTCW+RMB8G
A1UdIwQYMBaAFI8NE6L2Ln7RUGwzGDhdWY4jcpHKMDIGCCsGAQUFBwEBBCYwJDAi
BggrBgEFBQcwAoYWaHR0cDovL2U4LmkubGVuY3Iub3JnLzA7BgNVHREENDAygjBw
b2NrZXRiYXNlLXlvdXR1YmUtdGltZXN0YW1wcy5zaXRlLnF1YWNrLWxhYi5kZXYw
EwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2U4
LmMubGVuY3Iub3JnLzExMi5jcmwwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgBJ
nJtp3h187Pw23s2HZKa4W68Kh4AZ0VVS++nrKd34wwAAAZnhmks4AAAEAwBHMEUC
IBb4GuNwZTtNp7VfjG/gNohQB3DG/mPsKv1jxUSFVudAAiEAgUUw3fHk9/c1G9g7
jpxGMVYrzinPGsG+0H35QxBH9CoAdgDLOPcViXyEoURfW8Hd+8lu8ppZzUcKaQWF
sMsUwxRY5wAAAZnhmktWAAAEAwBHMEUCIQD3RWU8LniiwR9AzfZiqux1jtWG354J
R5rDvFeNyClXSQIgdOrnJgIvUmqe0PRGQfOI9fGp4pcJxtfZTTE5CTZWnWYwCgYI
KoZIzj0EAwMDaQAwZgIxAO2KioYm14rp8TvUUkU+Lv3z3G2aqE7SzIaxrZ0Jhuw4
QaqVR4YgUXHh6MVyN822mAIxAPfjnXaIdaC+ci8m3s5wD8CBuSFuIPCYu0KXWiPW
TMuilA2HV5sZM8JYrjM7Goo6Iw==
-----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-----

View File

@@ -0,0 +1,9 @@
{
"sans": [
"pocketbase-youtube-timestamps.site.quack-lab.dev"
],
"issuer_data": {
"url": "https://acme-v02.api.letsencrypt.org/acme/cert/05e79613cf35d11120e694b229ff05be2d6f",
"ca": "https://acme-v02.api.letsencrypt.org/directory"
}
}

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIATAZ+9RJu8E1N8ec0lT1Dz1xN/lYJU655jWKz3cB21moAoGCCqGSM49
AwEHoUQDQgAEd18SAeYZgYbSPVqeOxmz8AsMS7FmIj7wry6U5uSSitiPNmxSATAr
USJwGV6p0gaworOifarP6VcKcgqp6opc5A==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,49 @@
-----BEGIN CERTIFICATE-----
MIIDrDCCAzOgAwIBAgISBjhDmE7yAc/Ls0jINKBAEpOnMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NzAeFw0yNTEwMTYwNDUzMDJaFw0yNjAxMTQwNDUzMDFaMCsxKTAnBgNVBAMTIHdp
cmVndWFyZGVhc3kuc2l0ZS5xdWFjay1sYWIuZGV2MFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAE2/vosG5NvtDF93GSX9AwqQkseex0RY1PXCpRkdLDYO1dvs6pz0/R
/KbvKXa0swhxNG3Xwn7NIWHEVYzeV+sH/KOCAi4wggIqMA4GA1UdDwEB/wQEAwIH
gDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
BgNVHQ4EFgQU29UQWqYGbmWamK7cF7p0OwTlJkUwHwYDVR0jBBgwFoAUrkie3Icd
RKBv2qLlYHQEeMKcAIAwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRw
Oi8vZTcuaS5sZW5jci5vcmcvMCsGA1UdEQQkMCKCIHdpcmVndWFyZGVhc3kuc2l0
ZS5xdWFjay1sYWIuZGV2MBMGA1UdIAQMMAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQw
IqAgoB6GHGh0dHA6Ly9lNy5jLmxlbmNyLm9yZy80MC5jcmwwggEEBgorBgEEAdZ5
AgQCBIH1BIHyAPAAdgBJnJtp3h187Pw23s2HZKa4W68Kh4AZ0VVS++nrKd34wwAA
AZnrktRbAAAEAwBHMEUCIQCpEkq+oiXD3oQPiEuoCkbDzAtYjCZwD2y46kbfVGKG
3AIgfq3aN7Ge1Shz2qSgPAXn64aq7bjE8WipA/zHqNM88ukAdgAZhtTHKKpv/roD
b3gqTQGRqs4tcjEPrs5dcEEtJUzH1AAAAZnrktRwAAAEAwBHMEUCICqVyLfdQhCQ
4H7HQzfSKZN0Uz4u6EcofglNwuNC2wtrAiEAvsgcZl6ZGyNgqUYaVAHJ5tlpoKmR
bN0OUIstL46Pma8wCgYIKoZIzj0EAwMDZwAwZAIwdg6cAR6i/XUqW/bqOLtkKeau
h2vIE2SzcM8J7oihX/dAYqKHG3Jy0XhEinjFAtf9AjAdYsBUGd3meFOYSj65V0fh
TgmNJo94VseYVtWo4PYdYEi8qK5SjZd5F17ETZkcNuI=
-----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-----

View File

@@ -0,0 +1,9 @@
{
"sans": [
"wireguardeasy.site.quack-lab.dev"
],
"issuer_data": {
"url": "https://acme-v02.api.letsencrypt.org/acme/cert/063843984ef201cfcbb348c834a0401293a7",
"ca": "https://acme-v02.api.letsencrypt.org/directory"
}
}

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIBF/mQ5c/IgjjjLUIbXg9JGvUGq2PZXJGCvZKJ7/UxRAoAoGCCqGSM49
AwEHoUQDQgAE2/vosG5NvtDF93GSX9AwqQkseex0RY1PXCpRkdLDYO1dvs6pz0/R
/KbvKXa0swhxNG3Xwn7NIWHEVYzeV+sH/A==
-----END EC PRIVATE KEY-----

View File

@@ -1 +1 @@
{"tls":{"timestamp":"2025-10-11T13:55:11.933622047Z","instance_id":"dbe630cc-bc9f-443e-b311-aec406294c5c"}}
{"tls":{"timestamp":"2025-10-15T07:16:48.987604313Z","instance_id":"dbe630cc-bc9f-443e-b311-aec406294c5c"}}

View File

@@ -0,0 +1,3 @@
SERVICE_NAME_POCKETBASE=pocketbase
SERVICE_FQDN_POCKETBASE=pocketbase-truckermajster.site.quack-lab.dev
SERVICE_URL_POCKETBASE=https://pocketbase-truckermajster.site.quack-lab.dev

View File

@@ -0,0 +1,57 @@
services:
pocketbase:
image: 'ghcr.io/coollabsio/pocketbase:latest'
environment:
SERVICE_URL_POCKETBASE_8080: null
COOLIFY_RESOURCE_UUID: acks4c88sgc44socs48ksc48
COOLIFY_CONTAINER_NAME: pocketbase-acks4c88sgc44socs48ksc48
COOLIFY_FQDN: pocketbase-truckermajster.site.quack-lab.dev
COOLIFY_URL: 'https://pocketbase-truckermajster.site.quack-lab.dev'
SERVICE_NAME_POCKETBASE: pocketbase
volumes:
- 'acks4c88sgc44socs48ksc48_pocketbase-data:/app/pb_data'
- 'acks4c88sgc44socs48ksc48_pocketbase-hooks:/app/pb_hooks'
container_name: pocketbase-acks4c88sgc44socs48ksc48
restart: unless-stopped
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=29
- coolify.type=service
- coolify.name=pocketbase-acks4c88sgc44socs48ksc48
- coolify.resourceName=pocketbase-truckermajster
- coolify.projectName=services
- coolify.serviceName=pocketbase
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=43
- coolify.service.subType=application
- coolify.service.subName=pocketbase
- traefik.enable=true
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.routers.http-0-acks4c88sgc44socs48ksc48-pocketbase.entryPoints=http
- traefik.http.routers.http-0-acks4c88sgc44socs48ksc48-pocketbase.middlewares=redirect-to-https
- 'traefik.http.routers.http-0-acks4c88sgc44socs48ksc48-pocketbase.rule=Host(`pocketbase-truckermajster.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.https-0-acks4c88sgc44socs48ksc48-pocketbase.entryPoints=https
- 'traefik.http.routers.https-0-acks4c88sgc44socs48ksc48-pocketbase.rule=Host(`pocketbase-truckermajster.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.https-0-acks4c88sgc44socs48ksc48-pocketbase.tls.certresolver=letsencrypt
- traefik.http.routers.https-0-acks4c88sgc44socs48ksc48-pocketbase.tls=true
- '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://pocketbase-truckermajster.site.quack-lab.dev'
- caddy_ingress_network=acks4c88sgc44socs48ksc48
networks:
acks4c88sgc44socs48ksc48: null
volumes:
acks4c88sgc44socs48ksc48_pocketbase-data:
name: acks4c88sgc44socs48ksc48_pocketbase-data
acks4c88sgc44socs48ksc48_pocketbase-hooks:
name: acks4c88sgc44socs48ksc48_pocketbase-hooks
networks:
acks4c88sgc44socs48ksc48:
name: acks4c88sgc44socs48ksc48
external: true
configs: { }
secrets: { }

View File

@@ -0,0 +1,5 @@
SERVICE_NAME_POCKETBASE=pocketbase
SERVICE_FQDN_POCKETBASE=pocketbase-youtube-timestamps.site.quack-lab.dev
SERVICE_FQDN_POCKETBASE_8080=pocketbase-youtube-timestamps.site.quack-lab.dev
SERVICE_URL_POCKETBASE=https://pocketbase-youtube-timestamps.site.quack-lab.dev
SERVICE_URL_POCKETBASE_8080=https://pocketbase-youtube-timestamps.site.quack-lab.dev

View File

@@ -0,0 +1,61 @@
services:
pocketbase:
image: 'ghcr.io/coollabsio/pocketbase:latest'
environment:
SERVICE_URL_POCKETBASE_8080: 'https://pocketbase-youtube-timestamps.site.quack-lab.dev'
COOLIFY_RESOURCE_UUID: mc0sgkssoc48g44sgwg80sg8
COOLIFY_CONTAINER_NAME: pocketbase-mc0sgkssoc48g44sgwg80sg8
COOLIFY_FQDN: pocketbase-youtube-timestamps.site.quack-lab.dev
COOLIFY_URL: 'https://pocketbase-youtube-timestamps.site.quack-lab.dev'
SERVICE_NAME_POCKETBASE: pocketbase
volumes:
- 'mc0sgkssoc48g44sgwg80sg8_pocketbase-data:/app/pb_data'
- 'mc0sgkssoc48g44sgwg80sg8_pocketbase-hooks:/app/pb_hooks'
container_name: pocketbase-mc0sgkssoc48g44sgwg80sg8
restart: unless-stopped
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=30
- coolify.type=service
- coolify.name=pocketbase-mc0sgkssoc48g44sgwg80sg8
- coolify.resourceName=pocketbase-youtube-timestamps
- coolify.projectName=services
- coolify.serviceName=pocketbase
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=44
- coolify.service.subType=application
- coolify.service.subName=pocketbase
- traefik.enable=true
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.routers.http-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.entryPoints=http
- traefik.http.routers.http-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.middlewares=redirect-to-https
- 'traefik.http.routers.http-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.rule=Host(`pocketbase-youtube-timestamps.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.http-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.service=http-0-mc0sgkssoc48g44sgwg80sg8-pocketbase
- traefik.http.routers.https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.entryPoints=https
- 'traefik.http.routers.https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.rule=Host(`pocketbase-youtube-timestamps.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.service=https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase
- traefik.http.routers.https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.tls.certresolver=letsencrypt
- traefik.http.routers.https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.tls=true
- traefik.http.services.http-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.loadbalancer.server.port=8080
- traefik.http.services.https-0-mc0sgkssoc48g44sgwg80sg8-pocketbase.loadbalancer.server.port=8080
- '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://pocketbase-youtube-timestamps.site.quack-lab.dev'
- caddy_ingress_network=mc0sgkssoc48g44sgwg80sg8
networks:
mc0sgkssoc48g44sgwg80sg8: null
volumes:
mc0sgkssoc48g44sgwg80sg8_pocketbase-data:
name: mc0sgkssoc48g44sgwg80sg8_pocketbase-data
mc0sgkssoc48g44sgwg80sg8_pocketbase-hooks:
name: mc0sgkssoc48g44sgwg80sg8_pocketbase-hooks
networks:
mc0sgkssoc48g44sgwg80sg8:
name: mc0sgkssoc48g44sgwg80sg8
external: true
configs: { }
secrets: { }

View File

@@ -0,0 +1,5 @@
SERVICE_NAME_GRIST=grist
SERVICE_FQDN_GRIST=grist.site.quack-lab.dev
SERVICE_FQDN_GRIST_8484=grist.site.quack-lab.dev
SERVICE_URL_GRIST=https://grist.site.quack-lab.dev
SERVICE_URL_GRIST_8484=https://grist.site.quack-lab.dev

View File

@@ -0,0 +1,64 @@
services:
grist:
image: gristlabs/grist
environment:
GRIST_DEFAULT_EMAIL: your-email@example.com
GRIST_SESSION_SECRET: invent-a-secret-here
COOLIFY_RESOURCE_UUID: mosswwwc400wc8cgwwgow48k
COOLIFY_CONTAINER_NAME: grist-mosswwwc400wc8cgwwgow48k
COOLIFY_FQDN: grist.site.quack-lab.dev
COOLIFY_URL: 'https://grist.site.quack-lab.dev'
SERVICE_NAME_GRIST: grist
ports:
- '8484:8484'
volumes:
- 'mosswwwc400wc8cgwwgow48k_grist-data:/persist'
container_name: grist-mosswwwc400wc8cgwwgow48k
restart: unless-stopped
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=34
- coolify.type=service
- coolify.name=grist-mosswwwc400wc8cgwwgow48k
- coolify.resourceName=grist
- coolify.projectName=services
- coolify.serviceName=grist
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=62
- coolify.service.subType=application
- coolify.service.subName=grist
- traefik.enable=true
- traefik.http.middlewares.gzip.compress=true
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.routers.http-0-mosswwwc400wc8cgwwgow48k-grist.entryPoints=http
- traefik.http.routers.http-0-mosswwwc400wc8cgwwgow48k-grist.middlewares=redirect-to-https
- 'traefik.http.routers.http-0-mosswwwc400wc8cgwwgow48k-grist.rule=Host(`grist.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.http-0-mosswwwc400wc8cgwwgow48k-grist.service=http-0-mosswwwc400wc8cgwwgow48k-grist
- traefik.http.routers.https-0-mosswwwc400wc8cgwwgow48k-grist.entryPoints=https
- traefik.http.routers.https-0-mosswwwc400wc8cgwwgow48k-grist.middlewares=gzip
- 'traefik.http.routers.https-0-mosswwwc400wc8cgwwgow48k-grist.rule=Host(`grist.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.https-0-mosswwwc400wc8cgwwgow48k-grist.service=https-0-mosswwwc400wc8cgwwgow48k-grist
- traefik.http.routers.https-0-mosswwwc400wc8cgwwgow48k-grist.tls.certresolver=letsencrypt
- traefik.http.routers.https-0-mosswwwc400wc8cgwwgow48k-grist.tls=true
- traefik.http.services.http-0-mosswwwc400wc8cgwwgow48k-grist.loadbalancer.server.port=8484
- traefik.http.services.https-0-mosswwwc400wc8cgwwgow48k-grist.loadbalancer.server.port=8484
- 'caddy_0.encode=zstd gzip'
- 'caddy_0.handle_path.0_reverse_proxy={{upstreams 8484}}'
- 'caddy_0.handle_path=/*'
- caddy_0.header=-Server
- 'caddy_0.try_files={path} /index.html /index.php'
- 'caddy_0=https://grist.site.quack-lab.dev'
- caddy_ingress_network=mosswwwc400wc8cgwwgow48k
networks:
mosswwwc400wc8cgwwgow48k: null
volumes:
mosswwwc400wc8cgwwgow48k_grist-data:
name: mosswwwc400wc8cgwwgow48k_grist-data
networks:
mosswwwc400wc8cgwwgow48k:
name: mosswwwc400wc8cgwwgow48k
external: true
configs: { }
secrets: { }

View File

@@ -1,6 +1,6 @@
services:
n8n:
image: docker.n8n.io/n8nio/n8n
image: 'docker.site.quack-lab.dev/n8n:latest'
environment:
SERVICE_URL_N8N_5678: 'https://n8n.site.quack-lab.dev'
N8N_EDITOR_BASE_URL: '${SERVICE_URL_N8N}'
@@ -35,7 +35,7 @@ services:
- coolify.serviceName=n8n
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=40
- coolify.service.subId=45
- coolify.service.subType=application
- coolify.service.subName=n8n
- traefik.enable=true

View File

@@ -0,0 +1,32 @@
SERVICE_NAME_AUTHENTIK_SERVER=authentik-server
SERVICE_NAME_AUTHENTIK_WORKER=authentik-worker
SERVICE_NAME_POSTGRESQL=postgresql
SERVICE_NAME_REDIS=redis
SERVICE_FQDN_AUTHENTIK_SERVER=auth.site.quack-lab.dev
SERVICE_FQDN_AUTHENTIK_SERVER_9000=auth.site.quack-lab.dev
SERVICE_PASSWORD_64_AUTHENTIKSERVER=t8iPdJYFoImtUOsP09Kj9HSaL7nDyixrgCNNEqz3lG3yWtrFuTg6jeCmXvQlaOur
SERVICE_PASSWORD_POSTGRESQL=w699K0TXvhSl1cZ1qLhjPM9MrSygDM65
SERVICE_PASSWORD_REDIS=AmvOHXlOvLQcCVVOhraRcjhywERht3sR
SERVICE_URL_AUTHENTIK_SERVER=https://auth.site.quack-lab.dev
SERVICE_URL_AUTHENTIK_SERVER_9000=https://auth.site.quack-lab.dev
SERVICE_URL_AUTHENTIKSERVER=https://auth.site.quack-lab.dev
SERVICE_USER_POSTGRESQL=jHJreci3fAaltFn1
AUTHENTIK_POSTGRESQL__PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
AUTHENTIK_POSTGRESQL__USER=${SERVICE_USER_POSTGRESQL}
AUTHENTIK_REDIS__PASSWORD=${SERVICE_PASSWORD_REDIS}
AUTHENTIK_SECRET_KEY=${SERVICE_PASSWORD_64_AUTHENTIKSERVER}
POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
AUTHENTIK_EMAIL__FROM=
AUTHENTIK_EMAIL__HOST=
AUTHENTIK_EMAIL__PASSWORD=
AUTHENTIK_EMAIL__PORT=
AUTHENTIK_EMAIL__TIMEOUT=
AUTHENTIK_EMAIL__USE_SSL=
AUTHENTIK_EMAIL__USE_TLS=
AUTHENTIK_EMAIL__USERNAME=
AUTHENTIK_ERROR_REPORTING__ENABLED=true
POSTGRES_DB=authentik
POSTGRES_HOST=postgresql
REDIS_HOST=redis
REDIS_PASSWORD=uvx2FX73dQI35R5d5jxyOXZbKEdsY3at

View File

@@ -0,0 +1,223 @@
services:
authentik-server:
image: 'ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.6.4}'
restart: unless-stopped
command: server
environment:
SERVICE_URL_AUTHENTIKSERVER_9000: null
AUTHENTIK_REDIS__HOST: '${REDIS_HOST:-redis}'
AUTHENTIK_POSTGRESQL__HOST: '${POSTGRES_HOST:-postgresql}'
AUTHENTIK_POSTGRESQL__USER: '${SERVICE_USER_POSTGRESQL}'
AUTHENTIK_POSTGRESQL__NAME: '${POSTGRES_DB:-authentik}'
AUTHENTIK_POSTGRESQL__PASSWORD: '${SERVICE_PASSWORD_POSTGRESQL}'
AUTHENTIK_SECRET_KEY: '${SERVICE_PASSWORD_64_AUTHENTIKSERVER}'
AUTHENTIK_ERROR_REPORTING__ENABLED: '${AUTHENTIK_ERROR_REPORTING__ENABLED:-true}'
AUTHENTIK_EMAIL__HOST: '${AUTHENTIK_EMAIL__HOST}'
AUTHENTIK_EMAIL__PORT: '${AUTHENTIK_EMAIL__PORT}'
AUTHENTIK_EMAIL__USERNAME: '${AUTHENTIK_EMAIL__USERNAME}'
AUTHENTIK_EMAIL__PASSWORD: '${AUTHENTIK_EMAIL__PASSWORD}'
AUTHENTIK_EMAIL__USE_TLS: '${AUTHENTIK_EMAIL__USE_TLS}'
AUTHENTIK_EMAIL__USE_SSL: '${AUTHENTIK_EMAIL__USE_SSL}'
AUTHENTIK_EMAIL__TIMEOUT: '${AUTHENTIK_EMAIL__TIMEOUT}'
AUTHENTIK_EMAIL__FROM: '${AUTHENTIK_EMAIL__FROM}'
AUTHENTIK_REDIS__PASSWORD: '${SERVICE_PASSWORD_REDIS}'
AUTHENTIK_REDIS__USERNAME: default
COOLIFY_RESOURCE_UUID: yk00skgwskwso4o0c4cwkkcc
COOLIFY_CONTAINER_NAME: authentik-server-yk00skgwskwso4o0c4cwkkcc
COOLIFY_FQDN: auth.site.quack-lab.dev
COOLIFY_URL: 'https://auth.site.quack-lab.dev'
SERVICE_NAME_AUTHENTIK_SERVER: authentik-server
SERVICE_NAME_AUTHENTIK_WORKER: authentik-worker
SERVICE_NAME_POSTGRESQL: postgresql
SERVICE_NAME_REDIS: redis
volumes:
- '/data/coolify/services/yk00skgwskwso4o0c4cwkkcc/media:/media'
- '/data/coolify/services/yk00skgwskwso4o0c4cwkkcc/custom-templates:/templates'
depends_on:
postgresql:
condition: service_healthy
redis:
condition: service_healthy
container_name: authentik-server-yk00skgwskwso4o0c4cwkkcc
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=35
- coolify.type=service
- coolify.name=authentik-server-yk00skgwskwso4o0c4cwkkcc
- coolify.resourceName=auth
- coolify.projectName=services
- coolify.serviceName=authentik-server
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=63
- coolify.service.subType=application
- coolify.service.subName=authentik-server
- traefik.enable=true
- traefik.http.middlewares.gzip.compress=true
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.routers.http-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.entryPoints=http
- traefik.http.routers.http-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.middlewares=redirect-to-https
- 'traefik.http.routers.http-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.rule=Host(`auth.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.http-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.service=http-0-yk00skgwskwso4o0c4cwkkcc-authentik-server
- traefik.http.routers.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.entryPoints=https
- traefik.http.routers.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.middlewares=gzip
- 'traefik.http.routers.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.rule=Host(`auth.site.quack-lab.dev`) && PathPrefix(`/`)'
- traefik.http.routers.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.service=https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server
- traefik.http.routers.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.tls.certresolver=letsencrypt
- traefik.http.routers.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.tls=true
- traefik.http.services.http-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.loadbalancer.server.port=9000
- traefik.http.services.https-0-yk00skgwskwso4o0c4cwkkcc-authentik-server.loadbalancer.server.port=9000
- 'caddy_0.encode=zstd gzip'
- 'caddy_0.handle_path.0_reverse_proxy={{upstreams 9000}}'
- 'caddy_0.handle_path=/*'
- caddy_0.header=-Server
- 'caddy_0.try_files={path} /index.html /index.php'
- 'caddy_0=https://auth.site.quack-lab.dev'
- caddy_ingress_network=yk00skgwskwso4o0c4cwkkcc
networks:
yk00skgwskwso4o0c4cwkkcc: null
authentik-worker:
image: 'ghcr.io/goauthentik/server:${AUTHENTIK_TAG:-2025.6.4}'
restart: unless-stopped
command: worker
environment:
AUTHENTIK_REDIS__HOST: '${REDIS_HOST:-redis}'
AUTHENTIK_POSTGRESQL__HOST: '${POSTGRES_HOST:-postgresql}'
AUTHENTIK_POSTGRESQL__USER: '${SERVICE_USER_POSTGRESQL}'
AUTHENTIK_POSTGRESQL__NAME: '${POSTGRES_DB:-authentik}'
AUTHENTIK_POSTGRESQL__PASSWORD: '${SERVICE_PASSWORD_POSTGRESQL}'
AUTHENTIK_SECRET_KEY: '${SERVICE_PASSWORD_64_AUTHENTIKSERVER}'
AUTHENTIK_ERROR_REPORTING__ENABLED: '${AUTHENTIK_ERROR_REPORTING__ENABLED}'
AUTHENTIK_EMAIL__HOST: '${AUTHENTIK_EMAIL__HOST}'
AUTHENTIK_EMAIL__PORT: '${AUTHENTIK_EMAIL__PORT}'
AUTHENTIK_EMAIL__USERNAME: '${AUTHENTIK_EMAIL__USERNAME}'
AUTHENTIK_EMAIL__PASSWORD: '${AUTHENTIK_EMAIL__PASSWORD}'
AUTHENTIK_EMAIL__USE_TLS: '${AUTHENTIK_EMAIL__USE_TLS}'
AUTHENTIK_EMAIL__USE_SSL: '${AUTHENTIK_EMAIL__USE_SSL}'
AUTHENTIK_EMAIL__TIMEOUT: '${AUTHENTIK_EMAIL__TIMEOUT}'
AUTHENTIK_EMAIL__FROM: '${AUTHENTIK_EMAIL__FROM}'
AUTHENTIK_REDIS__PASSWORD: '${SERVICE_PASSWORD_REDIS}'
AUTHENTIK_REDIS__USERNAME: default
COOLIFY_RESOURCE_UUID: yk00skgwskwso4o0c4cwkkcc
COOLIFY_CONTAINER_NAME: authentik-worker-yk00skgwskwso4o0c4cwkkcc
SERVICE_NAME_AUTHENTIK_SERVER: authentik-server
SERVICE_NAME_AUTHENTIK_WORKER: authentik-worker
SERVICE_NAME_POSTGRESQL: postgresql
SERVICE_NAME_REDIS: redis
user: root
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- '/data/coolify/services/yk00skgwskwso4o0c4cwkkcc/media:/media'
- '/data/coolify/services/yk00skgwskwso4o0c4cwkkcc/certs:/certs'
- '/data/coolify/services/yk00skgwskwso4o0c4cwkkcc/custom-templates:/templates'
depends_on:
postgresql:
condition: service_healthy
redis:
condition: service_healthy
container_name: authentik-worker-yk00skgwskwso4o0c4cwkkcc
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=35
- coolify.type=service
- coolify.name=authentik-worker-yk00skgwskwso4o0c4cwkkcc
- coolify.resourceName=auth
- coolify.projectName=services
- coolify.serviceName=authentik-worker
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=64
- coolify.service.subType=application
- coolify.service.subName=authentik-worker
networks:
yk00skgwskwso4o0c4cwkkcc: null
postgresql:
image: 'postgres:16-alpine'
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- 'pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}'
interval: 2s
timeout: 10s
retries: 15
volumes:
- 'yk00skgwskwso4o0c4cwkkcc_authentik-db:/var/lib/postgresql/data'
environment:
POSTGRES_PASSWORD: '${SERVICE_PASSWORD_POSTGRESQL}'
POSTGRES_USER: '${SERVICE_USER_POSTGRESQL}'
POSTGRES_DB: authentik
COOLIFY_RESOURCE_UUID: yk00skgwskwso4o0c4cwkkcc
COOLIFY_CONTAINER_NAME: postgresql-yk00skgwskwso4o0c4cwkkcc
SERVICE_NAME_AUTHENTIK_SERVER: authentik-server
SERVICE_NAME_AUTHENTIK_WORKER: authentik-worker
SERVICE_NAME_POSTGRESQL: postgresql
SERVICE_NAME_REDIS: redis
container_name: postgresql-yk00skgwskwso4o0c4cwkkcc
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=35
- coolify.type=service
- coolify.name=postgresql-yk00skgwskwso4o0c4cwkkcc
- coolify.resourceName=auth
- coolify.projectName=services
- coolify.serviceName=postgresql
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=16
- coolify.service.subType=database
- coolify.service.subName=postgresql
networks:
yk00skgwskwso4o0c4cwkkcc: null
redis:
image: 'redis:alpine'
command: '--requirepass ${SERVICE_PASSWORD_REDIS} --save 60 1 --loglevel warning'
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- 'redis-cli -a ${SERVICE_PASSWORD_REDIS} ping | grep PONG'
interval: 2s
timeout: 10s
retries: 15
environment:
REDIS_PASSWORD: '${SERVICE_PASSWORD_REDIS}'
COOLIFY_RESOURCE_UUID: yk00skgwskwso4o0c4cwkkcc
COOLIFY_CONTAINER_NAME: redis-yk00skgwskwso4o0c4cwkkcc
SERVICE_NAME_AUTHENTIK_SERVER: authentik-server
SERVICE_NAME_AUTHENTIK_WORKER: authentik-worker
SERVICE_NAME_POSTGRESQL: postgresql
SERVICE_NAME_REDIS: redis
volumes:
- 'yk00skgwskwso4o0c4cwkkcc_redis:/data'
container_name: redis-yk00skgwskwso4o0c4cwkkcc
labels:
- coolify.managed=true
- coolify.version=4.0.0-beta.434
- coolify.serviceId=35
- coolify.type=service
- coolify.name=redis-yk00skgwskwso4o0c4cwkkcc
- coolify.resourceName=auth
- coolify.projectName=services
- coolify.serviceName=redis
- coolify.environmentName=production
- coolify.pullRequestId=0
- coolify.service.subId=17
- coolify.service.subType=database
- coolify.service.subName=redis
networks:
yk00skgwskwso4o0c4cwkkcc: null
volumes:
yk00skgwskwso4o0c4cwkkcc_authentik-db:
name: yk00skgwskwso4o0c4cwkkcc_authentik-db
yk00skgwskwso4o0c4cwkkcc_redis:
name: yk00skgwskwso4o0c4cwkkcc_redis
networks:
yk00skgwskwso4o0c4cwkkcc:
name: yk00skgwskwso4o0c4cwkkcc
external: true
configs: { }
secrets: { }

View File

@@ -58,7 +58,7 @@
valid users = dave
[torrent]
path = /home/dave/volumes/captain--torrent-downloads/_data
path = /mnt/data/docker/volumes/captain--torrent-downloads/_data
read only = no
browsable = yes
guest ok = no

View File

@@ -2615,6 +2615,51 @@
<maxTotalSize>4096</maxTotalSize>
</xattrFilter>
</folder>
<folder id="jytfh-myxwl" label="Games-NuclearOption" path="~/Games-NuclearOption" type="sendreceive" rescanIntervalS="600" fsWatcherEnabled="false" fsWatcherDelayS="10" fsWatcherTimeoutS="0" ignorePerms="false" autoNormalize="true">
<filesystemType>basic</filesystemType>
<device id="HTEPKDB-A4Q3IDU-AD7YGCT-FO6YYDM-2FYSRBF-AQ6CD6U-RZPOJIT-IKQCXQJ" introducedBy="">
<encryptionPassword></encryptionPassword>
</device>
<device id="YZYNYRO-2XQBYZC-YIXNE4U-2Z36EO5-BAXMNG5-CNR2RO3-Z5FEQSB-WLB4MQL" introducedBy="">
<encryptionPassword></encryptionPassword>
</device>
<minDiskFree unit="%">10</minDiskFree>
<versioning type="simple">
<param key="cleanoutDays" val="3"></param>
<param key="keep" val="5"></param>
<cleanupIntervalS>3600</cleanupIntervalS>
<fsPath></fsPath>
<fsType>basic</fsType>
</versioning>
<copiers>0</copiers>
<pullerMaxPendingKiB>0</pullerMaxPendingKiB>
<hashers>0</hashers>
<order>random</order>
<ignoreDelete>false</ignoreDelete>
<scanProgressIntervalS>0</scanProgressIntervalS>
<pullerPauseS>0</pullerPauseS>
<pullerDelayS>1</pullerDelayS>
<maxConflicts>10</maxConflicts>
<disableSparseFiles>false</disableSparseFiles>
<paused>false</paused>
<markerName>.stfolder</markerName>
<copyOwnershipFromParent>false</copyOwnershipFromParent>
<modTimeWindowS>0</modTimeWindowS>
<maxConcurrentWrites>16</maxConcurrentWrites>
<disableFsync>false</disableFsync>
<blockPullOrder>standard</blockPullOrder>
<copyRangeMethod>standard</copyRangeMethod>
<caseSensitiveFS>false</caseSensitiveFS>
<junctionsAsDirs>false</junctionsAsDirs>
<syncOwnership>false</syncOwnership>
<sendOwnership>false</sendOwnership>
<syncXattrs>false</syncXattrs>
<sendXattrs>false</sendXattrs>
<xattrFilter>
<maxSingleEntrySize>1024</maxSingleEntrySize>
<maxTotalSize>4096</maxTotalSize>
</xattrFilter>
</folder>
<folder id="k4igh-aopz9" label="Programs-ModOrganizer" path="~/ModOrganizer" type="sendreceive" rescanIntervalS="600" fsWatcherEnabled="false" fsWatcherDelayS="10" fsWatcherTimeoutS="0" ignorePerms="false" autoNormalize="true">
<filesystemType>basic</filesystemType>
<device id="HTEPKDB-A4Q3IDU-AD7YGCT-FO6YYDM-2FYSRBF-AQ6CD6U-RZPOJIT-IKQCXQJ" introducedBy="">