diff --git a/.gitignore b/.gitignore index 2cf1100..03cddda 100644 --- a/.gitignore +++ b/.gitignore @@ -164,3 +164,4 @@ cython_debug/ .terraform variables.tf +.bw2secrets diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..8353f25 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,27 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-added-large-files +- repo: https://github.com/pre-commit/mirrors-autopep8 + rev: v2.0.4 + hooks: + - id: autopep8 +- repo: https://github.com/asottile/add-trailing-comma + rev: v3.1.0 + hooks: + - id: add-trailing-comma +- repo: https://github.com/asottile/reorder-python-imports + rev: v3.13.0 + hooks: + - id: reorder-python-imports +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.4.7 + hooks: + - id: ruff + args: [--fix, --exit-non-zero-on-fix] diff --git a/inventory.py b/inventory.py index e3e4402..2844e0c 100644 --- a/inventory.py +++ b/inventory.py @@ -1,12 +1,12 @@ servers = [ ( - "vps0.katuwoss.dev", { + "kropcloud-vps0", { "ssh_user": "root", "web_server": True, "services": [ "traefik", "joplin", "kanboard", - "ntfy", "uptime-kuma", "usememos" - ] + "ntfy", "uptime-kuma", "usememos", + ], }, ), @@ -15,8 +15,8 @@ servers = [ "ssh_user": "root", "web_server": True, "services": [ - "nginx", "immich", "nodered", "firefly" - ] - } - ) + "nginx", "immich", "nodered", "firefly", + ], + }, + ), ] diff --git a/poetry.lock b/poetry.lock index 27e682d..db911ba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,39 +1,39 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "bcrypt" -version = "4.1.2" +version = "4.1.3" description = "Modern password hashing for your software and your servers" optional = false python-versions = ">=3.7" files = [ - {file = "bcrypt-4.1.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:ac621c093edb28200728a9cca214d7e838529e557027ef0581685909acd28b5e"}, - {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea505c97a5c465ab8c3ba75c0805a102ce526695cd6818c6de3b1a38f6f60da1"}, - {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57fa9442758da926ed33a91644649d3e340a71e2d0a5a8de064fb621fd5a3326"}, - {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb3bd3321517916696233b5e0c67fd7d6281f0ef48e66812db35fc963a422a1c"}, - {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6cad43d8c63f34b26aef462b6f5e44fdcf9860b723d2453b5d391258c4c8e966"}, - {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:44290ccc827d3a24604f2c8bcd00d0da349e336e6503656cb8192133e27335e2"}, - {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:732b3920a08eacf12f93e6b04ea276c489f1c8fb49344f564cca2adb663b3e4c"}, - {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1c28973decf4e0e69cee78c68e30a523be441972c826703bb93099868a8ff5b5"}, - {file = "bcrypt-4.1.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b8df79979c5bae07f1db22dcc49cc5bccf08a0380ca5c6f391cbb5790355c0b0"}, - {file = "bcrypt-4.1.2-cp37-abi3-win32.whl", hash = "sha256:fbe188b878313d01b7718390f31528be4010fed1faa798c5a1d0469c9c48c369"}, - {file = "bcrypt-4.1.2-cp37-abi3-win_amd64.whl", hash = "sha256:9800ae5bd5077b13725e2e3934aa3c9c37e49d3ea3d06318010aa40f54c63551"}, - {file = "bcrypt-4.1.2-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:71b8be82bc46cedd61a9f4ccb6c1a493211d031415a34adde3669ee1b0afbb63"}, - {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e3c6642077b0c8092580c819c1684161262b2e30c4f45deb000c38947bf483"}, - {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:387e7e1af9a4dd636b9505a465032f2f5cb8e61ba1120e79a0e1cd0b512f3dfc"}, - {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f70d9c61f9c4ca7d57f3bfe88a5ccf62546ffbadf3681bb1e268d9d2e41c91a7"}, - {file = "bcrypt-4.1.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2a298db2a8ab20056120b45e86c00a0a5eb50ec4075b6142db35f593b97cb3fb"}, - {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ba55e40de38a24e2d78d34c2d36d6e864f93e0d79d0b6ce915e4335aa81d01b1"}, - {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3566a88234e8de2ccae31968127b0ecccbb4cddb629da744165db72b58d88ca4"}, - {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b90e216dc36864ae7132cb151ffe95155a37a14e0de3a8f64b49655dd959ff9c"}, - {file = "bcrypt-4.1.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:69057b9fc5093ea1ab00dd24ede891f3e5e65bee040395fb1e66ee196f9c9b4a"}, - {file = "bcrypt-4.1.2-cp39-abi3-win32.whl", hash = "sha256:02d9ef8915f72dd6daaef40e0baeef8a017ce624369f09754baf32bb32dba25f"}, - {file = "bcrypt-4.1.2-cp39-abi3-win_amd64.whl", hash = "sha256:be3ab1071662f6065899fe08428e45c16aa36e28bc42921c4901a191fda6ee42"}, - {file = "bcrypt-4.1.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d75fc8cd0ba23f97bae88a6ec04e9e5351ff3c6ad06f38fe32ba50cbd0d11946"}, - {file = "bcrypt-4.1.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:a97e07e83e3262599434816f631cc4c7ca2aa8e9c072c1b1a7fec2ae809a1d2d"}, - {file = "bcrypt-4.1.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e51c42750b7585cee7892c2614be0d14107fad9581d1738d954a262556dd1aab"}, - {file = "bcrypt-4.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba4e4cc26610581a6329b3937e02d319f5ad4b85b074846bf4fef8a8cf51e7bb"}, - {file = "bcrypt-4.1.2.tar.gz", hash = "sha256:33313a1200a3ae90b75587ceac502b048b840fc69e7f7a0905b5f87fac7a1258"}, + {file = "bcrypt-4.1.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:48429c83292b57bf4af6ab75809f8f4daf52aa5d480632e53707805cc1ce9b74"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8bea4c152b91fd8319fef4c6a790da5c07840421c2b785084989bf8bbb7455"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d3b317050a9a711a5c7214bf04e28333cf528e0ed0ec9a4e55ba628d0f07c1a"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:094fd31e08c2b102a14880ee5b3d09913ecf334cd604af27e1013c76831f7b05"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4fb253d65da30d9269e0a6f4b0de32bd657a0208a6f4e43d3e645774fb5457f3"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:193bb49eeeb9c1e2db9ba65d09dc6384edd5608d9d672b4125e9320af9153a15"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8cbb119267068c2581ae38790e0d1fbae65d0725247a930fc9900c285d95725d"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6cac78a8d42f9d120b3987f82252bdbeb7e6e900a5e1ba37f6be6fe4e3848286"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01746eb2c4299dd0ae1670234bf77704f581dd72cc180f444bfe74eb80495b64"}, + {file = "bcrypt-4.1.3-cp37-abi3-win32.whl", hash = "sha256:037c5bf7c196a63dcce75545c8874610c600809d5d82c305dd327cd4969995bf"}, + {file = "bcrypt-4.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:8a893d192dfb7c8e883c4576813bf18bb9d59e2cfd88b68b725990f033f1b978"}, + {file = "bcrypt-4.1.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d4cf6ef1525f79255ef048b3489602868c47aea61f375377f0d00514fe4a78c"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec3c2e1ca3e5c4b9edb94290b356d082b721f3f50758bce7cce11d8a7c89ce84"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3a5be252fef513363fe281bafc596c31b552cf81d04c5085bc5dac29670faa08"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f7cd3399fbc4ec290378b541b0cf3d4398e4737a65d0f938c7c0f9d5e686611"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c4c8d9b3e97209dd7111bf726e79f638ad9224b4691d1c7cfefa571a09b1b2d6"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:31adb9cbb8737a581a843e13df22ffb7c84638342de3708a98d5c986770f2834"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:551b320396e1d05e49cc18dd77d970accd52b322441628aca04801bbd1d52a73"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6717543d2c110a155e6821ce5670c1f512f602eabb77dba95717ca76af79867d"}, + {file = "bcrypt-4.1.3-cp39-abi3-win32.whl", hash = "sha256:6004f5229b50f8493c49232b8e75726b568535fd300e5039e255d919fc3a07f2"}, + {file = "bcrypt-4.1.3-cp39-abi3-win_amd64.whl", hash = "sha256:2505b54afb074627111b5a8dc9b6ae69d0f01fea65c2fcaea403448c503d3991"}, + {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:cb9c707c10bddaf9e5ba7cdb769f3e889e60b7d4fea22834b261f51ca2b89fed"}, + {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9f8ea645eb94fb6e7bea0cf4ba121c07a3a182ac52876493870033141aa687bc"}, + {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1"}, + {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d84702adb8f2798d813b17d8187d27076cca3cd52fe3686bb07a9083930ce650"}, + {file = "bcrypt-4.1.3.tar.gz", hash = "sha256:2ee15dd749f5952fe3f0430d0ff6b74082e159c50332a1413d51b5689cf06623"}, ] [package.extras] @@ -42,13 +42,13 @@ typecheck = ["mypy"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -241,58 +241,58 @@ files = [ [[package]] name = "configparser" -version = "6.0.1" +version = "7.0.0" description = "Updated configparser from stdlib for earlier Pythons." optional = false python-versions = ">=3.8" files = [ - {file = "configparser-6.0.1-py3-none-any.whl", hash = "sha256:5a0da275bea56f871abaa9e0806331791e9d8ae2938e8b8797b99ab3e8e192c4"}, - {file = "configparser-6.0.1.tar.gz", hash = "sha256:db45513e971e509496b150be31bd67b0e14ab20b78a383b677e4b158e2c682d8"}, + {file = "configparser-7.0.0-py3-none-any.whl", hash = "sha256:f46d52a12811c637104c6bb8eb33693be0038ab6bf01d69aae009c39ec8c2017"}, + {file = "configparser-7.0.0.tar.gz", hash = "sha256:af3c618a67aaaedc4d689fd7317d238f566b9aa03cae50102e92d7f0dfe78ba0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "types-backports"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "types-backports"] [[package]] name = "cryptography" -version = "42.0.5" +version = "42.0.8" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, - {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, - {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, - {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, - {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, - {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, - {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, ] [package.dependencies] @@ -455,24 +455,24 @@ test = ["objgraph", "psutil"] [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -573,13 +573,13 @@ invoke = ["invoke (>=2.0)"] [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] @@ -710,13 +710,13 @@ kerberos = ["pykerberos (>=1.2.1,<2.0.0)", "winkerberos (>=0.5.0)"] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -747,19 +747,18 @@ requests = ">=2.0.0" [[package]] name = "setuptools" -version = "69.2.0" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -859,54 +858,54 @@ test = ["zope.testrunner"] [[package]] name = "zope-interface" -version = "6.2" +version = "6.4.post2" description = "Interfaces for Python" optional = false python-versions = ">=3.7" files = [ - {file = "zope.interface-6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:506f5410b36e5ba494136d9fa04c548eaf1a0d9c442b0b0e7a0944db7620e0ab"}, - {file = "zope.interface-6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b386b8b9d2b6a5e1e4eadd4e62335571244cb9193b7328c2b6e38b64cfda4f0e"}, - {file = "zope.interface-6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb0b3f2cb606981c7432f690db23506b1db5899620ad274e29dbbbdd740e797"}, - {file = "zope.interface-6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de7916380abaef4bb4891740879b1afcba2045aee51799dfd6d6ca9bdc71f35f"}, - {file = "zope.interface-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b240883fb43160574f8f738e6d09ddbdbf8fa3e8cea051603d9edfd947d9328"}, - {file = "zope.interface-6.2-cp310-cp310-win_amd64.whl", hash = "sha256:8af82afc5998e1f307d5e72712526dba07403c73a9e287d906a8aa2b1f2e33dd"}, - {file = "zope.interface-6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d45d2ba8195850e3e829f1f0016066a122bfa362cc9dc212527fc3d51369037"}, - {file = "zope.interface-6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:76e0531d86523be7a46e15d379b0e975a9db84316617c0efe4af8338dc45b80c"}, - {file = "zope.interface-6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59f7374769b326a217d0b2366f1c176a45a4ff21e8f7cebb3b4a3537077eff85"}, - {file = "zope.interface-6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25e0af9663eeac6b61b231b43c52293c2cb7f0c232d914bdcbfd3e3bd5c182ad"}, - {file = "zope.interface-6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14e02a6fc1772b458ebb6be1c276528b362041217b9ca37e52ecea2cbdce9fac"}, - {file = "zope.interface-6.2-cp311-cp311-win_amd64.whl", hash = "sha256:02adbab560683c4eca3789cc0ac487dcc5f5a81cc48695ec247f00803cafe2fe"}, - {file = "zope.interface-6.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8f5d2c39f3283e461de3655e03faf10e4742bb87387113f787a7724f32db1e48"}, - {file = "zope.interface-6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:75d2ec3d9b401df759b87bc9e19d1b24db73083147089b43ae748aefa63067ef"}, - {file = "zope.interface-6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa994e8937e8ccc7e87395b7b35092818905cf27c651e3ff3e7f29729f5ce3ce"}, - {file = "zope.interface-6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ede888382882f07b9e4cd942255921ffd9f2901684198b88e247c7eabd27a000"}, - {file = "zope.interface-6.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2606955a06c6852a6cff4abeca38346ed01e83f11e960caa9a821b3626a4467b"}, - {file = "zope.interface-6.2-cp312-cp312-win_amd64.whl", hash = "sha256:ac7c2046d907e3b4e2605a130d162b1b783c170292a11216479bb1deb7cadebe"}, - {file = "zope.interface-6.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:febceb04ee7dd2aef08c2ff3d6f8a07de3052fc90137c507b0ede3ea80c21440"}, - {file = "zope.interface-6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fc711acc4a1c702ca931fdbf7bf7c86f2a27d564c85c4964772dadf0e3c52f5"}, - {file = "zope.interface-6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:396f5c94654301819a7f3a702c5830f0ea7468d7b154d124ceac823e2419d000"}, - {file = "zope.interface-6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd374927c00764fcd6fe1046bea243ebdf403fba97a937493ae4be2c8912c2b"}, - {file = "zope.interface-6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a3046e8ab29b590d723821d0785598e0b2e32b636a0272a38409be43e3ae0550"}, - {file = "zope.interface-6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:de125151a53ecdb39df3cb3deb9951ed834dd6a110a9e795d985b10bb6db4532"}, - {file = "zope.interface-6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f444de0565db46d26c9fa931ca14f497900a295bd5eba480fc3fad25af8c763e"}, - {file = "zope.interface-6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2fefad268ff5c5b314794e27e359e48aeb9c8bb2cbb5748a071757a56f6bb8f"}, - {file = "zope.interface-6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97785604824981ec8c81850dd25c8071d5ce04717a34296eeac771231fbdd5cd"}, - {file = "zope.interface-6.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7b2bed4eea047a949296e618552d3fed00632dc1b795ee430289bdd0e3717f3"}, - {file = "zope.interface-6.2-cp38-cp38-win_amd64.whl", hash = "sha256:d54f66c511ea01b9ef1d1a57420a93fbb9d48a08ec239f7d9c581092033156d0"}, - {file = "zope.interface-6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5ee9789a20b0081dc469f65ff6c5007e67a940d5541419ca03ef20c6213dd099"}, - {file = "zope.interface-6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af27b3fe5b6bf9cd01b8e1c5ddea0a0d0a1b8c37dc1c7452f1e90bf817539c6d"}, - {file = "zope.interface-6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bce517b85f5debe07b186fc7102b332676760f2e0c92b7185dd49c138734b70"}, - {file = "zope.interface-6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ae9793f114cee5c464cc0b821ae4d36e1eba961542c6086f391a61aee167b6f"}, - {file = "zope.interface-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e87698e2fea5ca2f0a99dff0a64ce8110ea857b640de536c76d92aaa2a91ff3a"}, - {file = "zope.interface-6.2-cp39-cp39-win_amd64.whl", hash = "sha256:b66335bbdbb4c004c25ae01cc4a54fd199afbc1fd164233813c6d3c2293bb7e1"}, - {file = "zope.interface-6.2.tar.gz", hash = "sha256:3b6c62813c63c543a06394a636978b22dffa8c5410affc9331ce6cdb5bfa8565"}, + {file = "zope.interface-6.4.post2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2eccd5bef45883802848f821d940367c1d0ad588de71e5cabe3813175444202c"}, + {file = "zope.interface-6.4.post2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:762e616199f6319bb98e7f4f27d254c84c5fb1c25c908c2a9d0f92b92fb27530"}, + {file = "zope.interface-6.4.post2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ef8356f16b1a83609f7a992a6e33d792bb5eff2370712c9eaae0d02e1924341"}, + {file = "zope.interface-6.4.post2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e4fa5d34d7973e6b0efa46fe4405090f3b406f64b6290facbb19dcbf642ad6b"}, + {file = "zope.interface-6.4.post2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d22fce0b0f5715cdac082e35a9e735a1752dc8585f005d045abb1a7c20e197f9"}, + {file = "zope.interface-6.4.post2-cp310-cp310-win_amd64.whl", hash = "sha256:97e615eab34bd8477c3f34197a17ce08c648d38467489359cb9eb7394f1083f7"}, + {file = "zope.interface-6.4.post2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:599f3b07bde2627e163ce484d5497a54a0a8437779362395c6b25e68c6590ede"}, + {file = "zope.interface-6.4.post2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:136cacdde1a2c5e5bc3d0b2a1beed733f97e2dad8c2ad3c2e17116f6590a3827"}, + {file = "zope.interface-6.4.post2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47937cf2e7ed4e0e37f7851c76edeb8543ec9b0eae149b36ecd26176ff1ca874"}, + {file = "zope.interface-6.4.post2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f0a6be264afb094975b5ef55c911379d6989caa87c4e558814ec4f5125cfa2e"}, + {file = "zope.interface-6.4.post2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47654177e675bafdf4e4738ce58cdc5c6d6ee2157ac0a78a3fa460942b9d64a8"}, + {file = "zope.interface-6.4.post2-cp311-cp311-win_amd64.whl", hash = "sha256:e2fb8e8158306567a3a9a41670c1ff99d0567d7fc96fa93b7abf8b519a46b250"}, + {file = "zope.interface-6.4.post2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b912750b13d76af8aac45ddf4679535def304b2a48a07989ec736508d0bbfbde"}, + {file = "zope.interface-6.4.post2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4ac46298e0143d91e4644a27a769d1388d5d89e82ee0cf37bf2b0b001b9712a4"}, + {file = "zope.interface-6.4.post2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86a94af4a88110ed4bb8961f5ac72edf782958e665d5bfceaab6bf388420a78b"}, + {file = "zope.interface-6.4.post2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73f9752cf3596771c7726f7eea5b9e634ad47c6d863043589a1c3bb31325c7eb"}, + {file = "zope.interface-6.4.post2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00b5c3e9744dcdc9e84c24ed6646d5cf0cf66551347b310b3ffd70f056535854"}, + {file = "zope.interface-6.4.post2-cp312-cp312-win_amd64.whl", hash = "sha256:551db2fe892fcbefb38f6f81ffa62de11090c8119fd4e66a60f3adff70751ec7"}, + {file = "zope.interface-6.4.post2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96ac6b3169940a8cd57b4f2b8edcad8f5213b60efcd197d59fbe52f0accd66e"}, + {file = "zope.interface-6.4.post2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cebff2fe5dc82cb22122e4e1225e00a4a506b1a16fafa911142ee124febf2c9e"}, + {file = "zope.interface-6.4.post2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33ee982237cffaf946db365c3a6ebaa37855d8e3ca5800f6f48890209c1cfefc"}, + {file = "zope.interface-6.4.post2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:fbf649bc77510ef2521cf797700b96167bb77838c40780da7ea3edd8b78044d1"}, + {file = "zope.interface-6.4.post2-cp37-cp37m-win_amd64.whl", hash = "sha256:4c0b208a5d6c81434bdfa0f06d9b667e5de15af84d8cae5723c3a33ba6611b82"}, + {file = "zope.interface-6.4.post2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d3fe667935e9562407c2511570dca14604a654988a13d8725667e95161d92e9b"}, + {file = "zope.interface-6.4.post2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a96e6d4074db29b152222c34d7eec2e2db2f92638d2b2b2c704f9e8db3ae0edc"}, + {file = "zope.interface-6.4.post2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:866a0f583be79f0def667a5d2c60b7b4cc68f0c0a470f227e1122691b443c934"}, + {file = "zope.interface-6.4.post2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fe919027f29b12f7a2562ba0daf3e045cb388f844e022552a5674fcdf5d21f1"}, + {file = "zope.interface-6.4.post2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e0343a6e06d94f6b6ac52fbc75269b41dd3c57066541a6c76517f69fe67cb43"}, + {file = "zope.interface-6.4.post2-cp38-cp38-win_amd64.whl", hash = "sha256:dabb70a6e3d9c22df50e08dc55b14ca2a99da95a2d941954255ac76fd6982bc5"}, + {file = "zope.interface-6.4.post2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:706efc19f9679a1b425d6fa2b4bc770d976d0984335eaea0869bd32f627591d2"}, + {file = "zope.interface-6.4.post2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d136e5b8821073e1a09dde3eb076ea9988e7010c54ffe4d39701adf0c303438"}, + {file = "zope.interface-6.4.post2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1730c93a38b5a18d24549bc81613223962a19d457cfda9bdc66e542f475a36f4"}, + {file = "zope.interface-6.4.post2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc2676312cc3468a25aac001ec727168994ea3b69b48914944a44c6a0b251e79"}, + {file = "zope.interface-6.4.post2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a62fd6cd518693568e23e02f41816adedfca637f26716837681c90b36af3671"}, + {file = "zope.interface-6.4.post2-cp39-cp39-win_amd64.whl", hash = "sha256:d3f7e001328bd6466b3414215f66dde3c7c13d8025a9c160a75d7b2687090d15"}, + {file = "zope.interface-6.4.post2.tar.gz", hash = "sha256:1c207e6f6dfd5749a26f5a5fd966602d6b824ec00d2df84a7e9a924e8933654e"}, ] [package.dependencies] setuptools = "*" [package.extras] -docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx_rtd_theme"] +docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx-rtd-theme"] test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] diff --git a/deploy.py b/provision.py similarity index 97% rename from deploy.py rename to provision.py index 61b03a4..ec5a371 100644 --- a/deploy.py +++ b/provision.py @@ -7,7 +7,7 @@ from tasks.tailscale import deploy_tailscale apt.packages( name="Update and upgrade server", update=True, - upgrade=True + upgrade=True, ) apt.packages( diff --git a/pubkeys/desktop_wsl.pub b/pubkeys/desktop_wsl.pub index 111f503..bbdc081 100644 --- a/pubkeys/desktop_wsl.pub +++ b/pubkeys/desktop_wsl.pub @@ -1 +1 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPexUMyL1yGJx0x3lE4QwTLVAsI/0VobbHO9EcP4BsfJ krop@KropiMasinka \ No newline at end of file +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPexUMyL1yGJx0x3lE4QwTLVAsI/0VobbHO9EcP4BsfJ krop@KropiMasinka diff --git a/pyproject.toml b/pyproject.toml index 6e6e224..72e864f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,6 +5,7 @@ description = "" authors = ["Jakub Kropáček "] license = "MIT" readme = "README.md" +package-mode = false [tool.poetry.dependencies] python = "^3.12" diff --git a/scripts/bw2secrets b/scripts/bw2secrets new file mode 100755 index 0000000..4367420 --- /dev/null +++ b/scripts/bw2secrets @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +import argparse +import getpass +import shutil +import subprocess as sp +from pathlib import Path + +import jinja2 + +bitwarden_session = None + + +def _add_args(parser: argparse.ArgumentParser): + parser.add_argument( + "search_paths", + help="start directory to walk files to find secret references", + default=".", + nargs="*", + ) + parser.add_argument( + "--bw-path", "-b", + help="custom path for bitwarden cli executable", + default=shutil.which("bw"), + ) + + +def init_bw_session(bw_path: Path): + global bitwarden_session + + if (pw_file := Path("./.bw2secrets")).exists(): + bitwarden_password = pw_file.read_text().strip() + else: + print("Please, provide your bitwarden master password") + bitwarden_password = getpass.getpass("Master password: ") + res = sp.run( + [bw_path, "unlock", bitwarden_password, "--raw"], capture_output=True, + text=True, + ) + res.check_returncode() + bitwarden_session = res.stdout + + +def find_templates(base_dirs: set[Path]) -> set[Path]: + env_templates: set[Path] = set() + for path in base_dirs: + for env_template in path.glob(f"{path}/**/*.template"): + env_templates.add(env_template) + return env_templates + + +def fetch_secret(bw_path: Path, secret_id: str) -> str: + global bitwarden_session + res = sp.run( + [bw_path, "get", "password", secret_id, "--session", bitwarden_session], + capture_output=True, + text=True, + ) + res.check_returncode() + return res.stdout + + +def secret_filter(bw_path: Path, secret_id: str) -> str: + return fetch_secret(bw_path, secret_id) + + +def compile_file(file_path: Path, bw_path: Path): + jinja_env = jinja2.Environment( + loader=jinja2.FileSystemLoader(file_path.parent), + ) + jinja_env.filters['secret'] = lambda secret_id: secret_filter( + bw_path, secret_id, + ) + + template = jinja_env.get_template(file_path.name) + + rendered_template = template.render() + file_path.with_name( + file_path.name.replace( + ".template", "", + ), + ).write_text(rendered_template) + + +def main() -> int: + parser = argparse.ArgumentParser("bw2secrets") + _add_args(parser) + args = parser.parse_args() + + if not (bw_path := args.bw_path): + print("Bitwarden CLI `bw` executable not found in PATH") + return 1 + + search_paths: set[Path | None] = set() + for path in args.search_paths: + search_path = Path(path) + search_paths.add(search_path) + + template_files = find_templates(search_paths) + + init_bw_session(bw_path) + + for file in template_files: + compile_file(file, bw_path) + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/bw2secrets.py b/scripts/bw2secrets.py deleted file mode 100755 index 5dc06b4..0000000 --- a/scripts/bw2secrets.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python3 -import shutil - - -def main() -> int: - if not (bw_path := shutil.which("bw")): - print("Bitwarden CLI `bw` executable not found in PATH") - return 1 - # TODO: finish - print(bw_path) - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/services/firefly/.env.example b/services/firefly/.env.template similarity index 100% rename from services/firefly/.env.example rename to services/firefly/.env.template diff --git a/services/firefly/.importer.env b/services/firefly/.importer.env index f4d318d..f8ea282 100644 --- a/services/firefly/.importer.env +++ b/services/firefly/.importer.env @@ -57,4 +57,4 @@ REDIS_PORT=6379 REDIS_DB="0" REDIS_CACHE_DB="1" -APP_NAME=DataImporter \ No newline at end of file +APP_NAME=DataImporter diff --git a/services/immich/.env.example b/services/immich/.env.example deleted file mode 100644 index 8c3642e..0000000 --- a/services/immich/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -UPLOAD_LOCATION= - -DB_PASSWORD= -DB_HOSTNAME=database -DB_USERNAME= -DB_DATABASE_NAME= - -REDIS_HOSTNAME= -EXTERNAL_HOST= \ No newline at end of file diff --git a/services/immich/.env.template b/services/immich/.env.template new file mode 100644 index 0000000..4a7f6bd --- /dev/null +++ b/services/immich/.env.template @@ -0,0 +1,11 @@ +UPLOAD_LOCATION=/mnt/data/immich + +DB_PASSWORD={{ 'fc4c389b-f598-4f42-940b-eaeabecd8359' | secret }} +DB_HOSTNAME=database +DB_USERNAME=immich +DB_DATABASE_NAME=immich + +REDIS_HOSTNAME=redis +EXTERNAL_HOST=immich.togetherdays.cz + +IMMICH_VERSION=v1.105.1 diff --git a/services/immich/docker-compose.yml b/services/immich/docker-compose.yml index 2e71461..6f4ef3e 100644 --- a/services/immich/docker-compose.yml +++ b/services/immich/docker-compose.yml @@ -80,4 +80,4 @@ services: - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_USER=${DB_USERNAME} - POSTGRES_DB=${DB_DATABASE_NAME} - - POSTGRES_HOST=database \ No newline at end of file + - POSTGRES_HOST=database diff --git a/services/jellyfin/.env.example b/services/jellyfin/.env.example deleted file mode 100644 index 42f1bd4..0000000 --- a/services/jellyfin/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -HOST= -ENTRYPOINTS= \ No newline at end of file diff --git a/services/photoprism/.env.example b/services/jellyfin/.env.template similarity index 67% rename from services/photoprism/.env.example rename to services/jellyfin/.env.template index e2bc045..0b0cb40 100644 --- a/services/photoprism/.env.example +++ b/services/jellyfin/.env.template @@ -1,3 +1,2 @@ -ENTRYPOINTS= HOST= -MAIN_DIR= \ No newline at end of file +ENTRYPOINTS= diff --git a/services/jellyfin/docker-compose.yml b/services/jellyfin/docker-compose.yml index 8e7860f..4680c92 100644 --- a/services/jellyfin/docker-compose.yml +++ b/services/jellyfin/docker-compose.yml @@ -28,4 +28,4 @@ services: - traefik.http.routers.jellyfin.rule=Host(`${HOST}`) - traefik.http.routers.jellyfin.entrypoints=${ENTRYPOINTS:-websecure} - traefik.http.routers.jellyfin.tls.certresolver=le - - traefik.http.services.jellyfin.loadbalancer.server.port=80 \ No newline at end of file + - traefik.http.services.jellyfin.loadbalancer.server.port=80 diff --git a/services/joplin/.env.example b/services/joplin/.env.example deleted file mode 100644 index 0103021..0000000 --- a/services/joplin/.env.example +++ /dev/null @@ -1,13 +0,0 @@ -HOST= -POSTGRES_PASSWORD= -POSTGRES_DATABASE= -POSTGRES_USER= -POSTGRES_PORT=5432 -MAILER_ENABLED=0 -MAILER_HOST= -MAILER_PORT= -MAILER_SECURITY= -MAILER_AUTH_USER= -MAILER_AUTH_PASSWORD= -MAILER_NOREPLY_NAME= -MAILER_NOREPLY_EMAIL= diff --git a/services/joplin/.env.template b/services/joplin/.env.template new file mode 100644 index 0000000..590285f --- /dev/null +++ b/services/joplin/.env.template @@ -0,0 +1,13 @@ +HOST=joplin.togetherdays.cz +POSTGRES_PASSWORD={{ '9562334a-3e01-4b07-9068-89e9b8f51b85' | secret }} +POSTGRES_DATABASE=joplin +POSTGRES_USER=joplin +POSTGRES_PORT=5432 +MAILER_ENABLED=1 +MAILER_HOST=smtp.seznam.cz +MAILER_PORT=465 +MAILER_SECURITY=tls +MAILER_AUTH_USER=mailer@togetherdays.cz +MAILER_AUTH_PASSWORD={{ 'bd699710-f430-4ec8-815b-2019fa94132f' | secret }} +MAILER_NOREPLY_NAME=no-reply +MAILER_NOREPLY_EMAIL=mailer@togetherdays.cz diff --git a/services/joplin/docker-compose.yml b/services/joplin/docker-compose.yml index c80de04..f8bcf4c 100644 --- a/services/joplin/docker-compose.yml +++ b/services/joplin/docker-compose.yml @@ -67,4 +67,4 @@ services: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DATABASE} - - POSTGRES_HOST=db \ No newline at end of file + - POSTGRES_HOST=db diff --git a/services/kanboard/.env.example b/services/kanboard/.env.example deleted file mode 100644 index af7e3a6..0000000 --- a/services/kanboard/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -HOST= -PLUGIN_INSTALLER=true \ No newline at end of file diff --git a/services/kanboard/.env.template b/services/kanboard/.env.template new file mode 100644 index 0000000..aded8a4 --- /dev/null +++ b/services/kanboard/.env.template @@ -0,0 +1,2 @@ +HOST=board.katuwoss.dev +PLUGIN_INSTALLER=true diff --git a/services/kanboard/docker-compose.yml b/services/kanboard/docker-compose.yml index c9fe819..c4a8e23 100644 --- a/services/kanboard/docker-compose.yml +++ b/services/kanboard/docker-compose.yml @@ -23,4 +23,4 @@ services: - traefik.http.routers.kanboard.rule=Host(`${HOST}`) - traefik.http.routers.kanboard.entrypoints=websecure - traefik.http.routers.kanboard.tls.certresolver=le - - traefik.http.services.kanboard.loadbalancer.server.port=80 \ No newline at end of file + - traefik.http.services.kanboard.loadbalancer.server.port=80 diff --git a/services/nginx/.env.example b/services/nginx/.env.example deleted file mode 100644 index 4bac020..0000000 --- a/services/nginx/.env.example +++ /dev/null @@ -1 +0,0 @@ -EMAIL= \ No newline at end of file diff --git a/services/nginx/.env.template b/services/nginx/.env.template new file mode 100644 index 0000000..f19b5c9 --- /dev/null +++ b/services/nginx/.env.template @@ -0,0 +1 @@ +EMAIL=kropikuba@gmail.com diff --git a/services/nodered/.env.example b/services/nodered/.env.example deleted file mode 100644 index e8ea7bc..0000000 --- a/services/nodered/.env.example +++ /dev/null @@ -1 +0,0 @@ -HOST= \ No newline at end of file diff --git a/services/nodered/.env.template b/services/nodered/.env.template new file mode 100644 index 0000000..3dd7f5d --- /dev/null +++ b/services/nodered/.env.template @@ -0,0 +1 @@ +HOST=nodered.katuwoss.dev diff --git a/services/nodered/docker-compose.yml b/services/nodered/docker-compose.yml index 179ff61..65cb3e2 100644 --- a/services/nodered/docker-compose.yml +++ b/services/nodered/docker-compose.yml @@ -20,4 +20,4 @@ services: - traefik.http.routers.nodered.rule=Host(`${HOST}`) - traefik.http.routers.nodered.entrypoints=websecure - traefik.http.routers.nodered.tls.certresolver=le - - traefik.http.services.nodered.loadbalancer.server.port=1880 \ No newline at end of file + - traefik.http.services.nodered.loadbalancer.server.port=1880 diff --git a/services/ntfy/.env.example b/services/ntfy/.env.example deleted file mode 100644 index e8ea7bc..0000000 --- a/services/ntfy/.env.example +++ /dev/null @@ -1 +0,0 @@ -HOST= \ No newline at end of file diff --git a/services/ntfy/.env.template b/services/ntfy/.env.template new file mode 100644 index 0000000..bda290a --- /dev/null +++ b/services/ntfy/.env.template @@ -0,0 +1 @@ +HOST=ntfy.katuwoss.dev diff --git a/services/ntfy/docker-compose.yml b/services/ntfy/docker-compose.yml index 19e1f1d..4e0f309 100644 --- a/services/ntfy/docker-compose.yml +++ b/services/ntfy/docker-compose.yml @@ -29,4 +29,4 @@ services: - traefik.http.routers.ntfy.rule=Host(`${HOST}`) - traefik.http.routers.ntfy.entrypoints=websecure - traefik.http.routers.ntfy.tls.certresolver=le - - traefik.http.services.ntfy.loadbalancer.server.port=80 \ No newline at end of file + - traefik.http.services.ntfy.loadbalancer.server.port=80 diff --git a/services/photoprism/.env.template b/services/photoprism/.env.template new file mode 100644 index 0000000..418d044 --- /dev/null +++ b/services/photoprism/.env.template @@ -0,0 +1,3 @@ +ENTRYPOINTS=web +HOST=photoprism.togetherdays.cz +MAIN_DIR=/mnt/data diff --git a/services/photoprism/.env_file.example b/services/photoprism/.env_file.example deleted file mode 100644 index e39995b..0000000 --- a/services/photoprism/.env_file.example +++ /dev/null @@ -1,31 +0,0 @@ -PHOTOPRISM_ADMIN_USER=admin # admin login username -PHOTOPRISM_ADMIN_PASSWORD=insecure # initial admin password (8-72 characters) -PHOTOPRISM_AUTH_MODE=password # authentication mode (public, password) -PHOTOPRISM_SITE_URL=https://localhost:2342/ # server URL in the format http(s)://domain.name(:port)/(path) -PHOTOPRISM_DISABLE_TLS=false # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available -PHOTOPRISM_DEFAULT_TLS=true # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available -PHOTOPRISM_ORIGINALS_LIMIT=5000 # file size limit for originals in MB (increase for high-res video) -PHOTOPRISM_HTTP_COMPRESSION=gzip # improves transfer speed and bandwidth utilization (none or gzip) -PHOTOPRISM_LOG_LEVEL=info # log level=trace, debug, info, warning, error, fatal, or panic -PHOTOPRISM_READONLY=false # do not modify originals directory (reduced functionality) -PHOTOPRISM_EXPERIMENTAL=false # enables experimental features -PHOTOPRISM_DISABLE_CHOWN=false # disables updating storage permissions via chmod and chown on startup -PHOTOPRISM_DISABLE_WEBDAV=false # disables built-in WebDAV server -PHOTOPRISM_DISABLE_SETTINGS=false # disables settings UI and API -PHOTOPRISM_DISABLE_TENSORFLOW=false # disables all features depending on TensorFlow -PHOTOPRISM_DISABLE_FACES=false # disables face detection and recognition (requires TensorFlow) -PHOTOPRISM_DISABLE_CLASSIFICATION=false # disables image classification (requires TensorFlow) -PHOTOPRISM_DISABLE_VECTORS=false # disables vector graphics support -PHOTOPRISM_DISABLE_RAW=false # disables indexing and conversion of RAW images -PHOTOPRISM_RAW_PRESETS=false # enables applying user presets when converting RAW images (reduces performance) -PHOTOPRISM_JPEG_QUALITY=85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) -PHOTOPRISM_DETECT_NSFW=false # automatically flags photos as private that MAY be offensive (requires TensorFlow) -PHOTOPRISM_UPLOAD_NSFW=true # allows uploads that MAY be offensive (no effect without TensorFlow) -PHOTOPRISM_DATABASE_DRIVER=mysql # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance -PHOTOPRISM_DATABASE_SERVER=mariadb:3306 # MariaDB or MySQL database server (hostname:port) -PHOTOPRISM_DATABASE_NAME=photoprism # MariaDB or MySQL database schema name -PHOTOPRISM_DATABASE_USER=photoprism # MariaDB or MySQL database user name -PHOTOPRISM_DATABASE_PASSWORD=insecure # MariaDB or MySQL database user password -PHOTOPRISM_SITE_CAPTION="AI-Powered Photos App" -PHOTOPRISM_SITE_DESCRIPTION= # meta site description -PHOTOPRISM_SITE_AUTHOR= # meta site author \ No newline at end of file diff --git a/services/photoprism/.env_file.template b/services/photoprism/.env_file.template new file mode 100644 index 0000000..158c5bd --- /dev/null +++ b/services/photoprism/.env_file.template @@ -0,0 +1,43 @@ +PHOTOPRISM_ADMIN_USER=admin +PHOTOPRISM_ADMIN_PASSWORD=insecure + +PHOTOPRISM_AUTH_MODE=password + +PHOTOPRISM_SITE_URL=https://photoprism.togetherdays.cz/ + +PHOTOPRISM_DISABLE_TLS=true +PHOTOPRISM_DEFAULT_TLS=true + +PHOTOPRISM_ORIGINALS_LIMIT=5000 + +PHOTOPRISM_HTTP_COMPRESSION=gzip + +PHOTOPRISM_LOG_LEVEL=info + +PHOTOPRISM_READONLY=false + +PHOTOPRISM_EXPERIMENTAL=false + +PHOTOPRISM_DISABLE_CHOWN=false +PHOTOPRISM_DISABLE_WEBDAV=false +PHOTOPRISM_DISABLE_SETTINGS=false +PHOTOPRISM_DISABLE_TENSORFLOW=false +PHOTOPRISM_DISABLE_FACES=false +PHOTOPRISM_DISABLE_CLASSIFICATION=false +PHOTOPRISM_DISABLE_VECTORS=false +PHOTOPRISM_DISABLE_RAW=false +PHOTOPRISM_RAW_PRESETS=false + +PHOTOPRISM_JPEG_QUALITY=85 +PHOTOPRISM_DETECT_NSFW=false +PHOTOPRISM_UPLOAD_NSFW=true + +PHOTOPRISM_DATABASE_DRIVER=mysql +PHOTOPRISM_DATABASE_SERVER=mariadb:3306 +PHOTOPRISM_DATABASE_NAME=photoprism +PHOTOPRISM_DATABASE_USER=photoprism +PHOTOPRISM_DATABASE_PASSWORD={{ 'f1a35ea8-bc34-4a89-ad23-037e6dfa10f0' | secret }} + +PHOTOPRISM_SITE_CAPTION=Gallery +PHOTOPRISM_SITE_DESCRIPTION= +PHOTOPRISM_SITE_AUTHOR="Jakub Kropáček" diff --git a/services/photoprism/docker-compose.yml b/services/photoprism/docker-compose.yml index 3ef9c56..f5883e4 100644 --- a/services/photoprism/docker-compose.yml +++ b/services/photoprism/docker-compose.yml @@ -51,4 +51,4 @@ services: MARIADB_DATABASE: "photoprism" MARIADB_USER: "photoprism" MARIADB_PASSWORD: "insecure" - MARIADB_ROOT_PASSWORD: "insecure" \ No newline at end of file + MARIADB_ROOT_PASSWORD: "insecure" diff --git a/services/traefik/.env.example b/services/traefik/.env.example deleted file mode 100644 index 4bac020..0000000 --- a/services/traefik/.env.example +++ /dev/null @@ -1 +0,0 @@ -EMAIL= \ No newline at end of file diff --git a/services/traefik/.env.template b/services/traefik/.env.template new file mode 100644 index 0000000..f19b5c9 --- /dev/null +++ b/services/traefik/.env.template @@ -0,0 +1 @@ +EMAIL=kropikuba@gmail.com diff --git a/services/uptime-kuma/.env.example b/services/uptime-kuma/.env.example deleted file mode 100644 index 1c021c5..0000000 --- a/services/uptime-kuma/.env.example +++ /dev/null @@ -1 +0,0 @@ -H0ST= \ No newline at end of file diff --git a/services/uptime-kuma/.env.template b/services/uptime-kuma/.env.template new file mode 100644 index 0000000..1262fa1 --- /dev/null +++ b/services/uptime-kuma/.env.template @@ -0,0 +1 @@ +HOST=status.katuwoss.dev diff --git a/services/usememos/.env.example b/services/usememos/.env.example deleted file mode 100644 index e8ea7bc..0000000 --- a/services/usememos/.env.example +++ /dev/null @@ -1 +0,0 @@ -HOST= \ No newline at end of file diff --git a/services/usememos/.env.template b/services/usememos/.env.template new file mode 100644 index 0000000..4be43ec --- /dev/null +++ b/services/usememos/.env.template @@ -0,0 +1 @@ +HOST=memos.katuwoss.dev diff --git a/services/usememos/docker-compose.yml b/services/usememos/docker-compose.yml index 1976b6b..e509486 100644 --- a/services/usememos/docker-compose.yml +++ b/services/usememos/docker-compose.yml @@ -19,4 +19,4 @@ services: - traefik.http.routers.memos.rule=Host(`${HOST}`) - traefik.http.routers.memos.entrypoints=websecure - traefik.http.routers.memos.tls.certresolver=le - - traefik.http.services.memos.loadbalancer.server.port=5230 \ No newline at end of file + - traefik.http.services.memos.loadbalancer.server.port=5230 diff --git a/tasks/ssh.py b/tasks/ssh.py index 49f8998..a9599bf 100644 --- a/tasks/ssh.py +++ b/tasks/ssh.py @@ -1,7 +1,8 @@ from pathlib import Path from pyinfra.api import deploy -from pyinfra.operations import files, systemd +from pyinfra.operations import files +from pyinfra.operations import systemd BASE_DIR = Path(__file__).parent.parent @@ -9,7 +10,7 @@ BASE_DIR = Path(__file__).parent.parent def deploy_ssh_keys(): files.file( name="Create authorized_keys file", - path="/root/.ssh/authorized_keys" + path="/root/.ssh/authorized_keys", ) for key_path in BASE_DIR.glob("pubkeys/*.pub"): @@ -18,7 +19,7 @@ def deploy_ssh_keys(): files.line( name=f"Adding key {key_path.name} to /root/.ssh/authorized_keys", path="/root/.ssh/authorized_keys", - line=key + line=key, ) @@ -27,13 +28,13 @@ def reconfigure_ssh(): name="Disable password login", path="/etc/ssh/sshd_config", line="PasswordAuthentication .+", - replace="PasswordAuthentication no" + replace="PasswordAuthentication no", ).changed systemd.service( name="Restart SSHD service", service="ssh", - restarted=config_changed + restarted=config_changed, ) diff --git a/tasks/tailscale.py b/tasks/tailscale.py index 2b77d49..64839fa 100644 --- a/tasks/tailscale.py +++ b/tasks/tailscale.py @@ -1,22 +1,25 @@ from pyinfra.api import deploy -from pyinfra.operations import server, apt +from pyinfra.operations import apt +from pyinfra.operations import server @deploy def deploy_tailscale(): server.shell( name="Install tailscale signing key", - commands=["curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg " - "| tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null 2>&1"] + commands=[ + "curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg " + "| tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null 2>&1", + ], ) apt.repo( name="Add tailscale repository", src="deb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] " "https://pkgs.tailscale.com/stable/debian bookworm main", - filename="tailscale" + filename="tailscale", ) apt.packages( name="Install tailscale", packages=["tailscale"], - update=True + update=True, ) diff --git a/tf/katuwoss.tf b/tf/katuwoss.tf index 11f155c..20bf83f 100644 --- a/tf/katuwoss.tf +++ b/tf/katuwoss.tf @@ -134,4 +134,3 @@ resource "cloudflare_record" "gh_pages_challenge" { value = "dddb8682db04afe1c97ef6ae3b89f2" zone_id = var.katuwoss_dev_zone_id } - diff --git a/tf/main.tf b/tf/main.tf index f828980..0ed4520 100644 --- a/tf/main.tf +++ b/tf/main.tf @@ -5,4 +5,4 @@ terraform { version = "~> 4" } } -} \ No newline at end of file +} diff --git a/tf/provider.tf b/tf/provider.tf index ed4bd38..344ab85 100644 --- a/tf/provider.tf +++ b/tf/provider.tf @@ -1,4 +1,3 @@ provider "cloudflare" { api_token = var.cloudflare_api_token } - diff --git a/tf/togetherdays.tf b/tf/togetherdays.tf index 39eced9..958a0a6 100644 --- a/tf/togetherdays.tf +++ b/tf/togetherdays.tf @@ -53,4 +53,3 @@ resource "cloudflare_record" "togetherdays_mail_primary" { value = "56096c829d5a2120.mx2.emailprofi.seznam.cz" zone_id = var.togetherdays_cz_zone_id } -