Skip to content

Commit 898c6ba

Browse files
committed
Cleanup bucket path handling
1 parent d4ad417 commit 898c6ba

5 files changed

Lines changed: 46 additions & 48 deletions

File tree

.env.dev.enc

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
#ENC[AES256_GCM,data:nBnqiVL2QIlj,iv:A83Lcf9b5t9gyj2UYI0VPHip8gls9kKc4JiH++DCZeE=,tag:mThqKjGXme0AjoLSbWMicQ==,type:comment]
2-
DATABASE_URL=ENC[AES256_GCM,data:ZuhS7grMiZ8JaSbPOXdj0nmwzq3/MtFaLvffHkGjUQXyGIH+ZxFjqyNxKeTDhMMLO8W3gLY=,iv:TkVYJFWyNgs/tHL/+hmP7SENbXBGEXQbZEHztZAksog=,tag:rkTUbvHHBJa5UnH2jJGWcg==,type:str]
3-
SESSION_SECRET=ENC[AES256_GCM,data:nNUQ9y6J/836uhJduDfQ0s04vLA=,iv:a5M3x534WMma61VP20hdXW+GlkGdYGDnlzqu8DQPwo4=,tag:vYhvohMGdvpcXJ5I945pSg==,type:str]
4-
APP_PORT=ENC[AES256_GCM,data:y5zZPQ==,iv:1mXb467uI85TXz6RAa0hDQBVsvJQJi/spRq99uNCeG8=,tag:IeBCe8JC8T4s4xseZO2agw==,type:str]
5-
API_PORT=ENC[AES256_GCM,data:UR7xnQ==,iv:Jlzzvc2HdgGA8YrWt5UlgmKWUWEvPLGxNpQnGcmpcig=,tag:OnCpSVbEZ1mwJJPfGtDyTw==,type:str]
6-
#ENC[AES256_GCM,data:GsBO,iv:oinzA2NVQ3pGUP/PWmcw5GNcZSFMQUfYT7feIeq/DRM=,tag:scsv22UXuXDs1iwkDCTE9A==,type:comment]
7-
S3_BUCKET=ENC[AES256_GCM,data:3cz9SDtRdQeWlzQWSDOF,iv:eiCU7sKWkSSt/Dz0AgMdAwZIECFfMuq2n65RFwbSwc8=,tag:gawcT1t7atVwMtF0AuaqVA==,type:str]
8-
S3_ENDPOINT=ENC[AES256_GCM,data:z0IbMOXrfUTs/L00YdYo63y9shSxidJ3tTt8QBzu3Q9au/Q5S309cUSiG4cGYwAR2Yun2eMy2y+n,iv:bBn8O83WxM7fDbACQL3zyOMT57fy9pxFzdZi1rIuwvA=,tag:iOQ6qtllduzr8XkmKlUWDA==,type:str]
9-
S3_ACCESS_KEY=ENC[AES256_GCM,data:dUWrepOsuM72A7gvLnXZaREqIzx2WXVNVZ9FLTfHzVw=,iv:jkP4S7wETC/WspMvfcaBTf48pQkrWcPB5XfHfec3eYk=,tag:LK1cy7TDh9bCrCuUpkDprw==,type:str]
10-
S3_SECRET_KEY=ENC[AES256_GCM,data:cyyWW8SsH1yztj2+OIsfWWftyDBFByzObXkaVgMRXmGkZyrOfIxzDssHN3LD9SA+JrAw05NFAGw48Mrz7fON9A==,iv:EregjryBQEA6jfgkyQvf61PtzCxEBhQv/Kybnwm1wJM=,tag:Q866+O0hVK1kQYnoeA3PXg==,type:str]
11-
#ENC[AES256_GCM,data:KtDqTaiGYQ==,iv:l07389/xe+es4PbG4j/lx7unmAyJeQZdKMUM15pRHYc=,tag:HQyPIH0settg7+U+e4NqlQ==,type:comment]
12-
BACKUP_S3_PREFIX=ENC[AES256_GCM,data:y9HrurDJGVp0,iv:0UFSdJmv2O6O6SvoXrfeYMzWgx56m6XXRD0gS6lTDNQ=,tag:ERHeQZM1GHb8uZrfLBvBvg==,type:str]
13-
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBScTk3ckdGOTZjMjFqcm9m\nRFlKeEtTMXd6ZVQvZWZHNDZzTEU2TWYxa2pRCjZKLzNFeTFIb25sSGwzQTRISVdK\neS9Ga3pac2ovaUt4ZElIUGl6Wk1takEKLS0tIExlV0xud3lSZGNuT2hJQjFZYWFV\nNUt6QXRnb1Z6cWFFdk9hcU0wRmZ2TlUKgDoIw89Jw8BzOKpjg80qLgHka6a6xPpA\nynDzCi1Ze6nnCIQ4lu/U8iBo4q6ioCil71d+oJscbR4fJJjKsVDvjA==\n-----END AGE ENCRYPTED FILE-----\n
1+
#ENC[AES256_GCM,data:Xcj6g3VG+6YQ,iv:nXgQ7btIUzLXBkWuS6X/en4+JeKBnVgvQeJop6napQg=,tag:YT7gRbRF3ELmnDMNK/pSpg==,type:comment]
2+
DATABASE_URL=ENC[AES256_GCM,data:ej1YqcjKWJBFZx48+HnYBAGer25Gcb2+ph9CnCaFMXEIV9CPd15GWN3waX/HLjB7O3H0kU0=,iv:vFJwkcP0Wo4aMyRZDlgfpeoUK7FLSb0XNcB8veDSes8=,tag:/d523qC1b1wGohxnRBlS5Q==,type:str]
3+
SESSION_SECRET=ENC[AES256_GCM,data:sucZuN7TAab1ZL5UisklCNaY1Os=,iv:EnvqoKQO9pYOvlCrJCliSTXrHZu5X5q8gk5EhH2WnQY=,tag:fkSYTf7z2X6/ESlELXsILQ==,type:str]
4+
APP_PORT=ENC[AES256_GCM,data:mZVnRQ==,iv:uxSw1hauy7j7x0BpS7cAC15qmfeBCHrWTS6xsnwrlJo=,tag:vVgtTxfpgHLMcN3KBPrl0g==,type:str]
5+
API_PORT=ENC[AES256_GCM,data:BI6hTQ==,iv:F9d65N5z2ftMAXvrTj8kSJoeI4zgZyEuNabTkMQ8gFE=,tag:VLBS6jJImAi94VpFnjYlQg==,type:str]
6+
#ENC[AES256_GCM,data:iSPA,iv:cFeXycqh/oIjxyU7IfBOURz8AeVKrZeG8XFHvmMEwrs=,tag:+GRDjmOoh7tRETkouSgwsw==,type:comment]
7+
S3_BUCKET=ENC[AES256_GCM,data:7pOJPumVV2Kb1Rbo0/N9,iv:kELJKdwpogFih8RJyTyE5+BzvbbEDoGbC6xeEyht0CY=,tag:y60BXHkVe6qKm8HX7drGHQ==,type:str]
8+
S3_ENDPOINT=ENC[AES256_GCM,data:TPNVaDlSScOoGHQYtio59oYk+kVqsY2S8U5Tinofcl10b1YeAtX/mAYxR/8OixlNlTmrxjTQZ9Hq,iv:v1GM6clrnoyRjvh+C4fqVg8BvYHYxhdZm0x44ZmTKBo=,tag:Qi8u33ffkQuqBTMny6uMig==,type:str]
9+
S3_ACCESS_KEY=ENC[AES256_GCM,data:kYq6gS8XrqsMgYlC2OtBD9Fsyy7wuQmoT+MNUtxiwDM=,iv:j0Z2LpNwhxPlaXwGp2Wm2BwAOWg3qo1tPzYqA03fRY4=,tag:umRnbp4W6b/bF3jgGylJnw==,type:str]
10+
S3_SECRET_KEY=ENC[AES256_GCM,data:jHWhFqZKbrx5GmRgaucZHcH+b4IYVvRk8IxJtVUMMocf6bqOQ2U6R3OCu49Q6V31Ouktu5rkVybHiFmQjzhIOg==,iv:gEDnCOFtYhVRZkeyZZnV27k5XOTQqQCDFo5oy97qPAY=,tag:40LuWrl04zGMKCKxU/SxvQ==,type:str]
11+
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJRGY4VnpKc25UdWZFNnhU\nQTM1aVB3L1VqOTJqcmVaaDBySEFvT1pjbVJnClJBUDhzQTl6dHJFTlY1ZzVPS09j\ncGJZQU9mSTROTlNZS1lnZGNYUjB4ZVUKLS0tIGV0R2JnNUJjMDZ4eXVkNnV1Y0VO\nMXQxelNZd2xKMEdTb0IyQ3o1WVZTYW8K3Lssj2qct+TDWWasT7iERzM8SURQii9D\nZilFUmm5BvQdEXwOwwv3aL2BGMWdSdSJAdNo5N+o/jNz/qAWfBEatw==\n-----END AGE ENCRYPTED FILE-----\n
1412
sops_age__list_0__map_recipient=age1wravpjmed26772xfjhawmnsnc4933htapg6y5xseqml0jdv8z9hqemzhcr
15-
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMNnk0RFJCSVUwb0hsUTdI\nR2s5UWNETEpLQmQwNWsreWl6eW9mVUZIMmp3Cis1VnJjdWNkUVFWaVBQNFlWMXIv\nUHVDVWpXNjFmT0c0MjVlU2VVNDJCSFUKLS0tIEpxOWMzNXZNcE41d3d6UjdTTmpa\nL2RpMmd1QzlwOSs4OWRLNE5FK0hMN0EK1c6d7kQLEXj1xSnkNlbY3wN1uAo5RVaI\n407usP69/lbUpdBJOdaKQJX/64oNpeP8HeUtjnOn4R0fj0v2RX0fZw==\n-----END AGE ENCRYPTED FILE-----\n
13+
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkRWEvZERYeFVXRWE4eGNh\nQkdrTWMvSU9FNnozSjlqRjBIVFVWbUF5aEI4CjhGOUVqZ283bjc0dWMyTDdFRmJR\nbThBcWtMMENZUUN2NmZwRXpqYlZqVHMKLS0tIEpWL0l5YWNHKytvQk1FUm1LQ2pP\nSW9JTTlFRXhCUVFaVVpKVUNTaUsvQ3cK9iWN7g83qnzc33gvA8NKTa97yLbFX1A6\n7hJ3+UeDckS9RKYKpLNGwamDHY0z/LjjCz4cVuLLLTfhiOjwIQwpVQ==\n-----END AGE ENCRYPTED FILE-----\n
1614
sops_age__list_1__map_recipient=age1ysddqggsx3h8zkv7xn3z26sjak5pqms6pyqhnky9ukrvpk7es5jsayz8w7
17-
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwZkNBSTBvRDQrTXhiRHNE\nRGt6cWRkZFZlTEtFcHIxd1p6MWFOQWF0N1ZjCjFHUTNIeG9Fayt3TFRuZXJQamxX\nVXFFd1djdTNubmhrdjgrdVlSNERnckEKLS0tIGRCYWxEZVIyVmpxK2FBd0RGTHdC\nZm5aYXlRNDVyKzNHSElxQ3piVkVnbVUKr9PJDaAGD+NSgsh0f3g5CBls2xzJe2am\nSGMWH2Bpa7jKRqSna+h7eVF14cob/i6v2IJq3ZMA1Rc4HoPfH/o6pA==\n-----END AGE ENCRYPTED FILE-----\n
15+
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwYjdOYXJmSDZXRU1GbEFT\ncGFXSnNEU2I0WnBHZVFiRGtDdWU1VWlYVkM0Ci9wSGE1RjRtR0h6Z3BzNEJuN2do\nT01ObGFZS1hzWUFYd3RoaXQxMmdCeUUKLS0tIGRwOU1mRThTSEdiL21ENFdLS3NE\nMzF1bG1pUGR3NjhEVUpYRFN0eW83TG8KtTKtUvdFWAGiHa9Ztb5Pm202j26tsIzP\nYJGu7ubPkU6ei3lhYR0/YKf2KBgoVIhujfzjgojcef9v9sLg76wUrw==\n-----END AGE ENCRYPTED FILE-----\n
1816
sops_age__list_2__map_recipient=age1pgxk292zq30wafwg03gge7hu5dlu3h7yfldp2y8kqekfaljjky7s752uwy
19-
sops_age__list_3__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxQmZGNzVzL2pWNzlocTEz\nM1RraVZ5bnFJcXM2aDZjSlJxVjlxQ29ZL1R3Cm8rc3ZxUEVxb3duQnM2U2RlWTdM\nRlVQRlAyWEFsdFBZNEpNemJ3ZUlCRzgKLS0tIHlROThFeHNhdGxJSncxWVVsUzdj\nZUlHTjAyb0dNcFBSdlVPVDRiMXRlNzgK5LCaaqnqkz1UQ9t4CQelo/9H8mtAFmvu\nd2d+sCtF894lccF/L3LUY1iEKJv0d/CdecT5HMqy65YPn4QFbXRlrA==\n-----END AGE ENCRYPTED FILE-----\n
17+
sops_age__list_3__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvSlF5SVNFeCs4R1NQM3hn\nWkp5UzhoYk9YQjNOekFrMXQxcU1yN0JIeVFFCnpuQnJCYkJ3Z3FmMGJXakVrYlBX\nT3g2TE8yVE1hUHRSd3BFSzJBZjU3OUEKLS0tIEVEbE1hLzJ4cE1jNnIrSS83N1pK\nOFZ1NUMyaXA2U2ZOSjVJSlN3WmNlQU0KRGRy2w2a9SzmjmaLCJ3ygxLHlF3Br+5l\ncsnomaWqTS1RHb47VG3QDIpf8Y28JvAD0sE5J0n22LyrBK9sNmIMHg==\n-----END AGE ENCRYPTED FILE-----\n
2018
sops_age__list_3__map_recipient=age1qn0x93jhqjpqwvx5tgxnrwq5e3vuzur9whrkdnrvapd58esm45rqfkuxqh
21-
sops_lastmodified=2026-04-30T15:13:24Z
22-
sops_mac=ENC[AES256_GCM,data:ZYCekOUTEEHFSOI3z/5GCo9ERWqgY7TxgoJskZObcHxCQap8CNATQ7+lrjGe5NAr5hVezEP4d11e5waMSy/Ss/HytSyOmTLGnfkQJlt2sOan35CuM53MS+h12WBECuAFfcN2vtQkUOBv4Bm3xK7B4aLIwyEQrzkhyAq626xc+g8=,iv:3B26DkkQ0GmwBf0toLsVm+XqvfLrqv0kC1nxOWzOB+s=,tag:PcjvDTqZ25CMAr9O1si0Tw==,type:str]
19+
sops_lastmodified=2026-04-30T15:41:52Z
20+
sops_mac=ENC[AES256_GCM,data:KxOuFsZfiSby9M9vbPf5/iBxlJOWfduyrGX7l8UgJsg1I6iqTPv1Z2UZnIrqhtcjWqIYGQLOs5M/T+agjtSJgWvsJRCcdYwZIpP7XA+ur3j1iHt16rHzwXyObPvsVQK/4NfD1AFffjpdEYQAr9nJPYEKNnP65Mhy/OioK2JFWBg=,iv:1eH+BHXgvL0+bqylGCQAifr286rKEyo6pWRGmN+RmAA=,tag:IuHG4oDGJsmgAv2G8AXhIA==,type:str]
2321
sops_unencrypted_suffix=_unencrypted
2422
sops_version=3.11.0

