diff --git a/clusters/base/apps/authelia/secret.enc.yaml b/clusters/base/apps/authelia/secret.enc.yaml
index 1a1fd52..9e61aaf 100644
--- a/clusters/base/apps/authelia/secret.enc.yaml
+++ b/clusters/base/apps/authelia/secret.enc.yaml
@@ -4,20 +4,20 @@ metadata:
name: authelia-secrets
namespace: auth
stringData:
- configuration.yml: ENC[AES256_GCM,data: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,iv:rLtGWGZazj0LIzbzI1n+b80hmscwyob+antl/mwoKkc=,tag:E4RF5gmp2rILP8A4loSNqw==,type:str]
- users_database.yml: ENC[AES256_GCM,data:/1ky+rXzRTwvYYxNekMKnPB03Zy9joDw10FPSUcpBVJPX4LLv8MDH38cVQSG4hrUc3VW6RlN0Up2fMyQLM9e3iYFofevc3jjydYpkGcWdQXkQWzN6BqaIynom1sbKgYKCrsf8FdSCRdcNE5Ck/Nw6n3gyJ+vI1ZxghGzPosHHD7WL/jV0MW7nfAT3piKCZsBGb5xYPIhEQUbKw2v1TZ45+etauUpYeuvs636fZ8v9d/qs/fxuxFVi9QCDLduHaPDio4BKcAc0tOugQJj4ckNuqhC+61j9Nyim9RYJMqnFV2TZthrgu2286eCx4U7YrK6Om5u7ngfzybd98O+CcdIoeJ/0TR6p6VLJRkK/XgxupspREjYRYQ+L0hehnlgjaAecHZMKuEWmj7FKuwWDE8+2pXilQ6za325sRvpfOuOUSehAgi7DgWOvcICJYoCTt9zQjo1QYT0OL1CWgc1J3ODE0kRT2hWtvHO+1WOVceeWrWPX7lVBgPYxT+XmmHKUtTWWoLCiw/Din3ZthuzWIK8DwYnSis0dEN195i4NNkZE6zPwbFJLg63pNaLu+5ttvcz/sxl8gW1WOFGGTjNWyicdp4yWt4DYmW+iQPKRrEUcoA53622w1slkyZ/HEHo+YSOm5SbGNwLF1+VlOZP+xDBw67QBj0xHKeMjA53X2boAHA8bvivjQlPUS64HHDh7Cdhxdx8VWbCkHaRG4PgsDblY98cXpHhJYWkH5xoQlJHtGqbvlVFr048rh6Ng7OAlAHhQGCw2Ude3a0yG2X0OPeMPbUFQaa+yRDRi7MWdMfvgxumDK6Cwa95RCrZG7V89bt+YjQfxMxEP4wiNsFARmyXGik/L45xSHRuOJ6JkeL2+FUdvIGBu0TrjvNV7tzQTuGSN9ULukymLFm8qmKa7xuG9b/3Gj6DQZRCFxLV1RPIZC7aM+7j0WZf7XtCKqjkuDjIAaNuxvPKfP1anPKrnQsz1Pm8xrMoHJTKvygB5ISK22zpxeDfto87Zow+HiSich+b9DCZprDXYcaIbEddvbxDikqOj4UoKag9CSAC08CSE0lcgiLOIeaYKVglcNeN/05GwQ5DsnGVOLwgJlIy8D4JxwYFZQ1jyzXJedsNH1aYvDTr9w6O4ZkeSvjjguqo6JA/9fTBz8HrbYpaRMAHyS2LQqe8gFtmGJ7tZRfmLUWNHtbYezdP1d9FHDQCOf3UHiyckFb8ronFHwd1h5UMOniAFLYNPkwlBt1Ci5tkOC7pP1LjCjaDbfFAxnsNuLd+d18+zmdqFdEzLo8p1mFor0b/4H42r7oEyFZwrxJvK4LJWNxsTwSb5Gjxw+VHqffwIywksuCoxyxutGkskxD6uiaO9zdG34ofuaai+6sekjGhGqVwvOIkXXFcwrNCmQwcwMs5c/kuqG7J1NRybh0gxpY88pw47YO54cbV3x6VG+zeEHGdOiY76zzB0yBapwTxAVd2U+RTlnrVANNx9txrqAMTD7G22677z+0T8BfmcoKCEe0ZF8SqhWJenjamintx+rcMzszFisnL607eLo2xjuiza8zhUbrRFug44yZ/5AkQv0gsKxLF31pZtAUiP8iM8o2NA2SiZMMjH7p/wQqMoEqLMeq4OQ9m/4LR9v2tOR5pz+QBgNS0gfIMdlvX94EUJklZzKS2EyxTJOlmlDp7GXkgfux7nGHiTkFxsWtYmMgdqjk9Chz6lTZ6TDka4mPILQ==,iv:4kEZobS+NeweSkuivY0vvCRvhrVkPNFdnnws9AtD/nQ=,tag:rZdVp9nUgBDHpCQg5HdRTw==,type:str]
+ configuration.yml: ENC[AES256_GCM,data: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,iv:S/IOoLyQNY3N9FvrcQn+z72wo35M6ztvvRehq/2mEcg=,tag:mDj58KejRP8nl1/jPhnAMg==,type:str]
+ users_database.yml: ENC[AES256_GCM,data:zO+i40zVp42vqV0frISgv2WDwmKm2zOwP+SfkY9Q6ZTUq4rL973QRTrJtx1IxXu5A46Mf55O7uxvfm5IHnhoOLS+TI1PEeS6VjiP/ig2+x7O1DgWJN2BePm8w6iypY0LiIXBsL+yVRYAMYGIcNd1KOYdFKytopbZ/fjOsOsMGbEg0tH1WE37+r9Nfp4ZFoGPW36Sa+1VgRnaHK8ac7xKL2DJekHSTAuFyX2zHXgEB0to2HZJzpfIdvO1jjeqlVDyA9nxSgae2+1Uy5QUz2s4mPMfemSfq6T87WMvE2OenlAZmYBT7fFtxDsxxJWUiRIdQcVd8vf6D93H6nHxjMzhw1RxTdQ7mDU6MfYjSIjUsBCsJNkY52Y25q+oD/uHgAJJSbLfB3xBLGnIk1m6l5chJcsW2PwsLXPwecHmFRQtKq0zQgNo5W2nBJ6mTOK0ZdbdMhwxGyQMSGH4MT0IGiY1Tky0XVCGr8ady+p19WWWlMqqnfXc0xAPgsoWHnF0by91fe4QskBvn2K3YXp/o7zz2FmPZwD8WLQeILk1zhlvxu0u1jTpm9gSuA2/gEJn52TOOuBHq5XpQwGmy5RnZ4bqzda9P6dneSQnNuQcQM7Q3eewRthsylM/VRFtJZo8eKFGEBwzJx2HWedqYbtvA2byl4oNyKiD3lw1GHWsfOI0qj6nFpPVbS0knSj7gi8JQXsVKGUm9OcxfC2rBCM11is1zI1hcLQLi3emHZ7bQzaAA8OLqZBBOpggsTzX1PA4YdjMXQl3KqR4YAYP4r6AFNH0J3Y8Jk0aVkT7X+mSx0FV4OpwmjBBqlB46gjsBULpC8oN8cgFhalU2ETquDNjzVqMKSfySNem1CwXOhWFC2RtTJ0p7mciXMR+7Kin1YjPnzTiVARAU6yDsIewJ+LZxKeKftwWkvPRX+Dr/Qrg9oz4RE2/ckb3z8ZUFGEH7ZFVEAlp9fyss7NxiWMShrnmDCGMpDXvlrgYi0ClswbXL/ydh+B0To6IWGfkRLfkU44dELbpMcZzzwD1R78odAdWJPCzsG66qOk0ZbzSEfpyMimg9bDKNcsNjUy3iH0+m8E0swgOjG96Sm5cpAhne7kbvcZubvBYDhvCnl+g5zGvL7Et125FeWR93Jw6lt96AVSARkvPF6/sNYVDrNWpurooBG43+gKRo89VF6zJe3pcwS2RNBR/bS7lVp0S0FCHc14z+XhegeTaVLjeaY+bcClb/NgtEfjsu2Obpu9UAoCHZcXfhYF2es8ScuqmU7rcaqvThv+O86eRtgi6SkUkLvYFBnLolzwNCAhKfK5XVLJR+GyNtd2WcnEfSbr611f/VNl57N3XFAOshK2atGRR5wMe91++sdST4ZAZNphfCiEPhK6PrmIALbVg4Rtd3PptVYYEHhpZPq3UauUiSZw4bFMlnpYvyHmLT2oWVClyQH1CDF2zx233qxqYgzbmuUPoc6BsZyxGxHNSzerAA9wpDTc6agxi6Q/L8vmL9MexVCPxJ1tNn+oINxXgOZp/4aJKoBrSGOLOs6bTbIFJ9xfXqpE6S6UiI/SXP5N4yd3Se+G9T41u4HTnCEZLjSHwjUdRX2XCcfUZgaG/IysE7BCFWy0yjl/uJXAygku6voj0n1k4vtTNcHekq3Fn6P6VKfXJon0PCRIIdwGKKPIv6aMilN3bt8GmNeNfzCNCbdl65rvipmBDTrrqPK+gqMu02Cg3n+4Qeg==,iv:Qdm4jln4oD8hqbQ9HOYCDToj1itCfEuacUrm4TLfrBY=,tag:yHaoqKOrGwrRKF47UwifDQ==,type:str]
sops:
age:
- recipient: age1ncw6uagcgncd5m2admqxt73ey0mcd99jsw9sa9lcdv3gu70mcerql8ya0k
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvRU1vMkx3WlR6T2doSDZ2
- ZHVnbSsxR0pPU2JmSlMvTVlFKytOcXcyWG5jCnZyTUJlYXJJM1hidmpwTmJRaGVM
- aU9ZOHYvNmxhajFReWd0Z01Pc1lBU0EKLS0tICswakJMWVJ5OUVsM1B6L1pFYWxr
- QXlTWGF4TktENXg5NVd0enhvMjRiTUUKuZo8xBNUP36Qp9cAt/3S6IwhU9ACDAhZ
- DjOwmNMkKNipBtBfruB0fz/02I7cTKgOV5Kufnhi+AqKKidal+DqfQ==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlVmFvcFlCUS9QOFFCcjdT
+ aDdtR012RFkxaG44d0pyelJUVE5uNDF5OVVzCjFkZWgxZ0wxU2dVcklQM3BIWDg4
+ TGY4eXo0QW4xeXVrMlF1OXg1Z2ZRcncKLS0tIE1iUkdML1QrSWZPMkdiR3B3ZHQ4
+ eEtyZDlWRVFWZGpPTXcwaHJ3NnpTc0kKOHBLmjdmhg+8qEIMhuQtIlfUIv0Gfg0T
+ AZpxFaOy4BH8JIbSS0jQPRXt1lRejpSllWNqIOuMBW6gy170+niRKQ==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:19Z"
- mac: ENC[AES256_GCM,data:+YFzKObBMYHiv/rZcMldK0NevTBSQvkblyzLDs2oz0P07Xl0y2IGcA7rmOgPJj0WioMS5ScJ+h6smpys9yL74LJ/2fGXgkgF0Jq42IBTqZwlYaSW5ByuSrxI7XKDRZ4qwE9+7d45Pm2tkeEOKHKcsChH8msiWXbLHMpdUIbUegk=,iv:U43hJ1zIYHA7NEd6osu26H+nxi9e+dX7RC1xbLRksSg=,tag:LG5ST+OgdIcYP5rwZ4rdiQ==,type:str]
+ lastmodified: "2026-08-26T10:28:28Z"
+ mac: ENC[AES256_GCM,data:NOnwdff1Lu4qVxxeHGjWvrXMLgCczu6wpDDlpn3FX1FT6VUaP+H/2bR/t6IsKF9nf8JLVZOnGpMRAmLKVYUVb6p+h6v57Hk6QM6Pp380Ersx56GtM6wnZhU/RvP5dpzpZ6QCmnwUOXPh7FWCzb/V9+DLQa0HL9HC5yA9ikdqsH8=,iv:7BBNXjKCMLHvMtAxK7i+rMQeUs0kfjHNHm9pNKH+jIk=,tag:uC+Pnr8xfVmq8e8M4p74zQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/davical/secret.enc.yaml b/clusters/base/apps/davical/secret.enc.yaml
index d5f6b67..9b12374 100644
--- a/clusters/base/apps/davical/secret.enc.yaml
+++ b/clusters/base/apps/davical/secret.enc.yaml
@@ -4,21 +4,21 @@ metadata:
name: davical-secrets
namespace: pim
stringData:
- PGSQL_ROOT_PASS: ENC[AES256_GCM,data:UiwviXpRrBeL7dWIHHVSB9DvsHMbmHa+16SVnEx6GASFONWIyg+IjxGskiJxDl1X,iv:SUA+3oxHo2/Gy0Mo9W+O37bk97gbwQAhluIbB3rfbkU=,tag:0IGTKZed11H2bCefwH/8uA==,type:str]
- PASSDAVDB: ENC[AES256_GCM,data:NjlXZvbe+uuw9TaK7XyDxPuICmI92gtbK8WO2pMWDXDjcWJ0KKasuyCn+x7svJQV,iv:xgnwG6jfBy4KrkZ5v7cX4pLgDVpRii1MjhfEkHYidp8=,tag:aLLUdEWgt9JbkB/ULmTSww==,type:str]
- ADMINDAVICALPASS: ENC[AES256_GCM,data:0AVyTVm8kx/4O+IXzaGWeBV0oAkeba0cktnqBo+j4PM=,iv:Qg8JtkGOr1mXDGI7/QslXLFk7Rnp9etcZRfY+FZsowU=,tag:MkrG4h8cuMz8czfDJrzeog==,type:str]
+ PGSQL_ROOT_PASS: ENC[AES256_GCM,data:/PTuUu4mxQGnwYWXu2F+oSZs83bThqrMmnVg4QEFs5U3vRELC1Y9B7ljHQmfa+Dy,iv:mROnkAdrBknqb8LE4dxEqd0t+ikKLB8bmBjZYGHVYT4=,tag:XxeFtw3V4wa/39Myh+AsZQ==,type:str]
+ PASSDAVDB: ENC[AES256_GCM,data:n/hQIuYYId06jg9FDjsQQuWIHrTV08hSXfKspxPjJtpkMmeAVRAKUl7W3qMUHHTG,iv:NrRa3GdNRYq2dmKsvd3B1sz0goV6NEB4JvL4/xDlSXI=,tag:Cg1HPknlk9rg8SxRktrEMg==,type:str]
+ ADMINDAVICALPASS: ENC[AES256_GCM,data:Z+RjBVGEfFOvob/H3K7gvYsYmPKWaGpFh7e1zr0s8dI=,iv:81z0pLTjjViI3WcxJNjuMgyS3Dqr7xiFsGoU7DtWYQQ=,tag:oey5cwF3wUEr+iteaNWXvw==,type:str]
sops:
age:
- recipient: age1yx8mey02c0mu6te9hwxwdqp5n4enjz35e8thchsmvhqw7xsrzy0syg367g
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvdm13VGMzSWJXaTlrTmRR
- ckV3YVR6WXo0eFJ0UzFVY1pWajBpcUFFbnp3CndzWmV5cVZ1TE1vYlZTK0dhZzNv
- ajdWZWNBOElXVG96RmR4L1g0Y2FGZkEKLS0tIEg3OWlNZTA4bE9NTVlMei9yUXZL
- NXhuQjhpekxJaTZMWmlrckxxOXk1T2sKUAIdm3EdXTMN2CEK46E82VFaDQXWOpRt
- YkVsk3BjmPQ5HYGbLlI9hp0oPmxk8Qj35xgnC9SJ53WhF7MW1HU3Pg==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSTHB5TElUZXNNRjZCVC9P
+ dXhub1JVUGY1MkR6SGVvYmZwYVRNTDUvNWlnCnZucE5mSS9HNE4wWGxrVUNucVla
+ K0gwM3Rwc3NqbWh0dFdwTGF4TjMyVFEKLS0tIGNUUFgyajFZbldXczR6Q1RnUWN2
+ eFJWZ0J1TGF5RStON2ZTQ1FqSGdCcHcK6ltsoYLyLyhFIdvI6l+BzlOyshv6UXlf
+ ztyD6II3nK867NC+3U8ydhVak7S26ZcV7UO9z7YzZtglW6+nX9OfPw==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:19Z"
- mac: ENC[AES256_GCM,data:JkJMdEb7Q0ttxXFLGqkWxY6Ka67WYQSDTEIS0kN6xZ9yHKkSz49598hRrgrVEa2vYrrI+3wD1J9zo5HNl694m50z2s9FwQAJXJHlooYjLPygfYLDgmBQeif+VI3oHVOYpCCDckfiTw3XHO7hTIw60anN7RNGsl/g5AOzdPi9VPQ=,iv:h2NsrZaFAhQGV05ArVkN7zv+cgRLHRBGerppiI054tE=,tag:IVkDEC3s5LYe5ObO2FVfIg==,type:str]
+ lastmodified: "2026-08-26T10:28:29Z"
+ mac: ENC[AES256_GCM,data:nkHRKLOf3XJGIxFR35xZ6Kz39Uqj7k7s6a9o9uyXou6X4Azt0JY2/g8bPlmvHc36FMAsoh4ZkcYkGfHggddtNhJS633bbct0YJY9b9LSJr2S+HNZrJgMstns39nRNZCAFeXotITCe2QtG1+Xj3oDjHDGdQWDqapxLKW/Nytv93E=,iv:gNDGnCoXhsE1aZABiTolsm55dG3SNIE8PFtgomTUNJs=,tag:PvCQH2bELO9YfMTrLZRoqQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/immich/configmap-rsync.yaml b/clusters/base/apps/immich/configmap-rsync.yaml
index d8ceba7..09b1045 100644
--- a/clusters/base/apps/immich/configmap-rsync.yaml
+++ b/clusters/base/apps/immich/configmap-rsync.yaml
@@ -13,23 +13,34 @@ data:
import json
from datetime import datetime, timezone
- SRC = "/source/"
- DST = "/data/"
+ # source mirrors immich's own folder layout 1:1 (library, backups,
+ # encoded-video, profile, thumbs, upload all sit directly under this).
+ SRC_ROOT = "/source"
+ LIBRARY_RECENT_DST = "/disks/library-recent"
+ LIBRARY_ARCHIVE_DST = "/disks/library-archive"
+ OTHER_DST = "/data"
OUT_DIR = "/www"
+ FILELIST_DIR = "/tmp/filelists"
+ CUTOFF = datetime(2025, 7, 1, tzinfo=timezone.utc).timestamp()
+
+ PHASES = ["listing", "library (recent)", "library (archive)", "other folders"]
state_lock = threading.Lock()
state = {
"status": "starting",
+ "phase": "",
+ "phases_done": [],
"percent": 0.0,
"processed": 0,
"total": 0,
"rate": "",
"eta": "",
"bytes_transferred": "",
+ "recent_files": 0,
+ "archive_files": 0,
"started_at": None,
"finished_at": None,
"error": None,
- "returncode": None,
}
# matches lines from `rsync --info=progress2`, e.g.:
@@ -44,15 +55,20 @@ data:
def render_html(s):
progress_html = ""
- if s["status"] == "scanning":
- progress_html = "
Building file list...
"
- elif s["status"] in ("syncing", "done", "error"):
+ if s["status"] in ("syncing", "done", "error") and s["phase"]:
progress_html = f"""
+ Phase: {s['phase']}
Progress: {s['processed']} / {s['total']} files ({s['percent']:.1f}%)
Transferred: {s['bytes_transferred']} bytes · {s['rate']} · ETA {s['eta']}
"""
+ elif s["status"] == "listing":
+ progress_html = "Scanning source and splitting library by date...
"
error_html = f"Error: {s['error']}
" if s["error"] else ""
+ phases_html = "".join(
+ f"{'✓' if p in s['phases_done'] else ('→' if p == s['phase'] else '·')} {p}"
+ for p in PHASES
+ )
return f"""
Immich NAS rsync
@@ -60,19 +76,22 @@ data:
body {{ font-family: monospace; background: #111; color: #eee; padding: 2rem; }}
table {{ border-collapse: collapse; }}
td {{ padding: .25rem 1.5rem .25rem 0; }}
+ ul {{ list-style: none; padding: 0; }}
.bar {{ background: #333; border-radius: 4px; overflow: hidden; width: 300px; height: 14px; }}
.fill {{ background: #4caf50; height: 100%; }}
.err {{ color: #f66; }}
Immich NAS rsync
- {SRC} → {DST}
+ {SRC_ROOT} → library (split by date) + everything else
Status: {s['status']}
+
{progress_html}
{error_html}
+ | Library files ≥ 2025-07-01 | {s['recent_files']} |
+ | Library files < 2025-07-01 | {s['archive_files']} |
| Started | {s['started_at'] or '-'} |
| Finished | {s['finished_at'] or '-'} |
- | Exit code | {s['returncode'] if s['returncode'] is not None else '-'} |
"""
@@ -93,21 +112,32 @@ data:
os.replace(tmp, os.path.join(OUT_DIR, "stats.json"))
- def run_rsync():
+ def split_library_by_date():
+ """Walk source/library once, bucket relative file paths by mtime."""
+ lib_root = os.path.join(SRC_ROOT, "library")
+ recent, archive = [], []
+ if os.path.isdir(lib_root):
+ for dirpath, _dirs, files in os.walk(lib_root):
+ for name in files:
+ fp = os.path.join(dirpath, name)
+ try:
+ mtime = os.stat(fp).st_mtime
+ except OSError:
+ continue
+ # rsync --files-from always wants "/"-separated paths
+ rel = os.path.relpath(fp, lib_root).replace(os.sep, "/")
+ (recent if mtime >= CUTOFF else archive).append(rel)
+ return recent, archive
+
+
+ def run_rsync(args, phase_label):
with state_lock:
- state.update(status="scanning", started_at=datetime.now(timezone.utc).isoformat())
+ state.update(status="syncing", phase=phase_label, processed=0, total=0, percent=0.0,
+ bytes_transferred="", rate="", eta="")
write_output()
proc = subprocess.Popen(
- [
- "rsync",
- "-a",
- "--info=progress2",
- "--no-inc-recursive",
- "--outbuf=L",
- SRC,
- DST,
- ],
+ args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
@@ -124,7 +154,6 @@ data:
if m:
bytes_transferred, percent, rate, eta, _xfr, to_chk_left, to_chk_total = m.groups()
with state_lock:
- state["status"] = "syncing"
state["bytes_transferred"] = bytes_transferred
state["percent"] = float(percent)
state["rate"] = rate
@@ -141,23 +170,78 @@ data:
last_write = now
returncode = proc.wait()
+ if returncode != 0:
+ raise RuntimeError("".join(tail[-5:]).strip() or f"rsync exited {returncode}")
+
+ def run_filelist_rsync(src_dir, dst_dir, filelist_path, phase_label):
+ run_rsync(
+ [
+ "rsync", "-a", "--info=progress2", "--no-inc-recursive", "--outbuf=L",
+ f"--files-from={filelist_path}", src_dir, dst_dir,
+ ],
+ phase_label,
+ )
+
+
+ def run_other_folders():
+ run_rsync(
+ [
+ "rsync", "-a", "--info=progress2", "--no-inc-recursive", "--outbuf=L",
+ "--exclude=library", SRC_ROOT + "/", OTHER_DST + "/",
+ ],
+ "other folders",
+ )
+
+
+ def main_flow():
with state_lock:
- state["returncode"] = returncode
- state["finished_at"] = datetime.now(timezone.utc).isoformat()
- if returncode == 0:
- state["status"] = "done"
- state["percent"] = 100.0
- else:
- state["status"] = "error"
- state["error"] = "".join(tail[-5:]).strip() or f"rsync exited {returncode}"
+ state.update(status="listing", phase="listing", started_at=datetime.now(timezone.utc).isoformat())
+ write_output()
+
+ recent, archive = split_library_by_date()
+ with state_lock:
+ state["recent_files"] = len(recent)
+ state["archive_files"] = len(archive)
+ state["phases_done"].append("listing")
+ write_output()
+
+ os.makedirs(FILELIST_DIR, exist_ok=True)
+ recent_list = os.path.join(FILELIST_DIR, "recent.txt")
+ archive_list = os.path.join(FILELIST_DIR, "archive.txt")
+ with open(recent_list, "w") as f:
+ f.write("\n".join(recent))
+ with open(archive_list, "w") as f:
+ f.write("\n".join(archive))
+
+ lib_src = os.path.join(SRC_ROOT, "library") + "/"
+ run_filelist_rsync(lib_src, LIBRARY_RECENT_DST + "/", recent_list, "library (recent)")
+ with state_lock:
+ state["phases_done"].append("library (recent)")
+ write_output()
+
+ run_filelist_rsync(lib_src, LIBRARY_ARCHIVE_DST + "/", archive_list, "library (archive)")
+ with state_lock:
+ state["phases_done"].append("library (archive)")
+ write_output()
+
+ run_other_folders()
+ with state_lock:
+ state["phases_done"].append("other folders")
write_output()
def main():
os.makedirs(OUT_DIR, exist_ok=True)
write_output()
- run_rsync()
+ try:
+ main_flow()
+ with state_lock:
+ state.update(status="done", percent=100.0, finished_at=datetime.now(timezone.utc).isoformat())
+ except Exception as e:
+ with state_lock:
+ state.update(status="error", error=str(e), finished_at=datetime.now(timezone.utc).isoformat())
+ write_output()
# stay alive so the pod doesn't restart-loop after a one-shot sync;
# the status page keeps showing the final result.
while True:
diff --git a/clusters/base/apps/immich/helmrelease-server.yaml b/clusters/base/apps/immich/helmrelease-server.yaml
index d3a10c5..7a87d2e 100644
--- a/clusters/base/apps/immich/helmrelease-server.yaml
+++ b/clusters/base/apps/immich/helmrelease-server.yaml
@@ -13,6 +13,66 @@ spec:
values:
controllers:
server:
+ strategy: Recreate
+ podDisruptionBudget:
+ maxUnavailable: "0"
+ initContainers:
+ fix-permissions:
+ image:
+ repository: hectorm/nfs-ganesha
+ tag: v10
+ command:
+ - sh
+ - -c
+ - chmod -R a+rwX /disks/library-recent /disks/library-archive
+ # native sidecar (restartPolicy: Always): mounts the two library
+ # disks and exposes their union at /disks/merged-library via
+ # FUSE. It must be up and actually mounted *before* the "app"
+ # container is created, since HostToContainer propagation only
+ # relays mounts made *after* the receiving container's own mount
+ # exists - it won't retroactively pick up a FUSE mount that's
+ # already there. Running it as a restartPolicy:Always init
+ # container (started, gated on the startupProbe below, before
+ # regular containers) guarantees that ordering; a regular sidecar
+ # container racing "app" on every pod start does not. Same
+ # pattern as clusters/base/apps/nfs-photo.
+ mergerfs:
+ dependsOn:
+ - fix-permissions
+ restartPolicy: Always
+ image:
+ repository: ghcr.io/hotio/mergerfs
+ tag: release-v2.42.0
+ args:
+ - "-o"
+ # library-recent listed first: category.create=ff means new
+ # files created through the merged mount (i.e. new immich
+ # uploads going forward) land on library-recent by default,
+ # which is exactly what's wanted for freshly-uploaded photos.
+ - "allow_other,use_ino,func.create=ff,category.action=all,category.create=ff,category.search=newest"
+ - "/disks/library-recent:/disks/library-archive"
+ - "/disks/merged-library"
+ securityContext:
+ privileged: true
+ probes:
+ startup:
+ enabled: true
+ custom: true
+ spec:
+ exec:
+ command:
+ - sh
+ - -c
+ - grep -q fuse.mergerfs /proc/mounts
+ periodSeconds: 1
+ timeoutSeconds: 2
+ failureThreshold: 30
+ resources:
+ requests:
+ cpu: 50m
+ memory: 64Mi
+ limits:
+ memory: 512Mi
containers:
app:
image:
@@ -54,10 +114,12 @@ spec:
limits:
memory: 4Gi
# one-shot migration copy from the old NAS-hosted docker install
- # into this install's own library volume (see "library" below).
+ # into this install's own volumes (see "persistence" below).
# rsync is idempotent, so a pod restart mid-copy just resumes
# cleanly; once done it sleeps forever instead of exiting, so the
# container doesn't restart-loop and the status page stays up.
+ # (starts after all initContainers - fix-permissions and the
+ # mergerfs sidecar's startupProbe - complete, same as "app")
rsync:
image:
repository: python
@@ -68,10 +130,10 @@ spec:
- apk add --no-cache rsync >/dev/null && python3 /app/rsync.py
resources:
requests:
- cpu: 50m
- memory: 64Mi
- limits:
+ cpu: 100m
memory: 256Mi
+ limits:
+ memory: 1Gi
rsync-web:
image:
repository: nginx
@@ -141,16 +203,71 @@ spec:
- rsync.photo.aggtaa.com
persistence:
- # brand new, dedicated library - deliberately not reusing the old
- # docker-compose install's NAS data, and not nfs-photo either.
- library:
+ # Immich's "library" folder, mergerfs-merged from two disks: recent
+ # files (per the rsync migration's cutoff) and everything else.
+ # New uploads going forward land on library-recent (see mergerfs
+ # category.create above). Not reusing the old single 800Gi library
+ # PVC/PV - this replaces it (that PVC becomes orphaned, retained,
+ # and unused; clean it up separately if no longer wanted).
+ library-recent:
type: persistentVolumeClaim
accessMode: ReadWriteOnce
- size: 800Gi
+ size: 200Gi
storageClass: longhorn-single-replica
retain: true
- globalMounts:
- - path: /data
+ advancedMounts:
+ server:
+ mergerfs:
+ - path: /disks/library-recent
+ fix-permissions:
+ - path: /disks/library-recent
+ rsync:
+ - path: /disks/library-recent
+ library-archive:
+ type: persistentVolumeClaim
+ accessMode: ReadWriteOnce
+ size: 500Gi
+ storageClass: longhorn-single-replica
+ retain: true
+ advancedMounts:
+ server:
+ mergerfs:
+ - path: /disks/library-archive
+ fix-permissions:
+ - path: /disks/library-archive
+ rsync:
+ - path: /disks/library-archive
+ merged-library:
+ type: emptyDir
+ advancedMounts:
+ server:
+ mergerfs:
+ - path: /disks/merged-library
+ mountPropagation: Bidirectional
+ app:
+ - path: /data/library
+ mountPropagation: HostToContainer
+ dev-fuse:
+ type: hostPath
+ hostPath: /dev/fuse
+ advancedMounts:
+ server:
+ mergerfs:
+ - path: /dev/fuse
+ # everything immich keeps outside "library" (backups, encoded-video,
+ # profile, thumbs, upload) - plain volume, no mergerfs involved.
+ other:
+ type: persistentVolumeClaim
+ accessMode: ReadWriteOnce
+ size: 100Gi
+ storageClass: longhorn-single-replica
+ retain: true
+ advancedMounts:
+ server:
+ app:
+ - path: /data
+ rsync:
+ - path: /data
nas-source:
type: persistentVolumeClaim
existingClaim: immich-nas-source
diff --git a/clusters/base/apps/immich/pv-pvc-nas-source.yaml b/clusters/base/apps/immich/pv-pvc-nas-source.yaml
index 8a26b96..959449f 100644
--- a/clusters/base/apps/immich/pv-pvc-nas-source.yaml
+++ b/clusters/base/apps/immich/pv-pvc-nas-source.yaml
@@ -14,7 +14,11 @@ spec:
- nolock
nfs:
server: 10.0.64.80
- path: /mnt/sdb2/immich
+ # .../uploads specifically, not just .../immich: this aligns 1:1 with
+ # immich's own folder names (library, backups, encoded-video, profile,
+ # thumbs, upload) sitting directly under /source, matching what
+ # rsync.py expects.
+ path: /mnt/sdb2/immich/uploads
readOnly: true
claimRef:
namespace: photo
diff --git a/clusters/base/apps/immich/secret.enc.yaml b/clusters/base/apps/immich/secret.enc.yaml
index 0894c0a..e94d02d 100644
--- a/clusters/base/apps/immich/secret.enc.yaml
+++ b/clusters/base/apps/immich/secret.enc.yaml
@@ -4,19 +4,19 @@ metadata:
name: immich-secrets
namespace: photo
stringData:
- DB_PASSWORD: ENC[AES256_GCM,data:V480mcVwcvNf038oqzwUaJ2/uW8TDWvgDdHSvcjZj2E=,iv:JJOpmFKE990M5Qrna5ygzHarBG8OXblVGX7cgrZG9V4=,tag:Y7TUANsHOyfo0fUNyuJK8g==,type:str]
+ DB_PASSWORD: ENC[AES256_GCM,data:hQbH4veR4gJOZH8zY71mqinSrKU63KkEtjJaKiImjCU=,iv:oVfNqGyHEGZzb9kCnS4yUC5nnXCCm7VYJ5SPwJn7AyE=,tag:vbe2rQW4V5MeZqVx6/U/6w==,type:str]
sops:
age:
- recipient: age1wmm8qrqnjzvd5nkraed6ylrsxlpn3ru7d7zettdudj7y9sg9dd2su0u3mr
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUR1BmSkUvQk5ma2lXd3Zh
- QlpuQ1RiY3R5RTF3U2ZtclE2cVRKc2hpcTJRCmN5eCtJVzZuNERxUFIwMEY3TjZG
- Z2lmbXRXblNyVWs4U2NxZ1hob0N5YkkKLS0tIFljK3U5K0xBTUxnTE5iV25aU1Ji
- dTd2L25wb240VzBQVjJxc01WbERaUk0Kpr9LZ8y4VMc1Ad842LaE1aUVLKckPZhj
- 5Q2aB+ae+MEgdKztyQFcOEnIfha4cY4QtwswVHlyaWKLi8VL7eYq7g==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkOE1oa1J4bnU4eDdqOHZY
+ YmNDeHRKTzQ1TWI0L2pqZ3lNTkRaUVQva0drCklMbHU0S05YakgwVXE4Q2RFTmw4
+ TGU1bGFIQ0ZjTXpEMVk3RENzSWlUTkkKLS0tIEx3UTBXTGRvVGd3TjdETlVFWUdn
+ M0J4TmZCam5jOHNnOWlqOW9hTnNvRTQKR2X0uze2pVEmQ54atawqZ8P9RL9fSQyX
+ IyBSB6KIj1LTtlDfTerXZ8asJBl/FWAJNZMTsL1wZq4+vTOdR/BvlA==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:20Z"
- mac: ENC[AES256_GCM,data:fPJevt8TqMrs2FOcT83e0dP6IMRjzWFk89XWfnavM8adRpJbRxc4qULG+umIZDUa7597ncvOQXIO0zM2DfoKDVANRVT6aqtgo8HOcsVRu07MB43jpMM2s8E16MT1o8+6K3XWJvqXu71OX8zVCVLIC1Ea2yypHY6af8c9XggzRiw=,iv:FJwRrkAzB2Cs3198PA3e0i8lUqj63BNI5q8iVq1zELs=,tag:0EXmxh9zIxLgN7g/NMxRjQ==,type:str]
+ lastmodified: "2026-08-26T10:28:29Z"
+ mac: ENC[AES256_GCM,data:M2y12n6Q2fI7kqi5eAIZxGlwUemWsnabXmvRHS0C2AGN5b00sfxSti1M/fZXP9ubjZR+Ms1D0dta8dyAcCPdSNQMzGew5x4Cdv6CLkcXaTbORI5Bl2X2E8XRwDeZYuM9F4hpPnXa02MaCFQyIQiLyhk6m9xz9GlNCqCSejZOr8M=,iv:uK3ya99vk0AXWVyvA0B0UMDmHEJUOOGHKydaanPGkLQ=,tag:lRtmmkv8bCh6GBxtON7L0g==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml b/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml
index 92454de..e26a2de 100644
--- a/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml
+++ b/clusters/base/apps/markdown-vault-mcp/secret.enc.yaml
@@ -4,21 +4,21 @@ metadata:
name: markdown-vault-mcp-secrets
namespace: mcp
stringData:
- BEARER_TOKEN: ENC[AES256_GCM,data:bLg+EroQN9axxV2nKn6PCK6hYBpwXwpQINRhbWBe7UXz2u08LY7oAFNVmXT1A99j4Zrb0r1iHT0kBfGRDnGCqw==,iv:OEACakrv5TZuqEvBkfoK7h7nSfQddk1YaZf7+RhoRQw=,tag:Ri/6XjEXCdreIpRFgLKyqw==,type:str]
- OIDC_CLIENT_SECRET: ENC[AES256_GCM,data:RSIzvdT7QjA1NSwv6X8w47tvZgjtXeYdemwXC5c9JIh+uxWIcJ255+xAGccCkRYWjJKMOd6y4Wpx6fCeUpOGNA==,iv:3P0NH/jlbWFXhEADHMgMfiRc02W07C2Ud48/0LdGuqc=,tag:Mes+NfqVXKi0QV/VtlpdUw==,type:str]
- OIDC_JWT_SIGNING_KEY: ENC[AES256_GCM,data:AXLonI9YCjD2H4cJuqzKsFuHCPvHpFcY/thQzeTQnRUrW7vydSLp772KOd6JdmH5bnMxbpU7egT56UyaNVor6g==,iv:KKuSzwJEdgwMT4P+3bHxzYN6ABJFjjwfS19/e4GwzVM=,tag:brXhZ4CWEON3jX7gWtEQHA==,type:str]
+ BEARER_TOKEN: ENC[AES256_GCM,data:/5wHS4TFUzbVgvL//s7nIor1roI8LaEI92ag37bp5APhICqCigdNHCDv8rr3vUf+Ss+CxZoYTNkgZsieus36Tg==,iv:i2H2rL434MTnlcRLq+lI8mu7ao7DmDc/TPT/xB6q0UQ=,tag:DAN4aUknohmHF/kW5aFayQ==,type:str]
+ OIDC_CLIENT_SECRET: ENC[AES256_GCM,data:oleyhjc47S0he4zsU2grRQZvfXntT6hC2nqTGayQT++OMACMI6W1VoeyTYu0AJFIIYBU5bldLnXnJZyOlEGkmA==,iv:qjeXO1aFsRSboxgNYL0/RvKUSSKO+zevEhcKZpJlMCo=,tag:JzZCKxJfoUrge0PTB5nb0w==,type:str]
+ OIDC_JWT_SIGNING_KEY: ENC[AES256_GCM,data:ac8Et8AxqWJIElTkU/5mtnow7LCmCDungLtEGI/7hZwr/KGtKX1q4rppmBhgb4odEfMjG2yUNXbHqGbDF+nX8A==,iv:PQkSr2/sPGk8FoGkuRFcC+Iy1FjhHa7vlTeDxKKJo6Q=,tag:rfGcZDUExxWViCwkwgVSdw==,type:str]
sops:
age:
- recipient: age1kct5g7d7eus2hvdnmx99ewsrtz70lhlasxa25euqwdctqhwqqpxqz0n7gg
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJSzZDS3BZYlk2U05OYmh0
- M1NQMGhyV1dnNUdwSFdVWTBKVjBBbjZiS0NFClg4eDZxVVo5c09Cd1pJQ2VNYVRH
- U2lQWEwyMko2N21qWDBTQjBnbWgrUk0KLS0tIFM5RjVnQWJ2Sk5TMGN6a1orOE5O
- MVMzd1MraU1rSktXb3JZYUNpSGRtOHMKI+FQwpQLtLbCSJqvrPCWXFunxL++Ldxq
- kraQjEvoKP0x+1yDJ9vIjk52M8UOdymNfC5MqCcqh8qDGIN4w2F01A==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5VjNiM2ZTMGNPdTdPUnpM
+ K21uRUJQaEtDRW1SRWJVR0FNSGcyL1JIQWc4ClBrd0dQR1ZlQWx1VEdqRDVTVUwv
+ QVZzQnRKcUZYNmg3a1dVQlZBQnRtZEUKLS0tIDM1YUUrTXR4Q2JoWXpyZkpPdFRp
+ TWkramFkZjFhUG9JamR6RXZIRXRNSHcK0d30Tdc14MsJ2lzbv8ftj0VP0IM3yPDR
+ Ow/c+IA4nz7YMKeOfTGF5sd4VWVwFN0zBxPB4i0LECa56HZ7n5yCnQ==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:21Z"
- mac: ENC[AES256_GCM,data:QA/pon4UbZp5LSSFwxz5AP6NnnqE5iu2a7RqmaAJThmNmP244GMmtTVd7RwJM8VKLCERq8is2rfGxvZqpfZUurlNp0V2ck08d7GdM9IZ3fvxDuVDZuyKkKKgaxY+24aFtXxXaZeA9U3KCmfRyvzTrICK/PFWcUcZFXfQH9y7SAU=,iv:9uBv9bVhsKuMaZf30vxffz2iwfDyJs7pLcu7z2Xs4fg=,tag:xiFCZ2c7BetZOL9GzvJ9PA==,type:str]
+ lastmodified: "2026-08-26T10:28:30Z"
+ mac: ENC[AES256_GCM,data:PNOwmif0L2j/wwYkLmgJNBw0Vb9qMpDr8+1fhZZ8CvHuVurZ4ycor5xElV3UTUGun1DAlU5cPhud41GQ1MvUADbVwzPTtlQNkC/8vuDRr0nQIhx+UaGRB+6j/5gvfKqigauX1aeV2xIoF0uZdoGY1g91tdyNoIS6CD1l61AS3GY=,iv:B/HkBrHT93lunnGU84EL05gvaTFzyU3cwBSfeu5t22E=,tag:bIGrLJkUeHJ9hEtE0LwXNA==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/mosquitto/secret.enc.yaml b/clusters/base/apps/mosquitto/secret.enc.yaml
index 2055223..3ca0d43 100644
--- a/clusters/base/apps/mosquitto/secret.enc.yaml
+++ b/clusters/base/apps/mosquitto/secret.enc.yaml
@@ -4,19 +4,19 @@ metadata:
name: mosquitto-passwd
namespace: mqtt
stringData:
- passwd: ENC[AES256_GCM,data:JSJ5JnyjgL38Ghd1b0ahCMBYY72BLjGqCf4SW8spmRjcWNCN6QUoW09ol1aCjBAzm4NoILEcWGQSwyDPxxtPp/ovr1SRYH+nqsIDtV8q7fkrAWV4WVe6mZvZF96yNgAsVr3nIiGN+4anBDdQgSmA4r5N7XEtBE45g1qXarAFH4zzxeL7+VV37uKCTx7yl/cUIgIKHf957MDkKMj3ds5WY56mceyzZvUxnEHYNvNMIns+bZc3dHuECYZ9udiZFg==,iv:eS6Tog3BUsChxEh9JqA5uvfws05Wg6XjixG0OQeDpos=,tag:0gToxnDZqlArEWW9D6f1Hw==,type:str]
+ passwd: ENC[AES256_GCM,data:zVGrqFMcQKR5vNAtjPzVriJlsv4ivyo/2QC18YD681aY1H6Iqrz3SwNYoY3ddE9wK4/dQ1304UkgOr7YXbYbMWiF0MfE1sKiYycdk79IqTHWxAWZhXAwZVPiWMNoS8M54oPQ/2bzoU5+gvBHKSG42omvWF9JajDZ5rzOAtOszlC7LgT/EVZbiNWKkElpGqmYtO68o4jUa2S5znsV4H1wv4KOdqJFXlv0j8L+73yXhrslH5xMaCwbvmVNqAS2UQ==,iv:8EqQ9pM4jrrhzyx/q8ndo6Wzby+xq+ChZKwsP+IfVTg=,tag:Nog8bBqw/5Q2FmdD47d2xg==,type:str]
sops:
age:
- recipient: age1u236u5mzkzj72y4mfxx68gfqw0u0j6tdgkudnm5pdfpe7apq4u6s89jr2h
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoM0tlNlhmVlFSU1NWS0Rq
- VnU4TUpZeGRHSlk2U25Rck5PRkhLRVZiZWlJCkJOalk2S213TjF5bytJSnplYTl2
- Z3Uvd3p2OFByZE10Y0N5YzNIbGd6ZGcKLS0tIGR1MUF4NzZZUHF4cGZQczZZM3lV
- c0sydGxNcmhZVHpzRG1iZmpKMnU1djgKW8SQAoJTlzwx4sRGQNE7usCyj3jRPjMb
- MgUSOoBjNMgekrkOp4AaIrvfhDowYfXZo4V+Y0Zi3WUaPI27+GWuxw==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0ekRwV0NJV1JFc1lVSzQ5
+ QVduYVRaVjRZVVdDL1JMZWpzR3FwVVVwWVZZCjdRQVZIcGpWYXBselQxWThya0NZ
+ TC9DdTYxdis3MTZBU1NJYnZhdkdRYWMKLS0tIDhZR3BjTEd4TEFaUlRXdi9QcVlh
+ MlRCbXJUakJueTVTa3VGR2pVaktMZWcKhsOXlkRM6Pr5S9LJt2yYdMJxtXQfvzV8
+ 2fYO1EBcsj94PqflpGxPSpBjLvvioiMdQ3tsSSIaaznWYPX5YIiQbg==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:22Z"
- mac: ENC[AES256_GCM,data:tEFry2RqRUQWYqcAV8XYqo4C8MIVtGkn6Q2cp42nwnx7u8Wo5LhZPb8hDXC4zW5r528e8nVdEAfB6l0qqoP2bB0TMuc0s+9zo1mv8fP01cgjFRWZt/ihPrkwrRqSzBlDuhycxZTf+ultWfW8zingK84E1QS6b8XmLOfoloMU5og=,iv:9ivGUUgwC5j5QBtiUA7Bmke+Rfceq8+iVSCUL3VVTeA=,tag:esOuudkUTFT2/F1KM6QwTg==,type:str]
+ lastmodified: "2026-08-26T10:28:31Z"
+ mac: ENC[AES256_GCM,data:KARZJRsC4DmzVjdZSonCACCQVOQ72sAYjzD6Wojap4EFjLE0CBQMb9ZguRE47aTO6b5X7s4ltNlYJ6LsAtCyDA3DdggYaRIwNjotzxc7LzRXykszTUgjqN5cSBgf30NLXH9h2PaU54vjRwhOedAOEHUTR/MoxlkKZ/ryoLAtJpk=,iv:qV29VID24dPRHVY+RxpZX2ecGaJTBjxujvAHfsb03Dg=,tag:ALEiuI7REJJa9qE0ZJ+9Kw==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/vaultwarden/secret.enc.yaml b/clusters/base/apps/vaultwarden/secret.enc.yaml
index b1e349b..a45d035 100644
--- a/clusters/base/apps/vaultwarden/secret.enc.yaml
+++ b/clusters/base/apps/vaultwarden/secret.enc.yaml
@@ -4,20 +4,20 @@ metadata:
name: vaultwarden-secrets
namespace: vaultwarden
stringData:
- #ENC[AES256_GCM,data:YvfbDywA5Aa1cLXRbpeMteEVaO2cKe6PfGE5YAhsCE19EL/krEbgySnBB/eVgwUB0x02FIoeHH5R,iv:Yo1Th9mhhWgg1lg3WGOmphaiAow7MQHUeLxLoFl+mS8=,tag:nrVJUc5MSH8LiyflRMezmw==,type:comment]
- ADMIN_TOKEN: ENC[AES256_GCM,data:8pnbjmLfPK/r+C2YLGrvv9cc917f3UZAlxiHVxWeC8vhsIrdZN54o1wH2rCpSMoCSgxQ00HOVmzFrp3axVDdsZq/spD1cI/+Mgyps6Th3iCRJ3hvAqXUt7kgPudn+cRaSEWnVuYr95jhXz2ZrzJjdCqhR+ysjg==,iv:MyGW8QqX7oGAYMmTq5egeT8AsVIfK2M+OJi1zXW1kP0=,tag:zSB4Tsw3Hexa9kMvkQw2HA==,type:str]
+ #ENC[AES256_GCM,data:4iLAaNssxEjpapC9wJr1DtKzE9tzV7rNp/dDbW92dEWaYflpbI7fDJaPGbnD5N7OGeAXaWtP2EJh,iv:i0GPZ/XWCdNJZt1Sy2RTn2OB3ufYLozxvmADBnyAgnc=,tag:2hAzue8wQ/MgoNcUMmINzA==,type:comment]
+ ADMIN_TOKEN: ENC[AES256_GCM,data:bVdm5vb0HTu2UwL8tvnNppZfuLgjd9H7sy1xP/So+yGzLfeX3a3vQogKqWKLRmja6XMYhvQfhNIXgykixrxKYuwdhoWgbCsaYoLr5JMovsd6s5AjC7klhR8ubdRQ4eh82CG5AkDf+cNnACSrsORpdSON87Kneg==,iv:MrCEkjdtUj3jRYpY7nip1OZlRroseleu7T5maSO5Plg=,tag:LqDwwtCKlIBufCeXjzo4cw==,type:str]
sops:
age:
- recipient: age109zta6l0cwpkxn5wek82kvauxn6yqrq80rsz4mvu5atdnpcn9pusuvnqk5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUdGFIcEE3Q3JJUGhBVmRZ
- d3RFOHFIZVM0bXFSVFpCUFl6c3ltZ2l4N1dFCndJczFDMTl2eTR6c0NNSE8zVGht
- SjRLSkhWdUhOMFpJcC9LdHpIRDBKdUUKLS0tIHJDR0ZYUmNhTEVxaVNHY0lLbzVy
- MG16OHZ4V09idmtKOUdGSHdDbzJvQmcKcfQ+5x7Kf4jizM8WnNhdvUMlO7uzHeL7
- N4e9iiHalv690x0D/s/nTUj1dnh+XSaNoMUkk1xHC0VVgAtwSkSEBg==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZcWc1U2cyekZyaFQ5UTRY
+ V2Jjam1STTgvcHlRMjg2bjlsQjV1eWlucUQ4CnR3dFFoT0l2MFY5QTc2TjhlbDg2
+ K0Z4MmVFdVE5alVvZzlYTnBObnNBU2cKLS0tIE9ZRS95T3ZEVUF5TVQ4MUVRSGxF
+ eStHK3oxcUdzazNnY1J5MkZtZTY4dUEKof+V/AJ7DCcdGHVo0kZsPwFd9X7sDtyo
+ Nrc0xlVH1+OwTXnta991CIyKFmssV637US6zdy2EkAH53po7hSdELg==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:23Z"
- mac: ENC[AES256_GCM,data:SGraFRZHyRjPt7vc/RMcnazm8S+McHIxtvpBP1uVk6BQA+etipOHvgQqHAoYPqaxedTyQYzKtFtE4UZ+H/VaWrUStzCCqXIPLDVFdwNmWZIik/PI405ZzP/qSQ6yXOGDsh4nGkroDfx8eEk+JozIUaI/FXn6rWdhSMx4oEqTZsc=,iv:JyIDk/CVZvZu7zRJp7aGks63QIOrDArYZkC8FSZRpQM=,tag:VWrj/mf7KaS5hgdvmg62tg==,type:str]
+ lastmodified: "2026-08-26T10:28:32Z"
+ mac: ENC[AES256_GCM,data:U8O7RfZ0yBQIWTsPaNILCVT4nhVfPRANAABZI+LCvHF4Nrf69LQCTPiaoXwAuNK02jEZwrT5LmkS6vfiEBotvsy9VvwmF4uwW/3WwxF9EnfMi6YdRJ1Yb1rRJKfPrHCFuPrd0odj0lBeKalOGyd+B4xzWMZpONzIQZpbwPBiDx8=,iv:k11/B5N3sPUbZfLesdeVLNHsUkdVXjLvzJ5jrXRqwps=,tag:XabU7gCEXzEE/6Uqm8PO4w==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/webdav/secret.enc.yaml b/clusters/base/apps/webdav/secret.enc.yaml
index b0f8285..0770e68 100644
--- a/clusters/base/apps/webdav/secret.enc.yaml
+++ b/clusters/base/apps/webdav/secret.enc.yaml
@@ -4,20 +4,20 @@ metadata:
name: webdav-secrets
namespace: webdav
stringData:
- WEBDAV_USERNAME: ENC[AES256_GCM,data:ZFnNYuY=,iv:x9PbhOg6ndMLaFCrN3EWPEtAP0F7XW6ehQxZjXDI5mQ=,tag:kxVec9N2C910uufvEmWAEQ==,type:str]
- WEBDAV_PASSWORD: ENC[AES256_GCM,data:ErL7fy4BPWeFnKJXtaFBkEeCUR1pOeRwrAcvp0frChVyhI4KYiXQSIH7OV/3NOF+,iv:V/e/c2gSKqy8+dfGFRVNNX3AJniydhytzQpY+vCeHlY=,tag:ACHUROM23yb9EF3a45A5wA==,type:str]
+ WEBDAV_USERNAME: ENC[AES256_GCM,data:nZdShvc=,iv:N9d/RLw7/LIA4KQPgnE3+/8oSeXP+U+7flrr6bRtkpk=,tag:ck/SX0JE2MlsbbppjKGAuw==,type:str]
+ WEBDAV_PASSWORD: ENC[AES256_GCM,data:bKj44og7bLk4J1nOk+NYJozcRrCIO8oLC2YDKiuIOp+/mP1hzociGkXiw5XMSsck,iv:pflTHT61DL8llQa6BVRjjvK2O+sXtjWVX0l6uDpkX3o=,tag:BfYjYK9VsqihrNo4VECHcw==,type:str]
sops:
age:
- recipient: age1y8t9v56yuvskznddqfsd4yddzzch0yf2dutvvt8rrx6rjh5f9g0s3qeays
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4b2g5NzVDT3FOYUlXK0di
- TndpZE1YS3BaLzUzSVhYaVVXUndEcXNPbW1RCis1ZmQ2bWFtMlRGejRlSkRvakdn
- RTVHVHM3NlNmVkFBbEpLNS9ZblMwRDQKLS0tIFZ0eE5kTExIYmVaZk5WMHFJUnZW
- b1J3Y21zVDV1R1lMbnoyWmxKM210azAK3FkhKAiIa1ZJcKTmCvf+ssF1wIrMYrlT
- 7GIP8x+82CsUV9daAemqIUZQwJqszPOb+Cc81bUfKrAZFaPjvPB5VA==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZMEY5MlBsSTFRdlFCZ3dy
+ L2J2c0FqL3lmS045U2J5VGRnb3pPdWpLa1NnCmpjWFdqaVEwblovaHFEb3ZhMDlw
+ TXc1TnZabjBIZFkwVkxYelFCbUQ1d28KLS0tIG1ENEZqQ21qaGhMZWhiL1JrWnFh
+ TjExckwrTW4rV1NkQndNeUF2WWJZcFEKaOpXhoR5e20zWvACdNGfIJxusZ+AC+Nn
+ KnG6v8sQl34aylw+TeTR3ibmTupToyZoX6mVUXBdLDCzB8CT+hxehA==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:23Z"
- mac: ENC[AES256_GCM,data:3ZYQBa5suwDiDfgnuy9FvmA7iKxcjX7pR03m88iT/uqKMLk0QpjgLHz4vs+CxWUQ2SljCMSHpsz4kgCplP0aVKVlDmBAwplkY6CZfjkujrAV2Unw76QiAM9nrA710rf9FSIHeUVcbh9Y3KsdwWNb0D83Q309HxTUy/TphrpXBUQ=,iv:wY0iBlNTcvZRPCIXHfsQojW5bXWjYvvyK8sB8Z4RW4E=,tag:bbf6F/PDm/+zlrlhlLvQqw==,type:str]
+ lastmodified: "2026-08-26T10:28:32Z"
+ mac: ENC[AES256_GCM,data:SfFGemzruM6xmH22/TPV93JjIbZmgVopRh/6gQPlpZ6PxksKEzFXBU3VwIAYigr1xNmSInGB67+DCWMWZ9eDWnG0cb9kxdGEd7wH5lPAJp7Lpkibnv3bT9qxE7vOZkdJbe+9OF6a/x3xbMeaszYXzEVq3X0LeEoIYNFvDssJGBM=,iv:owir/2ULkuVr6CeKTS02UMvpIAFR2hVE8WpefRpyRck=,tag:MuA4NzXTsx5wsNA9v+a5Nw==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/apps/zigbee2mqtt/secret.enc.yaml b/clusters/base/apps/zigbee2mqtt/secret.enc.yaml
index e7db58a..897ac6d 100644
--- a/clusters/base/apps/zigbee2mqtt/secret.enc.yaml
+++ b/clusters/base/apps/zigbee2mqtt/secret.enc.yaml
@@ -4,19 +4,19 @@ metadata:
name: zigbee2mqtt-secrets
namespace: zigbee2mqtt
stringData:
- secret.yaml: ENC[AES256_GCM,data:mkmuzF2YPaYSStkApWN43mO1t2eb7S4b2Xh9gvrq6ngEgDz85QzUr+V3IlEzDjBQyDtJ5RVG9eMdNHoH051frXqOJIRdSEQaSuV1NyxZiyHZLE3cJwJ85bFDotWbjg7MLqupkT4l1RZG4NRtizlZ4nS/5yvobN2ss23abi4=,iv:qqgvMqGgUxNwiDq9jbakFCguxciJcnR4uF5CyXwcEVM=,tag:jjn5iKOIUQNoEatu4JLWpw==,type:str]
+ secret.yaml: ENC[AES256_GCM,data:zD2kJfWkXrirqZ2hbKBg/b/IT+d57OKvLlHTrU9Qf1FIbAA6WQMSczMehyjPVKhwB16haR2hm/cAmGSnLxbu9rh/0F2lI2XcIpBIuhoxExC45q7o7Ew1OOVmtp7jm12ON3O0U8TPd4AdhugX/yzU5JmLsU1zOdnGx6YPNuQ=,iv:VnSZSqDJxNQ2KRV3Vbu+X+pg7CePRj0dUDrJSiUIFqA=,tag:BIPm2MKSYaGcW9WLyW0+fw==,type:str]
sops:
age:
- recipient: age1tu4xgfefvgdda0vn2thaqndq4p9tuydq2ud6qa98tzzgnff6749qnlcx29
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHYXdSZFc0Yko1NnpKb3Bn
- N3F1Z3lzVXpZUXFHZVhsdU40N3cyakVmaXo4CnA1N3J1VWlldnlNK3g5TzhCYi9G
- c05ldW5sYVVEWnkyU2V5MGtJRkZCUVUKLS0tIENPM002YmxUNnlNVTlMRC92cy90
- dGdEWGNaQ2pBdmlpcjB5T2ZCNTV2K0kKghkNGGCiTWIq3t49sX60xZS+TdSmxPFr
- pfy9B0MiS5+gKf4zoRZQAtNgaJ0NgIifybu4s3qlXqoVawjGBUQZhQ==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBROWhvZFBHZUZLUlJ0MmhL
+ dnUrNmYzcTJWM1RHc2NYY2sxVUdxZkduSUdjCnRYcGpCT1NTUUQ2K3kwSUxDVW1l
+ azVpWjNxNE8vRGpUdXdQR0VSMnlXZkkKLS0tIGczaWhxSmhXVVN0YWpTYTRieXlr
+ WWFyOXEyNzh6aVlXT25maG83SVNrdUUKAdPPCm0nTIo5WIEKzsAzNoxK1LfpdSQd
+ r63l6csfbkWl079xm3ZVq1UV+jfEX4mRn6EsYMH/i+tVgjQc0g0BKQ==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:24Z"
- mac: ENC[AES256_GCM,data:jIiC9Qymv7q4KJD9O6c+Dc1sgtHH1kIwuYvOjnWE0GKG8qQXdsLl5TB6NR0MuahILUzpR5Q9og5YUnaKKFH8OisAuH2N1d5UtL9gRFiK5nw/Z5uRNoY+0FRPwKCP3YV4Ha+n22wi3+oP8PYKbXhy7quma/czeQpvH+J2b1HXD6o=,iv:TxdKfWV7LJzqQ5nN0fEefakDGnVycqnX9foLpE1j+ao=,tag:H9ZUYU1PYeFvLULfjTXKYg==,type:str]
+ lastmodified: "2026-08-26T10:28:33Z"
+ mac: ENC[AES256_GCM,data:2G2hyItyAKvYxOn5m3rgNRzXsn/Gmrhj/xLiCz2cl88E59rnlujUlgi1kKMFv7QyXK9dQtr78EIQGdSmC+jItoJlC9zNMGD5AtDaij7CwdUo75zPy1Y8LKo9K1Xua9gfS2vCHbBCI8cwGVwE5TfIfE2lB04zjVLaTPbp5UgqjfY=,iv:bl13cjoDhSloNebCTTPZ7Pw37bKbLuFDcMmQh0LJndM=,tag:BkXXAMd6ySxRXvZZIaNzNw==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/infra/longhorn/longhorn-system/secret.enc.yaml b/clusters/base/infra/longhorn/longhorn-system/secret.enc.yaml
index e90000a..8f7966e 100644
--- a/clusters/base/infra/longhorn/longhorn-system/secret.enc.yaml
+++ b/clusters/base/infra/longhorn/longhorn-system/secret.enc.yaml
@@ -4,21 +4,21 @@ metadata:
name: longhorn-backup-target-secret
namespace: longhorn-system
stringData:
- AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:KZjYtMyYW5XSZO12M2nEMxAVWFY=,iv:QmwPDhZfZJ3OOD4x/l3Y9HSAfzVZkt8+uhOwb3tQaxk=,tag:lfVlUSPAu8T96lglOlukjg==,type:str]
- AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:uJfUztmrDbms/lfzaz2uGkdVyT1abC2EqQtJEgbCaWc92jUg2stzbQ==,iv:OdU+RMXNDPMxtD9wIoVmlGz9fmPI9pc9dT763Yn7KJM=,tag:hbVcDdIAaXSKHZZFa3kTFA==,type:str]
- AWS_ENDPOINTS: ENC[AES256_GCM,data:zX95c4IG0oazd9O5XUDCfdIjzqCUxI6SbVCOJrM1bNz3rqab/YHbfqPojRWtVSludcBteN3Sqdlb4QKsnQ==,iv:q5Ber3jzCwMXe+UUOfyG6cnS0U33rUuoQT2xm3NP+p4=,tag:sAKnicaihC9NmuzHT2ahTA==,type:str]
+ AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:+BQQLrwxJgIXEVj6XSZofMirIRY=,iv:aR5z0STuo0tVQdw3LWJ5ZQWlztRqc85OlWplEQgjyEk=,tag:EhItdTZLzwzXL3V5hJLvNA==,type:str]
+ AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:yeSP7adfBHA7fh+knB2CPKUTJMmdSv0yHaLwcYCz0W6lUX4lgRYW2g==,iv:d8Fl4/jZYDdmfmXBZP0Uft4Wt9PJCLEed3DYuOcM96M=,tag:Z1oWUn55gKViexmW6YcPTQ==,type:str]
+ AWS_ENDPOINTS: ENC[AES256_GCM,data:27yF4AQMqa+NIY0VjGHCoPXV5VinvywFTHzN6O4caOcbGevYHB3aCoX+XvNAFSycd7pewmBd3MD8VB8Z4A==,iv:rgxaOeOC+hSpXhf+5jIiYrBbDiSx+K5zdA5LJUp63EY=,tag:G+Tf0zYUxVj/4VJulGexVg==,type:str]
sops:
age:
- recipient: age18hhmdmupj90zjgjpxk3z5cf3lx36hcznnmqsp0fpyg50823pudrqjupydt
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDV0F4eU5qR3ZOQktRN1lG
- T0kxbUhKbDBZMFhmVjZRN0FZK3dmbkRvMFRJCjFFZkNnY1ZrNm43OG5hQm9XMU5v
- TWVOMkJ1eW1FRUpwN1ZNQ2Y0aFFOY2cKLS0tIEROc1lQanJmV2o3MjFodldnNjhL
- a2p1WmIvbFhITGs3bUgvN3pVVEZyTDAK5Yzuxw0faQmOnJpVUq4ZHVxSBa2f08KC
- 0LQ7aR3W5b+Ug7tm3dBDW8XebDBXps6Kop7QOMmq7Fdsn8y0Cx6cdA==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtaFRuV2ltTVcyY1gyTkhp
+ RnhyZ3YwUmhnVlQ2MlFwRkRYbERFRVpKbVFJCkdqY2ZQZmRpZk4ybVpkVGFCWDhj
+ UWxSK3RzSS90S3N6cHNhTjNMaHN4WG8KLS0tIFNCUWE3VHhNMC90QmNJM2p6azVM
+ ZTVvRFZtTEY0OFZPTVEraytvTDJITWMKkO3k936r4ewmQAS7aRTfSlK99aJqgLjF
+ gPa8k8X9euxkWsz4jW+1hVFGmQbue1eRvj4QgBT6/p8IATb4Jfnzaw==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:25Z"
- mac: ENC[AES256_GCM,data:2m3ORY0xkaHAeJFj66Hzgn1UJH2BAsQcuYeyae8Yn9q9qYPh9fQiudERJGU4q+FJq2IkJg7JR9anS95X+9RmpePRqiq5MgMmuJJ//vW+8Is4kuJoslC1nl435eGLD1ExTY5SffxZgdveZIGUAhTaQdcw8ndwrfzCKBrfqkVPv7M=,iv:ti7PqZKDlviOc0g3XyqoSzLTfwhxTw2F20MHmDeTpkA=,tag:M9oqkkYd9/CUTPEHhrCSaA==,type:str]
+ lastmodified: "2026-08-26T10:28:34Z"
+ mac: ENC[AES256_GCM,data:/FAZZ7T48tTxIovjvcVxOxNatPBuPiyRO19sBsXhsyEn4pu9M7rHdhgmoBldlg9rKI5RP/kntkQoKtQzjLDSEZVUWEHXQ8UIbMLdfFw8ifItxayILy7K1TMPekJp0jfalorzii7oqBnc9dlJXePG+cD1LQVPEMHhvzcj/f8NS2U=,iv:6owWcyi1V33MHAGeOKSWRKxvtV/Cvd52CNL0cWcFVCs=,tag:q0hxLoA9ZghpXeqWcHoFVg==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0
diff --git a/clusters/base/infra/longhorn/s3-backup-proxy/secret.enc.yaml b/clusters/base/infra/longhorn/s3-backup-proxy/secret.enc.yaml
index 8767cb5..bfc8fad 100644
--- a/clusters/base/infra/longhorn/s3-backup-proxy/secret.enc.yaml
+++ b/clusters/base/infra/longhorn/s3-backup-proxy/secret.enc.yaml
@@ -4,24 +4,24 @@ metadata:
name: s3-backup-proxy-secrets
namespace: longhorn-system
stringData:
- WASABI_ACCESS_KEY_ID: ENC[AES256_GCM,data:T766XOffaChopf+eTZ9cISONv9w=,iv:fCMWcPaKFxzJ+pjyU+JnnCbtBSsftDksWq9SPDcz6IU=,tag:xVheoyt6cXoj8PTZJFo2qA==,type:str]
- WASABI_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:v5W8rP2OHhQmedLnhyAGPFPtS/NxJBhTROYLwsdVl6lgcSiuI1CgoA==,iv:2JfkG+L+tisEGYfnw9varTnuCZeNdTeyZ1iVgljhOBQ=,tag:TilTJ+UuQ0FW8F69beyLgw==,type:str]
- CRYPT_PASSWORD: ENC[AES256_GCM,data:t1wr7hIZD4rUXdRWe71pAQcFnmTvwEdI/KFxjtP9URdAzm7dZdsF3rJPiw==,iv:16ScaJJVGN9kOHxLDZ4BxSUGRbgHHsS/2fhiap7CJg4=,tag:omZRoHWSkcl/29+NhkPh5A==,type:str]
- CRYPT_PASSWORD2: ENC[AES256_GCM,data:JqR0MmxQV7vtFTUVrfyntKINdbaMXw7nK5SQP6a/lQgOxDMqgJamfSM07Q==,iv:jD+lpex4Y1XfqzXKn/pQFqGthAYgMs4K09ByE6Y6A48=,tag:dj+a7Ue+qPjVHZ62Xxsg4Q==,type:str]
- PROXY_ACCESS_KEY: ENC[AES256_GCM,data:5e2zXYWBdtzKmTIZLYHH3C8zzXo=,iv:hxyuVAMuzR2+HjGyUM+zO2OahgfNkwOSYGnyrBlfrys=,tag:PQjB+s8f33afne1I5uUL3g==,type:str]
- PROXY_SECRET_KEY: ENC[AES256_GCM,data:sXrDfcA7muaD+4IQED6iVv00BIBcyo3SuScQyIcwgpyd7ptEx6SyWw==,iv:Mz4jpTRGNlSHmyZ+x5cFOv1OtCs1iU+9Xd7DNBwQpb8=,tag:wqVoIcK2g4o/29PGTsZXHA==,type:str]
+ WASABI_ACCESS_KEY_ID: ENC[AES256_GCM,data:IGkZMeXKi08HLTnW6eJrdQgp+KE=,iv:xYhv4oIEbUOX1JByHkqHnbNL6PMz3ARTWRg7pHS/UD0=,tag:NfKW7ubjVAyVr7JdprM4tw==,type:str]
+ WASABI_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:Ch6HFGzOuX46Ilxr4ewV0gSRXxABbFR3LsQlITmflNluPYzkTkr/gw==,iv:hITaX8ch5N7Uyoq/FrjJ6edk6MsN55jCgEQu9mfv2aE=,tag:C9ZMVmcN7Fk2TN9AKQmprA==,type:str]
+ CRYPT_PASSWORD: ENC[AES256_GCM,data:Gcii8QqKa9BysiCa6ZkgcLC5WTcCZrAgu7P79WlTZyEWa5y7Y9saESHALQ==,iv:+/MXrVhqxMthl9PoCJS6v1TWr8yFdsukGFwnc57hG3s=,tag:tTsEP5VF3inPK2PgDELztA==,type:str]
+ CRYPT_PASSWORD2: ENC[AES256_GCM,data:XJG3q7nDAWJ35+AlSn92AMCgaj2S5kV10Fu618t0ssi7B9ofavNTGXb6eA==,iv:8YxmGdpkh5old4HFVFT4BD4yDFFcs+aW1s2le/1BXz0=,tag:oSLoa9KnEizW1QakA9uJgg==,type:str]
+ PROXY_ACCESS_KEY: ENC[AES256_GCM,data:UoUdnb1eW1guaXRHHPUjXWj8r88=,iv:LYETftuDZSflZUhtuNBRbwrDDUD83jIIisz8TZbWdJk=,tag:KMyIy4QIv7AMOpw3NbWXmQ==,type:str]
+ PROXY_SECRET_KEY: ENC[AES256_GCM,data:0VAzeJOwWEshqrQi9gISOKdM29gMAd8dsRPc9c+WTFt2Id+59tO5Mg==,iv:ZVSCRmKKG5wAKdPrHId8VwfcDj34HbQlO5IPyOAQrd8=,tag:piC06vgROa0wzLc2zoVc2Q==,type:str]
sops:
age:
- recipient: age15vc3geq4lsec69rnxczluvwgcexeqae02zxzjpswsuatthaasu7qzath48
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSSWRTbEdkaTR6RkpnL0Ry
- QlZzQmhKa0Flb1VlK3FqU1c4MFBkY1ZiSFcwCjdzOG1xc3JWZ1k0WHZ1cEo0ZnNY
- U0x5UjFnT0N4QUs3UzV1NG1CbXRja3cKLS0tIGY0Y1ByMTlENkdFRkRkNjZUK1V3
- aEEzbWhIMVdTVUtKRmlvZVR3dHRSKzgKU5HeZCIhWiRSSJk1egqrs8hH4F3eAaX7
- feym08J2r9l9rSF6m7UGSUWrrlSchqvSQ7ByZdEDdNmFaySoBoscmA==
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWOXZJSmtYWHRWUnBJZGVU
+ dnlsdkZGNk5GNG13Ly9FUFJ0cXZMdXhRNUg4CkN6TWNLN0dybGxqZTR2K09ZRWls
+ ZWFYVmVCSllHUENBcnMrR01KY3JDSjQKLS0tIEkzZVlUWEhUSFArb1JxSHl5Q0tw
+ UVhBY2NiUlBnTEEyRE9LSHVGZ3k2QkkKCcOvQ7vZLqW88Gj+9OoRuWXFQuRWtnIB
+ aEdsOUnZOda/at6UIxLe3XuBj+vewhS2P0bOpJ6ZeuvQ2AhSlOT60g==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2026-08-26T10:28:26Z"
- mac: ENC[AES256_GCM,data:+sZHer0s5XLsrIM8/Qkq8ucP1d7HF+X3AAnzmmnhvZ45lcuW6kCwAJVAF/nCTjNbHaUpwOmsxwMZ5CkAKN6ASmvLnWu0AOta5HmZgW2scl6KU3V2Ehzj7UbPHipcg+UbeHudjjESMYTdwWfnCJughc7U+IEcJNVZzTCpsnk/d8o=,iv:eFfxDxOVUV2OJg0eibQ67mgMHZ8eUcO8UboxmCcNcQ4=,tag:PYiTO77DHjvgBlxvELxQ2w==,type:str]
+ lastmodified: "2026-08-26T10:28:35Z"
+ mac: ENC[AES256_GCM,data:7Q3lr8efEFlnA89RBeAmRpq+VX/T55Fu/6NJMs3BZC/8TYCNSvMshd+lbKU8vyuWLnE0N0NA7Hnxf4ykvknMETrPDeOMnS250S/9dknp0oTE6VrIN0HJMq8xBKyFh8Y0k8kRkZoICTM6t3kFXRsOG7M0CKN9s60bhVw5K77A0zA=,iv:fanKdbFdVEZrf32Lx2FOVwL/nPEbVh4kicoVcjxP90U=,tag:Rj/zYd/dKTQQRBDdR6rPqw==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.11.0