feat: integrate ntfy.sh push notifications for supervisor

- Add NTFY_TOKEN support to send_alert() — sends Authorization header
  when token is set, backwards-compatible with plain webhook URLs
- Set ALERT_WEBHOOK_URL and NTFY_TOKEN in .env.prod.sops
- Add NTFY_TOKEN= placeholder in .env.dev.sops
- Topic: gWMeiHxj8ZqLbbqT (hard-to-guess, token-gated)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-23 22:02:57 +01:00
parent ebba46f700
commit b5de3e0681
4 changed files with 121 additions and 109 deletions

View File

@@ -1,71 +1,72 @@
#ENC[AES256_GCM,data:K5rgCg==,iv:NKfqoAGi2l5jeiFvf+QxoxC9ANhl7puNclWxFIESLCY=,tag:l3hlkF8O9D2muvNxMtDA0w==,type:comment]
APP_NAME=ENC[AES256_GCM,data:fl4hjYhHa/CVj+4=,iv:ECUJoqrMEamqYHlHUwMUxy+quWPChW08MhaFCWC09K8=,tag:BDn7Jc/48+Vz30YZW00Ztg==,type:str]
SECRET_KEY=ENC[AES256_GCM,data:2gCilpdrIohAPxfDhvfDmd60c1dc/ibUnn+k8+WsRRk=,iv:EJ7R8hugw3fZyuwglsWRWGGZ/PLBMsKfskq2n7k7zXk=,tag:6QJn4+bsRPhP80uaaQzfiw==,type:str]
BASE_URL=ENC[AES256_GCM,data:Kh37YIhKiLVwLnhLUrFeZSTz5IGu,iv:8yFioHoOqCyHuBMdEkRm9lZ+m+1/fSx8/ELqeIeK8hM=,tag:LMJGhz36tkJULuiqCRhtUg==,type:str]
DEBUG=ENC[AES256_GCM,data:TSzZcQ==,iv:sia85xQK2vl2Jd48yNsZ5yALdT3SKLsN5Z7w0SQbZEQ=,tag:H/HSISXQsEc5GPgfsfZASA==,type:str]
#ENC[AES256_GCM,data:RyfrEi05kPMVRYoBn7FdvMZGho29pliBcdiIFaJFGcrnv5DMwfpsa20ulQfKbId3i7P6giRjV76pe7l4/WUeB2OeDhFs/2BzXw==,iv:nKNjwGv7cvNNAy9AU42RsQaMrXPa+eANYpio0IK4f0A=,tag:GTswQ2L1xs/XqNu6QB5CmQ==,type:comment]
ADMIN_EMAILS=ENC[AES256_GCM,data:QOh2L6sLT60I6Dwp8A==,iv:2TU4Z/zMJlO3x9KfOK/8B2KCPfy3Tbj2VPyaPQLeFh0=,tag:SxS/jZ/eYDO2IIiHPShKRQ==,type:str]
#ENC[AES256_GCM,data:4eJgk539GHDF,iv:eZCLeDqY6UpqhfW7lApfV1XEhNONmkGK7e5DQM2uzkw=,tag:sUkkMcjePFWfjPt/1FV4tQ==,type:comment]
DATABASE_PATH=ENC[AES256_GCM,data:rFiaS9PJXyp+mIQ=,iv:+1KpHgt3V+xZQhR7Z2ShJkeihHu7AFw5VcTacdxvgoo=,tag:ZmpASVR6OY59xt4qZydmuw==,type:str]
#ENC[AES256_GCM,data:39BiQe4=,iv:ykThyqIcmCu4dEDFfNM9ZyChXYEkJk88ML7aCNMB3R8=,tag:i35mW7XLuQYFgBE4xfPU4g==,type:comment]
MAGIC_LINK_EXPIRY_MINUTES=ENC[AES256_GCM,data:HJU=,iv:ODdXG2LCG94W1bh4bUfBfSKjOgDSZsKPxc+sz3SLmZM=,tag:NFKp9xfimJRJY37iSV/+Xg==,type:str]
SESSION_LIFETIME_DAYS=ENC[AES256_GCM,data:D6c=,iv:N/KzyRWHEoDsMuItRvUQTKK7T8dT7dzN8PiKG9kyr50=,tag:9i5/gdgkTBnQpM2W0K9gAw==,type:str]
#ENC[AES256_GCM,data:Fui7Xiz1qFOTmdIWl+Hf,iv:X1dc0a6lnaBQai5pNsG0pnYRh6MHgnUpRJlsxdHIDHw=,tag:b1rSNH6vXC3r5n+VERi+fA==,type:comment]
#ENC[AES256_GCM,data:B7QdsSQPqbPSw6M1wK5UWZQo0dy3vC73TmOow4Uc93n561c0o9XFJWQCUeGowgJquvk1BTJf2U4ofMTn+mNhOVf7NDatgOiRFvKpEA==,iv:cAX9BHFSx6nacZf7ProiwndX7N36b43y3LypdjRrTpU=,tag:myq8rkCfqQfN+33gmN04BQ==,type:comment]
#ENC[AES256_GCM,data:rfm9xw==,iv:yWV+DjVlLNdDXw8brZZ98NGMr5pF88Oy14laCyF9XSk=,tag:EKvfFOCjrJD8NTQ/gOym7A==,type:comment]
APP_NAME=ENC[AES256_GCM,data:H4Ho9hHoL4Fo+4c=,iv:hBnuls1xYBtHMxU/womw+Om3JR0yrKXp7+VeiLcZiyM=,tag:oKJiE3VekDwMjpF+evoumQ==,type:str]
SECRET_KEY=ENC[AES256_GCM,data:+5bv1jlS+1DnmKxVxebcdJ7+ADJjvgk3hOqUM5LnB/0=,iv:Y9obfg6ttf12J6L3hgVJr1S4tJoayFHpp2zfUgT1Vek=,tag:RWN2OMZqpNm0uY4YqV9FZg==,type:str]
BASE_URL=ENC[AES256_GCM,data:DSgPTAuGfA9/ntDJ5JT34zVbJush,iv:Lh6vcDVfPfPBi0Bwd34h2CQX+D8bxqWF8O47Oid8EHg=,tag:PoP8DUX+GsAmc7Ntweeing==,type:str]
DEBUG=ENC[AES256_GCM,data:ibm6FA==,iv:nhDzB8x3pe6ehhU69S1ZN+cNN7Cchj7MK+8NUea3Zug=,tag:kcL4esX+uPNdifenuW0TMQ==,type:str]
#ENC[AES256_GCM,data:LdfNHhD4n53JP3blJVGX7lfg2DuaUsFp0p0mI0SPjCOlgJI661jGXjSpvtZP+3Fh7g09KzUNjlhFuugR7082u5WRiQx6ks2BKA==,iv:lHqw7UTr68hZLYyYYbJuB/Mqfyds87NOPl0yE5x4eyU=,tag:rDrOSOqyBIPFq1BC4Ktw8A==,type:comment]
ADMIN_EMAILS=ENC[AES256_GCM,data:0jOhhL5ncjyx7c3hGg==,iv:UdU6U7Qz50KL+Aa1UPo1Vvo0Rhb5aT0MdxN2sFW/sMc=,tag:3LhGEXuXTu2mtMJbnFFsSw==,type:str]
#ENC[AES256_GCM,data:AyuwH3wRLrh7,iv:4A/7vGSqb7CVLePYrgKqGJIz1hqJwC0v5ikKtOhMLUM=,tag:ADfmbAXEZIF8HObsTM3DEg==,type:comment]
DATABASE_PATH=ENC[AES256_GCM,data:zLXck4opQIMGFqc=,iv:mqX3ONrD/hph6teavhSh9m30FAR3hIxQdeeJb4SnOR4=,tag:LgT7C816/wQlYHECZ+1gww==,type:str]
#ENC[AES256_GCM,data:wiAYWd0=,iv:ngyBfrG1QEBh5TXulXlCKSuzRccFhxYs8GPozCz5Uqo=,tag:kdwHR1nQm0bmTbbTrEUqDg==,type:comment]
MAGIC_LINK_EXPIRY_MINUTES=ENC[AES256_GCM,data:Tvc=,iv:eV62HtqgApJXdiHTWLeWj+ESCK3GK4OyHmSgNd6gsxw=,tag:TJAH5lUx/XWKtDu2Vt/mBw==,type:str]
SESSION_LIFETIME_DAYS=ENC[AES256_GCM,data:3gk=,iv:gtuxbN4TPF6kuEr3W8WVxH9cDYl4KyYqFpUrIPCjalo=,tag:QE3OBTJoQfG2GcD/UXBVBw==,type:str]
#ENC[AES256_GCM,data:dEwIOVzHW+whu48/e81j,iv:v9Du6iruCsArD8F/JCf/xy9xxzdV23wCnfHCkuIgPY4=,tag:w7RVK4a0pxmkNDwLTn3mRA==,type:comment]
#ENC[AES256_GCM,data:+aUQXMWkNNHvFcINaDzgi85NLBsSHISWr3oAkB5qJwqKv+uC+MtqkQ2rVaDbfBAfKUKU6r64ShcWiFc/p7ikNEIaeVQYNK8JQ+Tn+A==,iv:w7G2AF3FPh7Qe++HhFuuLQjZB4vrcrG0uI37L2rXuDA=,tag:zU0czMUSD0qKIT8sLKviWA==,type:comment]
#
#ENC[AES256_GCM,data:+WON9GAd75jYQAeL0Q3lU2rbMY4mYVeweIYDZgAl0/A6smLmxFgzMg42yCwNbFdTzIWqW6KMuw3zdieCuBq8D/JoMFwt9iOVPJDKxWc41Nw=,iv:0FhM1VD+QWSBtFCmKJNJmU/L+SqZ6X7z1MSYgbqPhiM=,tag:TRa+PJl4RL35WToTb2qZ8Q==,type:comment]
#ENC[AES256_GCM,data:R6Bq7kozTTTCad7RAQR3X+ZewMiRFV+4qAA/oFc0X7Vj04gYUSVi9DxcsJ8/nuz8ujF/Bgyn1db/uvwBZmU0jLiyZYR8,iv:BDf7HEXqJE1bLNt5RbLeVBWEFAWCOo8Neqa789vGNcs=,tag:FkTS+16xnYk/FoYo208JsQ==,type:comment]
#ENC[AES256_GCM,data:InRMnsgUwdTnjTEG/svVnOW0ontn3Vbp7Z4qve4KIeVJbJW/aPIgoU1o22pu1ofua8WPyik=,iv:SEWBcbhEeA+cgHsfAQsglNdAZ4vyb3i6P6Ed+wpibhc=,tag:dkV2H8800vQsfrHYbhSCBA==,type:comment]
#ENC[AES256_GCM,data:MbSuH0ss3zblmktE79dyA1COw7vAaZVTBiCZ8qS006aqsIWT/3dikhCpWMjMx9vyoVIRSOmkIhM=,iv:jehJjOI4nqfGOSZtX4Bzvo7ZcaW1ef7OU+625i0xdzg=,tag:9NvEPJ+ioxo6Vg0yzLT6xw==,type:comment]
#ENC[AES256_GCM,data:C9bOMEvRHcFCjGUYZYiJIX/y2uTj9lQp4URf5ih3mpmOONqX7qfvzZGluU9QtSS76nB6kSBrEDcfqJ/E+4E=,iv:3afY88oeY5dyYDM7YZczXGMnaBygHgXqSjfnBAIkIhM=,tag:LpLqIx6YY9Dnmn4OgSrw9g==,type:comment]
#ENC[AES256_GCM,data:jdcE19OpkpM4UpgKRV3OxMD6PXnSTJmtxtRqalyM98gmm4iPgMaX6SmhDQwZWm4AZGPyAHtW9gE=,iv:8bcKPsBhuccPtPP8bgtsgtmPrOR8zdnXk1xt/umksQQ=,tag:sPYeQqZVf9JDqlDkoSSEbA==,type:comment]
#ENC[AES256_GCM,data:SCxHff2RuvkFwCaBGPRwS+7Z2LD8bIdXqWOvWNHyFDATfh55ph3SN/kCDqjWF1kSNuzxLUPNFV2iSigMUCjqHLLvPwZIWv8u,iv:zhvWvC5rrAITiKlNrms0mt2NEzqHdLN+x8ro391y4ac=,tag:X/K8qJqwgPWdHUpOG51d0A==,type:comment]
#ENC[AES256_GCM,data:yHT0cngMLYrKnRX+theDXOQP7Y8jVK2f/2dwbHRq8Z5spK2IUsOChU2WYpuGWFqMMkXPwjiy9Oe7ABArRdxfX849gwuhXt9Y+re45N6o3Wo=,iv:u3TWONVcLrKVAypavvk7ioTLePlqdJByjxOwU128ubU=,tag:lfsQxzorm/d+bWQAXUK2Qg==,type:comment]
#ENC[AES256_GCM,data:ua/erKnlXzB+Wae1Jwdr4Xg0Cy3xIiaEpPJefBq1eEOm54ZTNeqZGFfYS7LuijgueuOdq/Bmacq56sfNbiEEbUeehf5f,iv:GWuX4YPyG/9KBdK5RNrH+hFB5QXc+Ep8Ao2mYm6/EFU=,tag:dTPTsWaloxADlplot5SNfw==,type:comment]
#ENC[AES256_GCM,data:K5FoYsnz7dZBR/HZh4KX93WipQDQpvUP+o3xDUNALCm2zZbtQ8pPmTwbug7NpJnrm75MGkI=,iv:pxm+cMZhJOzI5Uys25JRL2g2allAHG5v6VFqNpyvtrI=,tag:GTy5/FtmT/sqADxoX3Yg1g==,type:comment]
#ENC[AES256_GCM,data:Apk0ukZWg1ZguSFLaRmjDq4hw+RQc1CnSqcJAybC7m+SDW0nEkMY953nVkqY7oDvKeuhEIUySg8=,iv:3QOosRhjJHve9xw8y3rD4guZ5cv9B9uCJaMHqgkyO1A=,tag:fETCJefFt1G5fIonehAlXQ==,type:comment]
#ENC[AES256_GCM,data:PsEk9JIsPZJ8sHjVLugtfCiKx1ulPXjjtz2+zS1fKrlAgDTUJ7Pe0vCuSgemfCZG5hlfK/DN8ows5oaeb28=,iv:d8S9eXEM+U5vBiDj8nCv949qFiec1deN348QUDZMDII=,tag:tJAn2b2U5OmaWSWBJRmfAw==,type:comment]
#ENC[AES256_GCM,data:sCb3wLMhMX592Si7cIPgvB2hfl94qWNWifpDVgpkdMyF5y15PS+SZ1ouetU7Gi7UEVzwWxuct80=,iv:LpSZ+QZG/VqK1cUxVakdIi0bRjwBPMCLNEPr7D5xIu8=,tag:XPwk5T66WmViYf0faBsm9A==,type:comment]
#ENC[AES256_GCM,data:Ki5g8TW+PpA/WUDk5zfZdRJrXfY24L6hSTG82PtwxbzZwKxuj/URwS7SxJYJMfuMYvOIcz/l+GHX7iKf6/SLIM12u454hoTj,iv:gMePS2eidgVf6ccnNUlJlGjUAcm48H2mCVGlxbgZxFI=,tag:hPXD2Lq+iWut+Vt2YU/LRg==,type:comment]
#
#ENC[AES256_GCM,data:7tNsVqa9hFBnXroNxQubpu91oYPaYcZLmfrdcyaThThJSUgTYqzZX9Vds5DXF/yqozREtZ/yhhzEtbmptM/MAM+6vzqem5l7RL0=,iv:KIehekko2c65QEEiPwyGXZE65OcjCgpWQzwwmIvIWhI=,tag:YQxZK2G0slxL+JB7peNkng==,type:comment]
#ENC[AES256_GCM,data:97HOuSOoYawq8c9bZgNaPEVLxJ2Wew/IbljdGuevTk3cSLeFJw1Ih+JELvBMfN7s6GaTzI5NXt0+fQGA7AnihKJw5vQPshUMTXI=,iv:gFNm/7O6GxLDhqtkBXMXts5XC22qhagCr7y1QIw+k8I=,tag:eKhFM/n25eROi+JoYN3ZBA==,type:comment]
RESEND_API_KEY=
EMAIL_FROM=ENC[AES256_GCM,data:TocTgLMrelrCf6pRgn5ilqfxmh0=,iv:RgMGVF3m2HcD85oN/RI1QoPFibq3IrNf+/+rJ/1Xpx8=,tag:PRPXOqYxHABlrcebcqJoBw==,type:str]
LEADS_EMAIL=ENC[AES256_GCM,data:SDQK7iW+qWRMzBuzXtHm1hOj/b0=,iv:DyzsiMER+pNbbaj+lq7eoNE3k7B+TZCZikgzHmA+bpY=,tag:2M63wNMzbHcAKAKXqwgBGQ==,type:str]
EMAIL_FROM=ENC[AES256_GCM,data:8D4sqeCDj0dw1Kh0sHi9h3q4ckg=,iv:GlWgA3OzZUgMbg5MQwpiiWpn20at/tkgxbpR16io5qo=,tag:Qpq6B2tjzPXBiMzvNgjSaQ==,type:str]
LEADS_EMAIL=ENC[AES256_GCM,data:Pj74LSKvkjJ48RLqUuAPpOzrgLI=,iv:iZinDeQbqL1DfbqYu0Duux5GQNRBYG2JhTXdjXQgpOA=,tag:ZWXSf4WlSL0wykOVPFjf3A==,type:str]
RESEND_WEBHOOK_SECRET=
#ENC[AES256_GCM,data:0QbG3ISB+wH4fCOWxfCsbkVuN+kIDmkTTOKhjiDRXauV1GI9cgCX/y0b47N74dzZ37b8nREKNIbY7nmAcK6e1HCVMA==,iv:qX2uHTLE4Z+q7y7bEqaAnCZ5SwJyG58vSqImF3sX+sA=,tag:CP7YuOnEruWIbaoK0IA+ag==,type:comment]
#ENC[AES256_GCM,data:X0jT2EwSEXu6raVEyXi7DFdk85M4tS25Z1JSTos2Jdr8TXDCqLQAG85FIJJql1ETxc6kbZLqbNCgXayMWhRGrGVMdmdtLoDLhFz5,iv:egi7pDNBiIj3lw5fDT98lLjvCzNt8yHxLcuV7VLd+LE=,tag:jASAHk7A8Pc1SC2tcvbj6g==,type:comment]
#ENC[AES256_GCM,data:hNquOLq2nymUmOrpQ4OAFqJlCt6SQaMWKHWsIlHmbjTuVt/m2KmY38kZOor+PqCCaPJszSS555Mb21cfhcKT8Ld2HVv9camDjsURXw==,iv:bkRK69bzm/ZFMBMp2P28/HMfjlgLknn0yhHbp+ane/o=,tag:N7NDRTED/c1pZSxhj4xRGQ==,type:comment]
#ENC[AES256_GCM,data:V/an6/nEqbI9HPk4sDdOjg8MsMoPT+dArWGWODdu1ZQV//GY0Qjx6x/oVwzyQP2RIYsQ,iv:Y4OLPcYbC945Z6ljyDYPrIyxBpLzT1NCEFZ7GbVooC4=,tag:FWYaiUbOm3Ef5xemN1R3vA==,type:comment]
#ENC[AES256_GCM,data:gjvHsdCmiGT0hw/lvUuu7yMfXWMBjvwAvvwTl0RpZxptLiG7Wz4s6A5saBnZCZbnvrHpXoJJ2lyPqWdt7XsnpRBAQQ==,iv:jMWd+hNbwtB4DCUM+pjTihrRSSCVr+qNuoAT4pZp7QQ=,tag:ncxbxmCRgiR1VNuGZTu0mg==,type:comment]
#ENC[AES256_GCM,data:prllSnPTUbTo1E26lMhrbrrgTmdCK+E+Z++N7BhW4tXJBFpSgJ/vmrISWB/X6cLdYgIewyByPPmKlHCoLsAVwdb5/uDeIKKwdJXp,iv:c2JxexmzVOeiicv5b+0SXq9ylTRk9+ad2umgsJ/5IPo=,tag:uD2m9Ghbt6ZxV7cupFJpvw==,type:comment]
#ENC[AES256_GCM,data:NU2hol5nqs8ffhhDqAXZg48eFzPTw14gO4zuyJhlO075bC18EIMi+2xz0Hg7CC5aa+AuywdjSXeO92j1CvM4YKfng63biI4b/NIdXQ==,iv:IYA4mY+V8jQD/jElsgbwa5fRQ336XSzYv3q9OlZ/DG0=,tag:OXZwhCSmSADMxDotptCKvA==,type:comment]
#ENC[AES256_GCM,data:xRM7eWDm3yrN4gdmWR6nlafMlL5F+0CbNa+45c6dU53fwlf5eFnpKF2700/8XwWe5h6s,iv:v5/tdyxozElqXLjC4Dr1HzHVPwI7e9DgK53nB77pArs=,tag:md4YiR0gkSaTiEMhrgV/4w==,type:comment]
PADDLE_API_KEY=
PADDLE_CLIENT_TOKEN=
PADDLE_WEBHOOK_SECRET=
PADDLE_NOTIFICATION_SETTING_ID=
PADDLE_ENVIRONMENT=ENC[AES256_GCM,data:Jepf2hsljg==,iv:oDwkXtoHtK0nFxpua+PLTQAJKBX79cVcYKxuwEUiGo4=,tag:QWygdI+XLRgmqY4Il3THmA==,type:str]
#ENC[AES256_GCM,data:tMgeQQVTA/SWWRm+WMujmZUE2zl73m2eqihbsl4A+sKlFXz3LiDzrh65dhdup0dA/epsgKL0xKBRwpqu,iv:1c27FOmdfYhKPYL18CS8ehvE2CtWYIXQJFizhLA95CY=,tag:R0QHugw13zZpKpm8KoNU6A==,type:comment]
UMAMI_API_URL=ENC[AES256_GCM,data:qUiUHTJxYliRHclm0jaz1Ky6u5Oz3T6mYLafRg==,iv:dvDDYbA0TIuSWXxlDIF17jmHYOZ+HCtAjTkws3lPrPM=,tag:Ty3zsDLHG90AFweM+ywhEw==,type:str]
PADDLE_ENVIRONMENT=ENC[AES256_GCM,data:YzbXeOJr4Q==,iv:eZ0lAAfjVTtHHEkBR80fZACE6VTXrow4bnogAz8VI48=,tag:Uxs9oEZZI5jBloSSlOPoLg==,type:str]
#ENC[AES256_GCM,data:JZ+dTFncUwrhh5kdBeKbHkPk4HNOu5Ka7l8IhPnkcpbC4+opxuviWV8QXG/lcOlg9SN004FQ83kOPjrI,iv:3txict0Am1Gp/qNFgB5d7d46nVLtyBBixXdJjGiRoVo=,tag:Y1D5nzSveG0c3Qoyvy59lQ==,type:comment]
UMAMI_API_URL=ENC[AES256_GCM,data:VLov17JIMAAmiv0Rq8TR637k1ablVBtJ9GKgWQ==,iv:MqV0T/4xqWit/vZm+sMu0LNTzCH3ILFCivQnD8LTpXA=,tag:5VdbDoubaaFy67+y4u0EQQ==,type:str]
UMAMI_API_TOKEN=
#ENC[AES256_GCM,data:tvV1D8Twv3Ndm5jyTx4=,iv:cNjk1A0097KpqWkuMgr8bOscmeUTWV9msEJlXk4YdYI=,tag:TIQwazdxb3L+O6qqTc7ADw==,type:comment]
RATE_LIMIT_REQUESTS=ENC[AES256_GCM,data:o2g4,iv:DZknpelQp0FjJqUzBPHl5k3CmWz9TZqSZzAk8ww2cu4=,tag:A17LOfrpNyWw3H9AKsLDLg==,type:str]
RATE_LIMIT_WINDOW=ENC[AES256_GCM,data:JT0=,iv:V8az/oyALVLZSOQ2IcjDnaBC7Mc5FyBh6ixYdjMEGf4=,tag:3SGD5jgH+vMYmnfPmck4Xg==,type:str]
#ENC[AES256_GCM,data:nnbUtBM3w/UM4p2S1p/CZNG3X3WxKdsCq+KiaoaphjveNMeukcVhvUzzwXHbFvcVjU5vqi/pZ/oJ3BmS2awEF/mj0IE1cwE7SCJyPl7yubg=,iv:fJ2hsz2DDpz07j6cNDdW+KEU/1nj5bkWNiDlHZLczYg=,tag:Bxig6DlNGb8ewiNijA0H8Q==,type:comment]
#ENC[AES256_GCM,data:hxmk761Ynp57ssLcCIM=,iv:ApzwBN4h8ZU7XvJEG3V8Jr+OH3yiTxq2hx0ts+1MP0M=,tag:msUwMv/h8Z5pyrKrYzyjHw==,type:comment]
RATE_LIMIT_REQUESTS=ENC[AES256_GCM,data:p0XT,iv:FXMjZ/Vi0O3ZvvgT9P12fYV57ksWkIKKHsXTFAtJ1BQ=,tag:oHLBpOp6WIGxxtkEdJyutA==,type:str]
RATE_LIMIT_WINDOW=ENC[AES256_GCM,data:+6s=,iv:vwMf5cyfkwxSB4mA8/OJabURcGHHQNS5I9jIA+CP74I=,tag:HwT077P9h6+YkIwVJe9HTg==,type:str]
#ENC[AES256_GCM,data:DWa+fY4uRmAYEQyxQUepVUiZ23Kw10IqUdiZvqqo5lKn83IPOqqutM7TO//QSeCCGtExATPXx4WumfsWWfAnyfH5W/LndJ1AlwpVOoVtpWI=,iv:Uj80Naei97O7hGyEcxfr6iFzgERUCEkRu1iKH4DuJX4=,tag:xcz9zPrEEauLyRtoVffsjQ==,type:comment]
LITESTREAM_R2_BUCKET=
LITESTREAM_R2_ACCESS_KEY_ID=
LITESTREAM_R2_SECRET_ACCESS_KEY=
LITESTREAM_R2_ENDPOINT=
#ENC[AES256_GCM,data:9baHx5mEGWXYipBI0ic=,iv:CuatOQ25GP9ro/IurMaK1P/LDMlINuBMCHuBxn/NE3c=,tag:pCkfP3ESWXVDwTWNPOq2DQ==,type:comment]
DUCKDB_PATH=ENC[AES256_GCM,data:pp0WwSH1g4id4wW7kqksoA/Hkl9W,iv:Yp9ZhblwEVfMhV9f0kXlOiWqGSkUyF4kKjhBxH5qcpM=,tag:23TDdIEdF6Hr6WExcUPhuA==,type:str]
SERVING_DUCKDB_PATH=ENC[AES256_GCM,data:SGQfIpaNdtsHvPjZMBfl68K8YAAX,iv:lwPXQFHse771413aOLx+Nd+iixQxOWjgbmPmvGhisZ4=,tag:ydBDnf0rsEoyJtYBk6j0Wg==,type:str]
LANDING_DIR=ENC[AES256_GCM,data:/a1P6vzDiWP8yak7,iv:jYxVP1Pl8yjgLF40+lkIh+HOZT7I0wXUZ8QfHMBUfDg=,tag:1YUFXDFp1Ofkea7cwvHAig==,type:str]
#ENC[AES256_GCM,data:Z8BKZ7RyncdHqKAX/DEPYSgbd2a9r6/KCaQ2whjuqXtx8ZFknEQ02z3/LqwD5016GDWS5AQ4ynwz/o+wkiYwqRVJz6L2020saCc=,iv:EOFGubnlTOfQ8in6sNulfyz8hl2hPR6mh8WWrJp1Vls=,tag:6n9C6VjJ2/jdQRXBtsGJRQ==,type:comment]
REPO_DIR=ENC[AES256_GCM,data:/A==,iv:9g4xelonlW6VD5/Q0Toyxfc8jaK9wf5XnGulrWqQimY=,tag:bcZa2tpAVOrriNzEqLW59Q==,type:str]
WORKFLOWS_PATH=ENC[AES256_GCM,data:VQHyJUsi27VybmdZ9lWdqhkX3cdnnbNsMtnDYx4F3w==,iv:msfHmNROnQnocM53PMm207JYvREAJ0OevtehrAy1oLU=,tag:Cqm+n9IdvZrc4hxzKA5RBg==,type:str]
#ENC[AES256_GCM,data:Wh8wbI1ONGwz7YmTh3g=,iv:hsgNVrb1ZmItszvWSW5XozSTSoORc48ePg/L7wk3k0E=,tag:ryrs1Myp6JMNO4PppsEy5A==,type:comment]
DUCKDB_PATH=ENC[AES256_GCM,data:MA6E5KnIZxOd1rOA5cLGk0oXoTk5,iv:Q+xoCHnf6x4ismgOqXSqePEV2T5RV8J2KIyD+Pdidbs=,tag:80GfhXAZ4AeXQ4HEz72K9g==,type:str]
SERVING_DUCKDB_PATH=ENC[AES256_GCM,data:ubhnX43J3bEw1g2xJDhQWJiLNYrd,iv:Z9ltDGDYhTl98Pg18wCmU+Qxco8+PKleZ/SkhD9XGCs=,tag:7BtwbKiHcM17DpvnwLSB/Q==,type:str]
LANDING_DIR=ENC[AES256_GCM,data:e+ZJClS0YWbTOgVo,iv:Mh13edgTjG/cW/0hsdvM32uQOlBJwVpC2nju67+n84Q=,tag:S6/50MMQOmxMmpCC7XRavQ==,type:str]
#ENC[AES256_GCM,data:hrtFixymQ0XR1t288qEETWAajvEe13tZlSAmnwpaEGr11wzr+b6rd7QHc+enb2/lkSOcnIKRxCOZtu6y+tEAGuZImpijf5+Lza8=,iv:CLniQ1Jf6JcmzgHpzbCn9WFTJOPLGTFXu/5jVCdIrtQ=,tag:vv5Hwu2TGQeGRejEOwa/dg==,type:comment]
REPO_DIR=ENC[AES256_GCM,data:ZA==,iv:TH+5LUPD7fKSj+kgtFCmsxEbG0sO5gtNPBi0k5yuiAc=,tag:pVy/nn7YalVV44zELdMIyg==,type:str]
WORKFLOWS_PATH=ENC[AES256_GCM,data:KcdUD1rSa1VBKzktiuHGA+a/cI7m/GWXkrKr50NhgQ==,iv:VgF8+wZmg61+sVoHeL2U7PJuTQ5UuOeonaTPX7mdHBA=,tag:CIRYpkEFnbCFN8+zvRZVag==,type:str]
ALERT_WEBHOOK_URL=
#ENC[AES256_GCM,data:JLh7PVzdpxGMLeU=,iv:tGji4+IqdpMlqc+CFHsO89TKUd0Dv3/KnSIuRPdsvic=,tag:VQ8cp0JpL5LpAMW4X1x7LA==,type:comment]
NTFY_TOKEN=
#ENC[AES256_GCM,data:407y6mp/tJLef0I=,iv:661eXVnxobVG8pWCYq3MZ6WO9yYzdMBskwtReeiVe+Y=,tag:+6W6h8EGU68KZ7Vz8QozNw==,type:comment]
PROXY_URLS=
EXTRACT_WORKERS=ENC[AES256_GCM,data:YA==,iv:8ZHwE/D8gwgKSgPeOWq12Q9EEmu3BuoUehEapiC9HXc=,tag:rhrgYYJeFEc1ESjOWQmkFg==,type:str]
RECHECK_WINDOW_MINUTES=ENC[AES256_GCM,data:e1o=,iv:LyUZbWBSokBrXqyT0rgCA+wUUysWuYW1HqKbWB1aq2U=,tag:SGRlUu9yyJ0xl1PC40kLyg==,type:str]
#ENC[AES256_GCM,data:qPKeMln983VWu/CriKBWsinPeCCmiv2japj0ztqBazSaIwnQDDe8Wcr5k4rK5dnyDf0ZavcomH8ERw62HiJ4Gv3bbP9ASdMx,iv:ri3t6qW3qanWNmMT8W8zTnU8sZQJkB/oEqcfvWa1Kz8=,tag:c1k6c6tfPnMvsrYnOaLbgA==,type:comment]
EXTRACT_WORKERS=ENC[AES256_GCM,data:Cg==,iv:w6JWrCAfBJuUS7Kwc4JsvCCbYGU4FIc18JTd7C6kiak=,tag:yJ53uTn9cs+GtghTj9tjxA==,type:str]
RECHECK_WINDOW_MINUTES=ENC[AES256_GCM,data:/3Q=,iv:xe8I/VBCGK49qTDY2Ehci9jrY4j1gPOzbx39mAJjf0w=,tag:Ekx3G4cs60CvCehCJuyl9Q==,type:str]
#ENC[AES256_GCM,data:K8tsERccx4RgTurYruu6tctL6+sHz471+pAWRDld9sLTBFWD1HgTd2MtGqybuEJyU6lp4/fYPXZKOc6sff9EaqiK52dGtqbe,iv:2hlV+RsPEBOx90ZnBx4Hb2tPdrJqyri4Ic/cxReiV2o=,tag:lHT4nLUsb//ncn/E4irfWg==,type:comment]
GSC_SERVICE_ACCOUNT_PATH=
GSC_SITE_URL=
BING_WEBMASTER_API_KEY=
BING_SITE_URL=
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRMDdkZElDbEw1OXJZOVI0\nU2ZtTlNaVXJOcThMNWVLakZiVmdBcHN6L2xBCnJBdHZxZS9BN0hxWXNHc3NxMHFL\nR0tmdHhZYmZkeEUwQ1dNczNGZ3hsenMKLS0tIEp1SWN2bGNkSzZ6WmV0cEdkRW0y\nbEdJODk1YXh0UjRNakhhT0ZqMmVFWDgKaDcLTJVLemHNAC3+ketRmqozNe8NJsp8\nx+ELsg4RgmQ0ZCkO0wGHeSgDx+RwIaPflvgJoyZuTA656oKnAeBF0A==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYR0RXNG5kczUyUVp5VnE3\nRUdFdmxpY2I2SUNPR1JVbkZYd0pMblFpV3lZCitMNnl6OFdIT1hCdVN6Z0lzVU5D\nK2FzcFpWdUJsZ09ubXYvemVuT0dEUG8KLS0tIGcrcER0dUVnSEdHS21MQlVzLzQr\nc1VnTERieVJNTE5UUjNXTWVESzVUcE0KYyHa1Y42l54gblStQHKKPZZ0FJJBr9FT\n68A1DVRU/zXgvO/wkBaumKqBDQqMVKOPzQGRggb+RoQtlVEfU57DGA==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=age1f5002gj4s78jju45jd28kuejtcfhn5cdujz885fl7z2p9ym68pnsgky87a
sops_lastmodified=2026-02-23T15:56:52Z
sops_mac=ENC[AES256_GCM,data:JIz/ueQy5Uz75btH9mHMMtCP1Yy1KDo3M/55B4iRhWO810Omg4fgswQpmsuYsFgygtc2qZX60o239zlea/fmO9xF7F/zwMebqFO4zuZR9UOTRIYiyskJzeFnl+Q0sT3bZNqErEU+kWGtc11D3VGRhNfAKTAVCmVoFLvUgw83WZY=,iv:NuBwfiafBeZ7ZorIQHgEb9zxs5uATiMoKaQ6QB7zpcA=,tag:izjqMBJQ2XVx+HPSRiGKew==,type:str]
sops_lastmodified=2026-02-23T21:01:40Z
sops_mac=ENC[AES256_GCM,data:xehhYZcf8o/AWztlWOM/QGUl/SGf2ZXXJHl0GOiZ5s/VfItoXGx0elcV13wWnlMLOb4oRnFzblt8J0IgqCINDdKsh4JHDqKAEVjBm0cTulA6ZmKELB4hopPZve3c9FwU0AAO7jKWJpNzg0ymIxNvF05JwZKL3ILr+55s9Tun7BE=,iv:VcMqkoaLgn5P8ds/oRfObnf6uDnULBSJMJgrozDyw78=,tag:84UvqnHen+qe7rS/8HffFQ==,type:str]
sops_unencrypted_suffix=_unencrypted
sops_version=3.12.1