.env.enc

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
#ENC[AES256_GCM,data:vf8HCSxdhMtN,iv:XCLJyJv15JYrmb5jM5G4kYOt4hL9/hJNhmT96zNX0lw=,tag:HkgyhGmZ2JSgi+ahcwn3ag==,type:comment]
2-
DATABASE_URL=ENC[AES256_GCM,data:0gjQ/HVYHQU963c6SOk10MLKhWZHxGK8mn9/6NQs8FMz9Zuh7onWw5ynB/RtVOwU3zGfE2s=,iv:910tjevFcLIwrpPuaIZGiTz6wvGC3tMTgY5sSlf88eg=,tag:SYeYGmed3Fj74Pbhkxc/VA==,type:str]
3-
SESSION_SECRET=ENC[AES256_GCM,data:QRK+3o/8aa2V0jBDgH1/NF2IHQMwClBofSsQb5wQgaE=,iv:sLorEntuqNyiP198RZoJ04wmvQ/fZJeT+37j9/OpPg0=,tag:qGhtkmcO4uiTX8a39bwtnw==,type:str]
4-
APP_PORT=ENC[AES256_GCM,data:80tXlQ==,iv:oZKeiFDJcyCjuvADKxYdbTSwd4K2gGlKXLgvoAHmsnk=,tag:1ZfhJ1gPE/TEiRGzfyfmTg==,type:str]
5-
API_PORT=ENC[AES256_GCM,data:robOHA==,iv:Sj1GWpLk5CAXJ/sfOZ0eJNtwqJtoubEv7Eg/tN9pLxw=,tag:u1Xs4QysafsLiMphLMeJAg==,type:str]
6-
#ENC[AES256_GCM,data:CMFM,iv:sr0eocojCnchr4kCYhA8A1nGt6IQ1UzNeG+Lr01DD5E=,tag:mhVoJZxl/ft8uXRbZnt7ZQ==,type:comment]
7-
S3_BUCKET=ENC[AES256_GCM,data:jw14jrD9BCgfdlUINE1S,iv:5Yucpn9UzoQrWm/fUjx8GYRgyFRMJgFRWo8HN6ccDxw=,tag:mrlX8k58LPDFUV0JCUufZg==,type:str]
8-
S3_ENDPOINT=ENC[AES256_GCM,data:n4Zw2awL6njm0NATjD65ypAVUQ/uXDF0BGxC5KCKqKgMRXUzH/ny1zpvVlJF1lb9JdEmWO7UAJVM,iv:gBDinVj9vlhQMYTuMcTAY3lb187mEGKTRhoTyLaHRNg=,tag:q9qhJP8FWkkk9Yav4W6YHA==,type:str]
9-
S3_ACCESS_KEY=ENC[AES256_GCM,data:PFgFY+RymmuUNRHplt82aia0Rg37vNQ4UHmpzlfMGi8=,iv:jFxwkrvVxKrOX9N1adDRQu3And5KRdiX4nSXOntsjdo=,tag:gh/Xfi/4cjV9pEG1csmZMw==,type:str]
10-
S3_SECRET_KEY=ENC[AES256_GCM,data:NOkXLgWqWJdGqdhhB1RPrXaH6EU2BaSsC3fdcezcsHWFxyUyuTqFwmoe6gHgnxvROnJVcO0urXGVoSPj55E6bw==,iv:QStdUBYEBpFW1uBn7EXhSPG3V7XQoXD7SW/xqC5Z2Nk=,tag:gb2k2HDuWZfX6TPY+3uaqg==,type:str]
11-
#ENC[AES256_GCM,data:FFHcd+X9Iw==,iv:4AP+r0Dk7EFFWctR7T9/Hxx2GhsQhBbL+xY1wLlXajc=,tag:VBiP5vBoDysxoHZOLHTMPg==,type:comment]
12-
BACKUP_S3_PREFIX=ENC[AES256_GCM,data:vDk3pxeCnfZy,iv:xKwxM8AFf1LhpCr50VdoIoEeDL7uUxwcmaoAqA/88Ag=,tag:KzUUkQgDt9zudTu7QpPLgw==,type:str]
13-
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5b3ZHckJaaWxic2l4OHZr\nYlpTcUhqZE4yMnBjU0JZVnhwY05LTENsSmo4CmhmZTVWcklHQ0NaNHRSVzUzQlVr\nc0dHaDVqdzZIZlIwMXRsM2tjbTFMZTgKLS0tIFlLTUUzcVNpRVBlMXhRZXVmcUZh\nQjhWOUt5aVZDT1lDUVdmdEx2emMrWjgK1s+xmEva0jLm0DY0zLn62Hu6l3RvhNe8\nYj1beHP7R6h99Z0v/gy/vWBoc/d0vQmAwsh/A1OclCWUawRwmlQQ/w==\n-----END AGE ENCRYPTED FILE-----\n
1+
#ENC[AES256_GCM,data:8oLm8J8REFqg,iv:YeGTDxrxiqenup1HZjkoMh9cN7A99vBUer4HMYCCLJE=,tag:IVaWr893i6goxHY+PfaKXQ==,type:comment]
2+
DATABASE_URL=ENC[AES256_GCM,data:u+APvXWzU0aT+dboj7LuSh8NZdEzbccJ0D9eEOFjWUzqGOWG8E9LLJ0eQy6OR0LMnPav9h4=,iv:n65hn67Wb6pF480paGtL5xHoAJ/6Mu49jz/M89RuMFY=,tag:MlKVpQftGg2wBevdHzZn0Q==,type:str]
3+
SESSION_SECRET=ENC[AES256_GCM,data:ElCKrLjhPynYmMDbonOzZttglw+O8/N40K+Q3QVg9yg=,iv:8+sFGd+Qw9mfZl3LWDP95/0tV79ADfR3bqp62mukIvg=,tag:EIGuHJ5EOJrJEBEoVb5srQ==,type:str]
4+
APP_PORT=ENC[AES256_GCM,data:Gw6h2g==,iv:jJmbkdVVWjIH0jhCVX8cRbM4SgxKTfjT/uRtTHorkYY=,tag:wA0tHlEXxG9dPuojIYqERA==,type:str]
5+
API_PORT=ENC[AES256_GCM,data:Co7HKQ==,iv:DcVCtkd2dH1/quA3BsuMG/X+jUtNBZf1dqH/Ws65otg=,tag:VCuxzh7cRFx2/zIxlf63Rw==,type:str]
6+
#ENC[AES256_GCM,data:zhKP,iv:2rshN7ZlzHVxUc4vGx+dr4kdzXZE+movMfWKnDuGx0o=,tag:vM52ohoEH93FQL3g1sa87A==,type:comment]
7+
S3_BUCKET=ENC[AES256_GCM,data:P9TbpLt90/LNphHh7VaO,iv:9nWor7I0GrNULxqQhNzSFhpNuMaOPG/7PJDf9saDjpc=,tag:HZRxwM18/oq9xrILoV2zcA==,type:str]
8+
S3_ENDPOINT=ENC[AES256_GCM,data:DI2fv4feWTUCiN7G84xe0e4d05hX4QrmI7Zr+JO9bLNBkcZhrMTndAldbYvDR6s5vXQPDG+eFt1S,iv:oNnxGcmV9zEArXh687nfn652V6zqY4ftKbWY6UKRG4A=,tag:iDwIyRl8sWQRANvezm6A4A==,type:str]
9+
S3_ACCESS_KEY=ENC[AES256_GCM,data:4BVn8vaTX3JXhkALt3dv41WHdTmkK0s9zNXvhTWkJLU=,iv:8EcC6uNDitTzeNmwUlmN6PFcg62L7FsEjzUrR6mTzqQ=,tag:zhMaL3irn7LosQFdekxDCw==,type:str]
10+
S3_SECRET_KEY=ENC[AES256_GCM,data:TZInHywVRGfb6ofEiny6+/40Vxavq+aVCZF41nb20ZlNrdiLiwdrHcCft3EnF17tOp2roeySpkJCB1ph1qHQkQ==,iv:knW6/ZdjoOyDzNIqjoTMKyG4M5sLXvZs8u6kJYil+CQ=,tag:ruZ/55zDR2i04P2LeEXNhA==,type:str]
11+
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBL0NnK1lGZjdFZy9FT1c0\nOXZ4TE96ZFRJMkNIeE53UHZiaktuNVQxT25RCkF4bitOU29WZCtteEJOMzlmTmdR\nbWhPcTVaaSt3aEVHNTZPS1FIVWhVYnMKLS0tIG1sVGx5TituRm1UOVBoY1BZT0dC\nSEtVYStuV01selVob2V6YnFhSkhxV2cKVi5tfE6B2mzLnUXsh3M/xlwlLambAjGu\n/o5doUt3JNya8/odgm57iGtxhdEymCqqvbLxTwNKARVRwGUkdhHkuQ==\n-----END AGE ENCRYPTED FILE-----\n
1412
sops_age__list_0__map_recipient=age1wravpjmed26772xfjhawmnsnc4933htapg6y5xseqml0jdv8z9hqemzhcr
15-
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyaFFFaVhlSFVNODlTSCsz\nYkkrTS8yVnNLT1FRWDllM3NSR1NmWlJqNzB3Cm5kMmNmZmVFSDc4aHY4NTJmdWtQ\nSU0vVXVNellMZkpZMFFOdjlQOTFONnMKLS0tIEZFZUNDZGpOM1RpK1RiSmpVVDZG\nY0k3cVpQc2VwbHVTNEk3ZVB1KzN3cmsKK7GZY/OZ/yugrNKuIOamSk04H1jtybaG\nu2sOYTJJ2+QLoAe5mhNjncFWgAbzm/wZ4cLVzG11D2Mz36C7i3PkMw==\n-----END AGE ENCRYPTED FILE-----\n
13+
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBN2VsbG02SVV3bk15V3Vw\nWmtFNFZlcGFlUzdtVEMwZDd2MW43YzJBS0FrCmhmU1laNjlYckhiZkxwa0ZDNUs3\nLzl5OHRWYTUzbkJLQ3FzaVU1dU0yS1UKLS0tIG5qczdIcVZ6L0szQXRPYk5TQ1Jh\ncm9WOGgxMUZtNFlSRGl5Y2JGenJ1WTAKDLWBWugOAtBz1PoOPsriZT+amN0yyZnc\nXaHiMZ9jO8kXYHpjuDGgPkAwHCFqP/2dtFv5WIJnrHp65EgFomf4Fw==\n-----END AGE ENCRYPTED FILE-----\n
1614
sops_age__list_1__map_recipient=age1ysddqggsx3h8zkv7xn3z26sjak5pqms6pyqhnky9ukrvpk7es5jsayz8w7
17-
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCbTRYa1B6c3B0V1c1Sk85\na0pMZE1vRW5aenBwbFpQd3hqWDM2UGVkRTBNCkhPVmhEZGMzSUU0bU5tcXpMcWxk\nMnA2WStYRWNxQjltUlQwN0hUZUdVTXMKLS0tIDFraUxVK0R5Ui9qK05YOXA5eVFQ\ncTVYZlJ2Z2R2OExuM1RDVjdiOVU0blkKaKCP2CuALbQHgiy4+izMq6cR4ktrdE81\n/BwZotZ1Yzsu3mgiAF9v4q1/WFq7MmQvMrZCaoOaVrNxGP/tgRv+Iw==\n-----END AGE ENCRYPTED FILE-----\n
15+
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCVmtTcERUSkhOc1NwMXk0\nbU9ONktSRkhvYUw0VFVocnJmL21NbzZsRjJzCktXMWJVNWgyaTQ2c2VPUGdxNjVu\nNTdGem1hbGhDcEJyTXlPY0t3TXhnK00KLS0tIDJLQyt2MVRIYnpOVnY3VS9ncGF3\nVW5iQVh2Y09abEJMa2NaeHJhMkJuWUEKRuUhg+wcmuQe19mIGcTfQFsAHk/MZXJm\nK25vwWHAIWH4LzvY3WVx8thWqHk2hW0jbPDOTsGb78SPcC3sGWdHjA==\n-----END AGE ENCRYPTED FILE-----\n
1816
sops_age__list_2__map_recipient=age1pgxk292zq30wafwg03gge7hu5dlu3h7yfldp2y8kqekfaljjky7s752uwy
19-
sops_age__list_3__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2UVhrMjI0TjJiaG5FcUcr\nM2J1c2xRZDRoWXhqV1RFUXZYZ1VRRTgxMWdjClk5Wkl0dUZiT3A3S25SN2lIODJL\nWGV1WlEyVTlzTjRsTVZwU1RlUGlxa0kKLS0tIFRWL2ZEVDZnMWlycFBiQVRZRE1D\nVDhOVjljUE1zZGJtVXN3TklzOXBNZmcKVA41za2K9OldKEwkMQ/CTv4XUohQkwQ0\nJ+EPSVauRh8FKDDOYvjKv9rXNCf4ORtdKXK+EK0pxNJkMFZl8p6yLA==\n-----END AGE ENCRYPTED FILE-----\n
17+
sops_age__list_3__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKNnFvUVRxS2N3c1o1dStj\neEZtYWR6aWxvY0pXdG5UQS9BMjhSV1lGVVRVCmZocXp2c1Jxdm9XMUl0OUloMFRr\nSnZYM011aTFwc3N2ZFd5dE5ZZnZmZFEKLS0tIHdMK3VpTlNtN1lnMCtMY2RPQzdk\nV3BUeXJ1eGdHMjdIQTVVYmdVY3g4UWcKBkH36JFUIWNliv5mTli7fqqT2oCDRHVv\nVcpg5J8PVIf04jEiFhuB5vBdM2njem3NsIIOx40qf6cWvchlUoNeIA==\n-----END AGE ENCRYPTED FILE-----\n
2018
sops_age__list_3__map_recipient=age1qn0x93jhqjpqwvx5tgxnrwq5e3vuzur9whrkdnrvapd58esm45rqfkuxqh
21-
sops_lastmodified=2026-04-30T15:13:26Z
22-
sops_mac=ENC[AES256_GCM,data:DGCQFWQZT0S6t2mFTQ+D2Q/6CvIB9SYMA/pp4wgM85vHYXZ72Zv/7JWmwLYJwT1n3W3SHfJcw6aGIHmJd0nDReEdVWxDfLqvlMfZ8xEfxA8HXx/Fl/oCwUSUUjTITQFIwdrc/iyDkfNKHGQeQtW6dR3SSLI9k1egUZGW7R08RoY=,iv:TxHIgpvTvb6WPd5UXOY77ip99d1HnZQd3MdkNTgHuoQ=,tag:9dToR6zA8IgIEl/Qjo6heA==,type:str]
19+
sops_lastmodified=2026-04-30T15:41:54Z
20+
sops_mac=ENC[AES256_GCM,data:mXij9Fuvsj7i+JardfWmPpUsnABwrlSewbuj3iEoFbJU4hZ2YZYKya43Cb5ZjFNdlcNb9doc2BPMvpT6/EvKlzNRgq39npdffnjzzZJkFNpzPiifNTQoL877FxzceV2gtqwpFdMXcJqpZp3HfkCl8gFmtXm1b8NcWy0cpiUoPQ4=,iv:M582s6xHv67U9JE9Bu7MoZZ7M9zWkDBpIdoB/q1DQAc=,tag:UBA6rb5XuFInLQOzvri8jA==,type:str]
2321
sops_unencrypted_suffix=_unencrypted
2422
sops_version=3.11.0

.env.test

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,3 @@ S3_REGION=us-east-1
99
S3_ENDPOINT=http://localhost:9000
1010
S3_ACCESS_KEY=minioadmin
1111
S3_SECRET_KEY=minioadmin
12-
13-
# Backup
14-
BACKUP_S3_PREFIX=backups/

Caddyfile

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,44 @@
11
# Host-level Caddy — manages TLS for all domains.
22
# Deploy to /etc/caddy/Caddyfile on the server.
33
# Reload with: systemctl reload caddy
4+
# NOTE: Use 127.0.0.1 (not localhost) — Docker Swarm publishes on IPv4 only.
45

56
www.underlay.org {
7+
tls internal
8+
69
# API routes → Fastify (prod)
710
handle /api/* {
8-
reverse_proxy localhost:3001
11+
reverse_proxy 127.0.0.1:3001
912
}
1013
handle /assets/* {
11-
reverse_proxy localhost:3001
14+
reverse_proxy 127.0.0.1:3001
1215
}
1316
handle /uploads/* {
14-
reverse_proxy localhost:3001
17+
reverse_proxy 127.0.0.1:3001
1518
}
1619

1720
# Everything else → Astro SSR (prod)
1821
handle {
19-
reverse_proxy localhost:4322
22+
reverse_proxy 127.0.0.1:4322
2023
}
2124
}
2225

2326
dev.underlay.org {
27+
tls internal
28+
2429
# API routes → Fastify (dev)
2530
handle /api/* {
26-
reverse_proxy localhost:3000
31+
reverse_proxy 127.0.0.1:3000
2732
}
2833
handle /assets/* {
29-
reverse_proxy localhost:3000
34+
reverse_proxy 127.0.0.1:3000
3035
}
3136
handle /uploads/* {
32-
reverse_proxy localhost:3000
37+
reverse_proxy 127.0.0.1:3000
3338
}
3439

3540
# Everything else → Astro SSR (dev)
3641
handle {
37-
reverse_proxy localhost:4321
42+
reverse_proxy 127.0.0.1:4321
3843
}
3944
}

tools/backupDb.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { uploadToS3 } from "../src/lib/s3.js";
1212

1313
const DATABASE_URL = process.env.DATABASE_URL ?? "postgresql://underlay:underlay@localhost:5432/underlay";
1414
const BACKUP_TMP = "./data/backup-tmp";
15-
const S3_PREFIX = process.env.BACKUP_S3_PREFIX ?? "backups/";
15+
const S3_PREFIX = "_backups/";
1616

1717
async function backup(): Promise<void> {
1818
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");

0 commit comments

Comments
 (0)