View File

@@ -1,58 +1,59 @@
#ENC[AES256_GCM,data:GOJ2Mw==,iv:67to0Qw7FeSkP//9ITuvmUetDmCnI6jvhluoxg53izg=,tag:jTuckO0mYqJP4UTOUFCY8w==,type:comment]
APP_NAME=ENC[AES256_GCM,data:/mL9kgdzFp7g9ck=,iv:QSNKZw/UUrl926V9jIz1r2nIM/LvmVi1ArvoLeHJvnY=,tag:pJiInY++jjjiZtnzR9+How==,type:str]
SECRET_KEY=ENC[AES256_GCM,data:G1LYiMWY/nlF,iv:ZM5xTG3kmwHZXC0oEQqv4LJWpkfLTeCX/88yCG9LB7E=,tag:Tji1wVd254/FO3zlYSKHMA==,type:str]
BASE_URL=ENC[AES256_GCM,data:pf6H6ykbdUpWd7bURmiWMGQNMj2M1g==,iv:QRLBGyCh6+ETedptOn7UvaR9CoNd5B+12GVOWGZ1630=,tag:n6OwsAfQfw8tLyyd7TUbUw==,type:str]
DEBUG=ENC[AES256_GCM,data:Q/4WRGs=,iv:tMQGcJtyMTxOSpTvaIUileajQmgbeHjJhQsIgy8/NK4=,tag:4EXkYxq8jpVNXK5HvMX2CQ==,type:str]
#ENC[AES256_GCM,data:LcZf6DLUULLHLqSDFQ==,iv:DpYEC/DyxUgiw0ildphTO1bLPPWS1AeCwiMIc+Bev4I=,tag:vzG1YLA8wYkELdqoF7gPaQ==,type:comment]
ADMIN_EMAILS=ENC[AES256_GCM,data:UBH9K/XyNy2s,iv:RnfTxscSs9+J8y1EHAbeqh9iMjxe/mdYNL8L7PVNBus=,tag:tujxgHXrdbF8RNMO0dQXVA==,type:str]
#ENC[AES256_GCM,data:oBkZCFhtbVUQ,iv:Elg6j/2+CK5C7+pJQtlZ6w3Hjq5SUhJgjtXvH5wI5FE=,tag:IYmdL+3n4ZDHbakIz/vh6w==,type:comment]
DATABASE_PATH=ENC[AES256_GCM,data:jjaWd6MPwLxLqEc=,iv:VQaYqAoonOBejkNPJao0PEq+mNDIKpp8d3HTlnh+uJU=,tag:Sd1DKsuA97SmqbWmCHTr8Q==,type:str]
#ENC[AES256_GCM,data:5wCu7HA=,iv:UfOWsur0H2k5lnTWmokovkT1s1OoBwhvtEF3WIpG8lE=,tag:zEZ4mNogvKRbOwF0AQhXFQ==,type:comment]
MAGIC_LINK_EXPIRY_MINUTES=ENC[AES256_GCM,data:9TM=,iv:Z9aeRhOxwxiCLVBwJty25yJb5NvSVKeQ+jaD8O5nygg=,tag:hjfsMzNaqxrtseTOZWUV2Q==,type:str]
SESSION_LIFETIME_DAYS=ENC[AES256_GCM,data:+qs=,iv:yyyxZXiGM/5MGqSPhIZsVgpK04vjNZ+TREIcHpR+KBc=,tag:CaxBq9o7I5Dj1k2sh7ymLA==,type:str]
#ENC[AES256_GCM,data:1Stv4fgcH5mVKO9WTObS,iv:52KswojsbF2erdfhqkmeWL+l1a9wvsCPxtmR51TX6Fk=,tag:vPiig+nRgf7j0JxZJw8sng==,type:comment]
RESEND_API_KEY=ENC[AES256_GCM,data:MowU2VDWwUe6,iv:0xQz/4QvOfvW6gS8WdZ6X5oF5fJhLue04weRm/kk1Xc=,tag:G8fXD2D+39v5boNKobXazg==,type:str]
EMAIL_FROM=ENC[AES256_GCM,data:LnNY3kTR3d4lPASQ0Y3JLimWT6ecnZui64ioqKbEV0OXLg==,iv:V/zHHeyVa5PFtwoLpfBA+pzuK/D+xR1/qmgErblND8w=,tag:uOwRHFpYZuQ7bHg9G6EnoA==,type:str]
LEADS_EMAIL=ENC[AES256_GCM,data:Gm0mRtLfLpqehG1CiJ609SXtOHAyUqC/eTj5FhNyGSBs/Q==,iv:OpCuF9qNuufZODtMUvFnLQ5PKdtyK8t1GK8z+3/f2K8=,tag:v0l1w9VfqcDej3uzHQ5uow==,type:str]
RESEND_WEBHOOK_SECRET=ENC[AES256_GCM,data:EBxScQDEB+it,iv:voliAf3I+tEwq7gwpRYOwexECfRDJlV0rq56IYWWgAw=,tag:Khja6sDENO5L5rjorwbafw==,type:str]
#ENC[AES256_GCM,data:NsVLPJkazw==,iv:A0AnmmoOVs8bJSA21lkTOHxOCJEYE5EvCT0BNnkdcjs=,tag:wsktHmXLDkkgikCw6byzRw==,type:comment]
PADDLE_API_KEY=ENC[AES256_GCM,data:NrK+Jj3yWBjA,iv:AERfauh9iNE0w+3/ypA9W7hFMXdHRksg4YIgSXuV3r0=,tag:yP/d7cqGgPZhfLpCLHIBGA==,type:str]
PADDLE_CLIENT_TOKEN=ENC[AES256_GCM,data:bRrmxWW9K+HQ,iv:T3bY4kCRUQAxESa5TVEscRF7RFsRmJoFcByd9z+25ZI=,tag:z/H8L2f8YCDblN3exTdw0g==,type:str]
PADDLE_WEBHOOK_SECRET=ENC[AES256_GCM,data:IQcNylVIYX0J,iv:/rVAMMhd4pQIg3QnHS9g9jQrZiVhGSV7R/7/UJ9NfQQ=,tag:2eoP73u5ZFPCNb5VeR2n9A==,type:str]
PADDLE_NOTIFICATION_SETTING_ID=ENC[AES256_GCM,data:vphzYBmfJs4J,iv:j4RM1C+BjLd0GgjnUwpIOY+xIH5hGN2r8tzyDdEvpIo=,tag:0eYFKiNu39ea+th4qWgUig==,type:str]
PADDLE_ENVIRONMENT=ENC[AES256_GCM,data:nNwwW8yvBjjkww==,iv:1smhXkaPh2VrYMi27e+2YlB+g/5IapYrYhDgBDzBKgU=,tag:dONChSE4Kw4R3eGk5XMMhA==,type:str]
#ENC[AES256_GCM,data:fG/VIgDI,iv:ijPpFBL5QielOYTq6/vb5M1sxvRkb69zF1E5gacAG3k=,tag:eztxw1xzZIReRKWLLjFsug==,type:comment]
UMAMI_API_URL=ENC[AES256_GCM,data:5q8Eg57ISzm3vRzGnn+TJ3TemocQ8u4UqA6sSA==,iv:aFQmJ5yFMBbpglQB3UL+eYflJhG8BNoZH55VUqlB+q4=,tag:fbBGxg3Sns7ANL7I6Z8BSQ==,type:str]
UMAMI_API_TOKEN=ENC[AES256_GCM,data:4g4dX3u6vYUF,iv:nNtNivvqSaWZEWpW5622SVku9tYGEhcoJkv92sGyQ8Y=,tag:dcqLc35ApatBsZC7zLKALg==,type:str]
#ENC[AES256_GCM,data:1Bjmpc6T8BEFEWQ7KQE=,iv:S3m3Xjv/7E4esHxqCRKJ7dNo5ugj66QkqVofN5N3NA0=,tag:nxuTwReOlJKuQCNm3HTuSg==,type:comment]
RATE_LIMIT_REQUESTS=ENC[AES256_GCM,data:Wpuq,iv:2BL6WllqCX8zgVr+nlXV+kHachWaRaEassu90jbTsMM=,tag:eT4bWED9x0GVW+0+snn8qw==,type:str]
RATE_LIMIT_WINDOW=ENC[AES256_GCM,data:+L4=,iv:rpUxUMzB5IIq+uZxdxXgI5yVd6Gb1elgHAh1g5rbBdA=,tag:JBMY8Ma8Sfpo6OwVRRPq+A==,type:str]
#ENC[AES256_GCM,data:8Zycx28XuJNg2blaBwTywuyfor7c,iv:ayuEkZySE32OUE1FxgM04FmJsiVFP6ixw8QD15WRtL0=,tag:9vNLZN2fllQ+nZYOhW1bNA==,type:comment]
LITESTREAM_R2_BUCKET=ENC[AES256_GCM,data:AS91kucfoMn3,iv:oMUi666wrWVEj6p6kpwS7D8kDlFnLPtWn10zAYtsxv4=,tag:zq0pP9ngdU3ncWXIzCLXlA==,type:str]
LITESTREAM_R2_ACCESS_KEY_ID=ENC[AES256_GCM,data:wakzvPzR6GBT,iv:RBNO8zX13pWmPAksSW3jsLo08wsUU8ukPGcAoMFu+VM=,tag:7f5TPlIQB9i6zfGldri16A==,type:str]
LITESTREAM_R2_SECRET_ACCESS_KEY=ENC[AES256_GCM,data:xXlTgbZEaZSW,iv:WCLblBc0AlZhs7rLNNOploRGSzaZCFSpCE9GpAmwmV0=,tag:P4zGJQQL0Ip2xM1JB8ID/g==,type:str]
LITESTREAM_R2_ENDPOINT=ENC[AES256_GCM,data:lP+KiIfTrLfR,iv:zHqvgc9q2vOyn0FKG2KQQEot4YbIM4thrq8feBN4yIM=,tag:LB/G025c747H1HfASrNJJw==,type:str]
#ENC[AES256_GCM,data:nHcA6qh78IoluGmCqDc=,iv:7De/oYcWG6AzE+htRR25zIP5NsHf+iGww6Qgu9N4Ofs=,tag:ft1CDUxRz7jdpL4zzyiX/A==,type:comment]
DUCKDB_PATH=ENC[AES256_GCM,data:wUeyLmV6pqSUZ3j0AKm//nFjyc0+,iv:w+bX5wxJAmFz/GJ9Y8r2nMkDbV4Ble8hVulVoz9HQGU=,tag:9isZWzAKZagowkY/tjg8rg==,type:str]
SERVING_DUCKDB_PATH=ENC[AES256_GCM,data:D6plWMr/KvMk8/lCErfyIBsJoYFr,iv:DvNQrbkkrFXPRMeHXxiohc+xc4PoAdZUAiGPaate32k=,tag:K//K0t8G3SgqRWora7rCRA==,type:str]
LANDING_DIR=ENC[AES256_GCM,data:wUDIUODmP/0GTexh,iv:LP4Hu3jbDIk1tuMK3x/7E5zmzQ+UIuCNH8eSxMYygZI=,tag:WudSgvdjJChFfqDJAJrniA==,type:str]
#ENC[AES256_GCM,data:mFmS3KcXkFyfnVE=,iv:XKoJelbaUD+nsfdezeX4Ut3LckNdWdKGd4hPmcm7pa8=,tag:/HUpAQyyRWyCIexrbwiEWw==,type:comment]
REPO_DIR=ENC[AES256_GCM,data:wMoR17RdSag/7RT5boaUbQ==,iv:2+WBxWaX6/T+l0Jm7QYHkKGRbDbFWwi5/R4PRP/pcLg=,tag:n0VspEi93rPiduMb9/TStw==,type:str]
WORKFLOWS_PATH=ENC[AES256_GCM,data:REHdcRPOTQEI89hq8pni0c2J3q9hbZdFwnQ05B1mYw==,iv:WuiXwy/jY/+bFtP68+4bUzf71VoMbj2YxxrgABCpxq4=,tag:Elz4jQx0YUQNnllTvtaEXQ==,type:str]
ALERT_WEBHOOK_URL=ENC[AES256_GCM,data:hLPoItVrm2a6,iv:kLfAEzxZPPbmF2usR+Gu7SlmlxXSJKLMRgZYkMT8YaQ=,tag:k6yzwoOVqMf5sMquBFTxxw==,type:str]
SUPERVISOR_GIT_PULL=ENC[AES256_GCM,data:vQ==,iv:1v+h99b+uWkt0lLYOsv/y8zYIVxugkY2tWQYho+Ovhg=,tag:JEkZpH5uyA4kUMdXrE45Qg==,type:str]
#ENC[AES256_GCM,data:28oxHMw4W/hGROs=,iv:r69QQXLePSQjy456Ef5WZlTF6Nn2Hr45ZP37WGrFzvg=,tag:f6c+9PjMvdRDI/4Zi8btug==,type:comment]
PROXY_URLS=ENC[AES256_GCM,data:nQ6WRn0c8Wek,iv:Bpe1QiK9wpVqDc1vf5tmYSjZNHZwYDsI2+8ORcGrEcM=,tag:U6y1zeBKGcNY2KHKMvM5sg==,type:str]
EXTRACT_WORKERS=ENC[AES256_GCM,data:Gg==,iv:WeksP3L6d1yvBSLl8t5ccO6YwkafAnE/CIrdBeFJggc=,tag:cELO1bkRdi2Fwv/MUQvlXQ==,type:str]
RECHECK_WINDOW_MINUTES=ENC[AES256_GCM,data:O4M=,iv:+sNbrAqLN1LWmNlRUcqZ0E7PYZ2bQXOJBdqrELTtRoY=,tag:5UZ8jnnpXp/r+tHI9prunA==,type:str]
#ENC[AES256_GCM,data:ljUuAfDrd+58MVTfDOy/mh8=,iv:Hlsbiqzs7+YkVZmSTVEQPYLz/iDUXf3YWg+KzGE/U5M=,tag:dHIkizhjxaGEbYnv7wG3UA==,type:comment]
GSC_SERVICE_ACCOUNT_PATH=ENC[AES256_GCM,data:QMo99bXHl2M4,iv:V2HY8QNy3jmBS7jmRWwLZymCKFAdFhkrg663J478G1A=,tag:3yC3fuecq6smATibbI97Fw==,type:str]
GSC_SITE_URL=ENC[AES256_GCM,data:MU3FVDO+jqE6lSBTPFUJgsqDBe/uWQ==,iv:hbwOMuY6O/DMKc+InYIzmmJ/cpbPD2HF0DQDViOYxxo=,tag:BhN2p0Eb9aZOJvhEjKbPYw==,type:str]
BING_WEBMASTER_API_KEY=ENC[AES256_GCM,data:ayHiaqHgyDxY,iv:YE57lcNHvegFhtYjv0CiOOoKdsz0cV9zGfEXWp7pxk0=,tag:o6puJ/KI+2k/eLBmZcUtsw==,type:str]
BING_SITE_URL=ENC[AES256_GCM,data:MVB7h2gLvyBs8d/snN1rwUHdicD88A==,iv:yN15Mv76fzMEVl7uPtSpzhykTrWDTLY3sYwLCIB5A3A=,tag:VK3Ul0DLNXA8ZDUDUE1Lcg==,type:str]
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjdm9VR2RVbkR0bXoxZUtk\ndVcrckp3MGtnK1dsUU5FcmVSK0QvZ3VYaURrCnNhUGRYck4rOFIrT3Q3YmFkTVpL\nSVcvZzFSQkRXcTA2ZUNXUDBTcC9jbzAKLS0tIFBSYnh6RVZZd3J2eUswMUp5cVJI\nM3JGNDlLR1lhL0VGZ0RXU25DcE9xQVUKoC/2M0/SpqVpSIhg3/dbYmAqskw9d3nm\ndvJ2TG5w0KZO0dIF9X1NynrCnh7raxNj8XQIlQOUVJUs8/Q6u1EjYQ==\n-----END AGE ENCRYPTED FILE-----\n
#ENC[AES256_GCM,data:ZjUQFQ==,iv:c2XVlmYBh7jYljDODjjt4NiaRJYn7sE5Ye+0Sa5PdwY=,tag:TrNGa/stAfnOPANvN538Pw==,type:comment]
APP_NAME=ENC[AES256_GCM,data:6N2K/nexamI5tW0=,iv:MAyi9CtenGEaDSuu/XXto0JccUOvWm32aFhNqqxeMek=,tag:nWITmcO5ak1+4QWbAyvdOg==,type:str]
SECRET_KEY=ENC[AES256_GCM,data:yY53YEmhispB,iv:Js6rZBwp1Hu3a2ij8xIEYE8r+lnIyDDKFDwtZx1Yi6g=,tag:ZKHwm0NE4sYN9ixgFPaOYA==,type:str]
BASE_URL=ENC[AES256_GCM,data:jZCiKr580eylJqzQ+ohYo+oK5HE1Rg==,iv:QgKFr7R/dGRDlcunQN8v3fCP9yi51iLuk1r60o/QcpA=,tag:Ibo+yQAIq+1kBo8RBO1ytQ==,type:str]
DEBUG=ENC[AES256_GCM,data:YWuRfkw=,iv:Txn3+phhL9l/s7gPcJK9ZQfrYgIsklxY2Hx9btiyxIc=,tag:Up2qxaMnLwLO0dyGnkSPlw==,type:str]
#ENC[AES256_GCM,data:MS+spGHJ8vKuuHr8gw==,iv:wMAVcwT8006PkODxO3oUT0G9rXtYDhOeNT3tjnuDKRg=,tag:oY71/NbHVT7m6oE3vrVQwA==,type:comment]
ADMIN_EMAILS=ENC[AES256_GCM,data:bkauU7Z1bt7U,iv:wLa9z+xmXRjGZPuvbz+zI2KjnzqvVSXqReYX/TBwS/Y=,tag:SejgSaLD+Mus8+NR5LQYog==,type:str]
#ENC[AES256_GCM,data:CZZP6QlJe1f8,iv:Sat1+y2L02M44Z1nHpO06KxaAXh/ZWuPtkAcc8c4h38=,tag:mv9xlGSIWmzpquGqoUQCdA==,type:comment]
DATABASE_PATH=ENC[AES256_GCM,data:UZYij1jzKBzw95Q=,iv:/XgtdEyGf5iY/yntPzBYj2K0h0NMuwaK21r2flCd8pk=,tag:17hXzWz43M6vTmL8qV6x1A==,type:str]
#ENC[AES256_GCM,data:/slU6rs=,iv:BNJ9v2nhfOzvnGbtvBvF60IfNMf/A/CnL4zWdC8tu+A=,tag:K3smkVA6WYvJX7M4aI/4yQ==,type:comment]
MAGIC_LINK_EXPIRY_MINUTES=ENC[AES256_GCM,data:Or4=,iv:t23GAb1vCFu/iq+uADbG5dX2K21JiaUJiBI6/xRrOqg=,tag:u/6WgNh2daEPYNpVrH5Dww==,type:str]
SESSION_LIFETIME_DAYS=ENC[AES256_GCM,data:niI=,iv:VRcJUJeRqcZkbBMmmIFsXZg1ugSCzvrOEcpSmQvtgMk=,tag:pveDNeZzodrZqWjXvemUuA==,type:str]
#ENC[AES256_GCM,data:5QyAfIN1bLQKeAQVpXsY,iv:2rW8pJYfmBtiAo1DhkQjd6tAV/5zu7Qq3KLgVHMnVg4=,tag:x3VwNSfAa6THxFhAw3+5Mg==,type:comment]
RESEND_API_KEY=ENC[AES256_GCM,data:MJ2ibfHlV/0x,iv:HYYfVxpRZJ30AjFi9OrlCWZwywZtyHUEFmSTfPMsj1g=,tag:t4mOE8Vzz0plAGh+ss71+A==,type:str]
EMAIL_FROM=ENC[AES256_GCM,data:zKFSK8lMy2gMBBi0ZAWusF/qzAThevfM0DO/EjtSqyueCw==,iv:iCasIUwSaIfPlCuJYja6DwGN/O4zmx76xedoP6XiZJQ=,tag:C5uobbrKCnPreCvVvrxuqQ==,type:str]
LEADS_EMAIL=ENC[AES256_GCM,data:XWshE217juO6YY3wMVPB46yvVALrEx4HT3VwTKuVf+I9qA==,iv:SktCHkHpWzuLaRvJctlsjB7RhSlvLxEwThSk8NOKUYY=,tag:afT7QoS75ARqNr2mQL307g==,type:str]
RESEND_WEBHOOK_SECRET=ENC[AES256_GCM,data:jFajN959/lUP,iv:FQI8P33AWTYZXdPyPhiAo1cyjHF2FTpKt5azG68HY+8=,tag:xwkAQeSKGfrRObpXdwcJ1A==,type:str]
#ENC[AES256_GCM,data:IYaHe5F1CQ==,iv:c1zcalp6STJPSe0F5jfPi4SQyCNMxA9l/L6QmwfJpjo=,tag:CxEPk/FjPsVi8JOdS3Z6iA==,type:comment]
PADDLE_API_KEY=ENC[AES256_GCM,data:MoOAgw17UtRV,iv:7hF5tzgfNjo0VvbVnsDTD2BHuxsAUR6qQIB+C0a2pRA=,tag:M7gx3OupL+AcG4gHmNLFog==,type:str]
PADDLE_CLIENT_TOKEN=ENC[AES256_GCM,data:JZ+hIKDieB8R,iv:Q58f/JgMdbtV3dlYTillF2dFgUaeU2os+oIfvGM4uvE=,tag:IFTfIEg0hOnUssvXF07W6A==,type:str]
PADDLE_WEBHOOK_SECRET=ENC[AES256_GCM,data:ljXlE2DUgFHq,iv:bjmH1MzR+TFIrx7BhRkjhd0IkU+2dyTe/uoAmcH5JC0=,tag:AY224RaptRz7y1neJnFlJg==,type:str]
PADDLE_NOTIFICATION_SETTING_ID=ENC[AES256_GCM,data:kcpe0WKz2hVK,iv:dF+7n5EeVtCZ5hd/xdbSpEWaJR8GGy1gU4Hsl9xBgsY=,tag:37/NFJZ2bQ4NWWG6Q+UKNw==,type:str]
PADDLE_ENVIRONMENT=ENC[AES256_GCM,data:hukHtXdIxV6xFg==,iv:YjmfvQ8Av2nc+zKW3M4hm9AdezLEeaTAhvBdS2clqdI=,tag:W8ohvtQqE1JeQ3s3/xw7eA==,type:str]
#ENC[AES256_GCM,data:ILpRggrP,iv:uPBoVraAAUXEVHW8LygwdVFDhD594WV1olUoGtomcXE=,tag:QbkQ6ZDl45VkK1Ffg6TFSQ==,type:comment]
UMAMI_API_URL=ENC[AES256_GCM,data:Yn1FsBNI+UkjSwWfe4Ut+nyZ1yIsb8D5RWza7g==,iv:1xtdyYh1qR8CZtJY9EyzvTPBXCmYllWWOc9j9G/hq5Q=,tag:wxxQg79wzTO0vZZYHm5G7g==,type:str]
UMAMI_API_TOKEN=ENC[AES256_GCM,data:CZf8Bw1gbSJH,iv:kAAZRzXxFKZhLwuAwoXuFearqbz3U0wKed3EQSeZDOQ=,tag:EtYevUn+5lOoRQ49PejUlg==,type:str]
#ENC[AES256_GCM,data:gs9EfxbmFH+rbRAgTiE=,iv:7fA8XrLrojg2RLLv95C6f2eHOwf/KGYozpJtktPmhH0=,tag:NmOi8coTH8Fiw32Qu1bIpQ==,type:comment]
RATE_LIMIT_REQUESTS=ENC[AES256_GCM,data:M0ps,iv:w+OCXLFYqeEhJ4gxQWgTd7H5G92PBY40POagqXEFNfU=,tag:cEv0FUsoEWuyt6RItoNxzA==,type:str]
RATE_LIMIT_WINDOW=ENC[AES256_GCM,data:VMk=,iv:yMMQEWN0bYGv4ZeGwMR4nPAGoTABoDoGla4s597WoeM=,tag:d0hcbkVq7jrd4EgzUnoD3A==,type:str]
#ENC[AES256_GCM,data:QLjNwnLVX0bNEbGS6zedQAIGTJcj,iv:R0EQWvvLxnnvgv12NO5IYt4K4slpht234mfI+byVKTg=,tag:pIzqHizkZNfz+VMy8ddLow==,type:comment]
LITESTREAM_R2_BUCKET=ENC[AES256_GCM,data:nx/nxBllzhmH,iv:OvqX73tZpssCC0rv8nJAc6VUAC61ih4i/MKcmwkZuZM=,tag:fBiJTSGW+1a1cKsd/pimQw==,type:str]
LITESTREAM_R2_ACCESS_KEY_ID=ENC[AES256_GCM,data:r9c3J+sr7evZ,iv:BHwoGkIVcR9IHF8AplitLhWKgAyiROZ8wj/aW3/wHo0=,tag:w49xM8ePVD+YsHs6wv5LkQ==,type:str]
LITESTREAM_R2_SECRET_ACCESS_KEY=ENC[AES256_GCM,data:yB/fNzAIEiWh,iv:TwH4en1Q/FMSjn/BwCSMehjYNT8sL7DoijGbVTqk+r0=,tag:ekLUWbNR0Y0lqKsLeqyGrg==,type:str]
LITESTREAM_R2_ENDPOINT=ENC[AES256_GCM,data:jBsfgwFe0sLU,iv:LgfhrVQOVXbSuFO0iDKqePMGPsUvQuUaqku1D7yNUGo=,tag:XNz7j3qZ7eTzrC7qus8RHQ==,type:str]
#ENC[AES256_GCM,data:bxHsA0764qxNXkWUOd8=,iv:eEcLDrWLA1NiVum8oQ5riecnl586mvBj8cztksGw044=,tag:N8wCDF/FG1NK/XOEuLr2Lw==,type:comment]
DUCKDB_PATH=ENC[AES256_GCM,data:ge37CFFFCX6MjvIZRBbWAfTxmbR5,iv:mI0g55JyJh4qb4xw9PJQ58EtXcrM5SqSSj9tY2vCDGA=,tag:KuRoUKtqI+kb531x6TGPWA==,type:str]
SERVING_DUCKDB_PATH=ENC[AES256_GCM,data:g6C/8qOnu48PMaa/nL74D1xBqSIl,iv:0p41A1/00MAdDh4NhK0QKyotMz2lBi5lnUaP2+c1Y40=,tag:pDceR9Pt8YmfmDakv+c8gQ==,type:str]
LANDING_DIR=ENC[AES256_GCM,data:5UAYASdESljR+ifW,iv:RShksSTuI+X4ukqtnTjI57/18A/ghrBYDeRhcTJkAuI=,tag:1OhvbyRPZ9XaGj0E+go1Yw==,type:str]
#ENC[AES256_GCM,data:WhulcR23ZoF8J9Y=,iv:PtQjlgmRZhUpVSxmUmc/O95zsSXZvtE5Znsnh0wSTsg=,tag:PZXTE01GE9qzR5zirLZkeg==,type:comment]
REPO_DIR=ENC[AES256_GCM,data:DQ1l258RxzVUfLJKs1LhAQ==,iv:oMOB0a14uPi/U/j6U26Eog+LQn49faO5UC2Q1z5cQ6A=,tag:YojmlgaxBORDsls9e5uU/g==,type:str]
WORKFLOWS_PATH=ENC[AES256_GCM,data:SYkoj7KFg80L3kCyrBa3qtE/TiQwSlLX2fl+Yls73Q==,iv:TDhucw5ayQcvB6wnhGNbul7OvbRtsZbQUAJl8ZNCwdo=,tag:UVHlCQirYR1JnvI0S07uXA==,type:str]
ALERT_WEBHOOK_URL=ENC[AES256_GCM,data:u2mmj8SmlGLpxgNfc3Hy74pYu9gN+YjXWr4pwhmM4No=,iv:hJ8uMLgIa9kAcTUb8LZWH3ULy93lQc6JKrhf+v7emxg=,tag:XpEZNjqzjRshm1GJ+q1hWA==,type:str]
NTFY_TOKEN=ENC[AES256_GCM,data:GaRg5+e8tbLfyRVi4nXiblcM9DVnTjSxOfzvIDSJkKM=,iv:apxXu6E6ByHovFb4XHBr0aqtTOIAUw0pVOT4I/r8eNA=,tag:+fYTxaZ5BVOCTI4yKM8c6Q==,type:str]
SUPERVISOR_GIT_PULL=ENC[AES256_GCM,data:wQ==,iv:A39MWQK65yzbR4lYEHD165qcgvjOReDf8q5docutiFw=,tag:cDPbd/wAgckJ01fLuI0xsw==,type:str]
#ENC[AES256_GCM,data:YnG+eVA2/fv2V7Q=,iv:oqbk1+gpa+Octk9/1tYdMcf/e3Rk0FDalgvebrwqOyY=,tag:LpQWy13O2y8sP+bRNrnWzA==,type:comment]
PROXY_URLS=ENC[AES256_GCM,data:Ow+6WYbSj6WB,iv:PIjPvv76MPkE0cpLy8gYWmKsVPmgrld6He5bIJiG8EA=,tag:TuYb7R8BWDj9gQWq2sDLLw==,type:str]
EXTRACT_WORKERS=ENC[AES256_GCM,data:6A==,iv:OtqQ5H+oK1NZFlV+99Dt+lUFTh+GhTVDoZzan7WC+B4=,tag:e7xWBVufB+AacZ+LOI6UyQ==,type:str]
RECHECK_WINDOW_MINUTES=ENC[AES256_GCM,data:A+Y=,iv:c+5XMViCtqBRc50rIl2LsEV3Le0VtmJVOxBnN/ecLAI=,tag:JQo5ZgF4O3TGeODwZsbv6Q==,type:str]
#ENC[AES256_GCM,data:lmFfKv52m2Zb72zgfSCByso=,iv:iOtHNLO/DBWD/3QtiPuPM+37czqWcZAhgkuctAZYvbg=,tag:SvSyuJ9NvkGFH/Db8hlkXA==,type:comment]
GSC_SERVICE_ACCOUNT_PATH=ENC[AES256_GCM,data:hgYixpJbCCwZ,iv:p0y06H1nai1qoqy2Mr/XVM+brsv3XNv67+2JGgLtFJM=,tag:5yI6U+M6Awwd+XbOJE/1Lw==,type:str]
GSC_SITE_URL=ENC[AES256_GCM,data:+8j1vufryYHreeZOO+hx23SngX2hTA==,iv:c/9Ero+t0TuvYgegIbsNIaihI117BmliRUxy9Vhuniw=,tag:8UeNRoUFH+DAoyyRN9uuqw==,type:str]
BING_WEBMASTER_API_KEY=ENC[AES256_GCM,data:/Q46VCqGYisn,iv:CHOArnTNYfl3/2aigvkRLQJRTan+5y3YWzRvi17U4P8=,tag:88gdL9ftVG4iyxuHqhltvw==,type:str]
BING_SITE_URL=ENC[AES256_GCM,data:Suwqnq/GzA9KHF40q9/80b4n0Etjkg==,iv:SRuEdcVgOCchSKlDrNNOPV6JycelH8N1BldQ4banU+Q=,tag:8xPLf0+vLHcHHRowfFD8hQ==,type:str]
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrZ0tnODRSTTd5WFdCRTJ1\nVWtlNHJwT1IzR1NFZVQ5QngvLzhOSnJlV0RVCmlwVkhQaFA3azNRVDIvYnVoNHRV\nMWR0S1dQVDMzNkR1YXNIZ1ZhRXRHSWsKLS0tIHErckNjTWNIWGhRL3h2YXJwOEhl\nRWNuQTBLaWJKenFIVGw0R28weTNQUmcKR2T4vlxxfTUrlYv/JeFruTBTFvhcv7LX\nDz/FNNUyGHApgf4nwocdDpv1iBEUwM0vnrDMzVSoSHhnwjv/ZDVPCw==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=age1f5002gj4s78jju45jd28kuejtcfhn5cdujz885fl7z2p9ym68pnsgky87a
sops_lastmodified=2026-02-23T16:03:19Z
sops_mac=ENC[AES256_GCM,data:1zBhmoOyu5mGD1W0TCOO9oFEYerXaD7Pm3NQs0o1cwytveDcn55hD0GR/z0PZTBf0taveqyuiuH9ugy3qdsX3PfDNKcadhgh2epoJeVq7imDnmWJ+wzURgQax72Xm39MBYRNZkyqYT+L7NuvdEF7wyfMsaVn9XcrMb+QdGC5Q+0=,iv:EaiNQNOXNX56FQwFqos7xVUVUAwEP0i0cVFpwaquKIY=,tag:4qaEv6le+KsLjEANcP9b/w==,type:str]
sops_lastmodified=2026-02-23T21:02:13Z
sops_mac=ENC[AES256_GCM,data:KQefQTETh9w/SgTk37g+SU/fw+SZB2Mya0JTSENM2SLCS43hRUrTpZA/QCGuLbwRacgdkMp646BhYBX6JoEArW6Y/Jq1y5O66V10HliHLVfOEJ7DxaApPnczr9FM/nceYUOVWeYq2IXTmOtfNUhtCwpdXJJzEDRqJ0padGGH2+w=,iv:8Be6A0LThJX2fF3y9/4Hy82BPNb4NJOajrGF5kTaPAE=,tag:TK7qBGDVaA2DfxOmkuqCww==,type:str]
sops_unencrypted_suffix=_unencrypted
sops_version=3.12.1

View File

@@ -225,6 +225,14 @@ _Move here when you start working on it._
---
## Human Tasks 🧑
> Tasks that require manual setup, external accounts, or human judgement.
- [x] Set up ntfy.sh for supervisor notifications — topic `gWMeiHxj8ZqLbbqT`, token in `.env.prod.sops`
---
## Decisions Log
| Date | Decision | Rationale |

View File

@@ -42,6 +42,7 @@ LANDING_DIR = Path(os.getenv("LANDING_DIR", "data/landing"))
DUCKDB_PATH = os.getenv("DUCKDB_PATH", "data/lakehouse.duckdb")
SERVING_DUCKDB_PATH = os.getenv("SERVING_DUCKDB_PATH", "analytics.duckdb")
ALERT_WEBHOOK_URL = os.getenv("ALERT_WEBHOOK_URL", "")
NTFY_TOKEN = os.getenv("NTFY_TOKEN", "")
WORKFLOWS_PATH = Path(os.getenv("WORKFLOWS_PATH", "infra/supervisor/workflows.toml"))
NAMED_SCHEDULES = {
@@ -282,15 +283,16 @@ def git_pull_and_sync() -> None:
# ---------------------------------------------------------------------------
def send_alert(message: str) -> None:
"""Send failure alert via webhook (ntfy.sh / Slack / Telegram)."""
"""Send alert via ntfy.sh (or any webhook accepting POST body)."""
if not ALERT_WEBHOOK_URL:
return
timestamp = datetime.now(UTC).strftime("%Y-%m-%d %H:%M UTC")
cmd = ["curl", "-s", "-d", f"[{timestamp}] {message}"]
if NTFY_TOKEN:
cmd += ["-H", f"Authorization: Bearer {NTFY_TOKEN}"]
cmd.append(ALERT_WEBHOOK_URL)
try:
subprocess.run(
["curl", "-s", "-d", f"[{timestamp}] {message}", ALERT_WEBHOOK_URL],
timeout=10, capture_output=True,
)
subprocess.run(cmd, timeout=10, capture_output=True)
except Exception:
logger.exception("Failed to send alert")