Compare commits
63 Commits
0944bc5266
...
notes/ejab
| Author | SHA1 | Date | |
|---|---|---|---|
|
d000d89409
|
|||
| 766030d716 | |||
|
3c436bb9f1
|
|||
|
d029d90214
|
|||
|
f8e5fd2f3e
|
|||
|
cab766c806
|
|||
|
5777a45f0a
|
|||
|
f23c37312e
|
|||
| cf1ef4f2f4 | |||
|
f65256d229
|
|||
|
2cc0ee5b8a
|
|||
|
10e8ba5569
|
|||
| 6c35a20b89 | |||
|
e3d9a50f09
|
|||
|
c4652ca2eb
|
|||
| 56440bfd89 | |||
|
abee2407bf
|
|||
| 0cef08fb7b | |||
|
f246f63594
|
|||
|
2dee25bf23
|
|||
|
a28d31b415
|
|||
| 0bf50bce2e | |||
|
6be99aa3de
|
|||
|
90bf66ada9
|
|||
|
32cfd6401f
|
|||
|
1124f25069
|
|||
| f34c7ecd9b | |||
| 8d149a475d | |||
|
905a67475b
|
|||
| 8251fa83ce | |||
|
0fa61a585e
|
|||
|
89f1790afc
|
|||
|
72ac8c6a84
|
|||
|
b1bb5d0625
|
|||
|
b470110fd4
|
|||
|
31b7ff9217
|
|||
|
d90a374811
|
|||
|
12cd14fff5
|
|||
|
b67d91077d
|
|||
|
070badfeb3
|
|||
|
4ce39738fd
|
|||
|
d35e57b90e
|
|||
|
2d8a1cebb1
|
|||
|
c8160e38c8
|
|||
| 67cd89b7b8 | |||
|
e4112a3626
|
|||
| 89813465b2 | |||
|
6106e627e2
|
|||
|
d8baa41c14
|
|||
| 8405b8df52 | |||
|
775f2275bb
|
|||
|
b4019b224b
|
|||
|
52841d8c53
|
|||
|
b9b97d5056
|
|||
| e5448aa85c | |||
|
4d1125ac2b
|
|||
|
3853f94ae0
|
|||
|
d1097c7688
|
|||
|
7949fd067c
|
|||
|
0726e58f7c
|
|||
|
fe581c348a
|
|||
|
af62078960
|
|||
|
9b4deff91e
|
@@ -38,6 +38,10 @@ Clone this repository, `cd` into it, and run:
|
|||||||
|
|
||||||
knife zero bootstrap ubuntu@zerotier-ip-address -x ubuntu --sudo --run-list "role[base],role[kvm_guest]" --secret-file .chef/encrypted_data_bag_secret
|
knife zero bootstrap ubuntu@zerotier-ip-address -x ubuntu --sudo --run-list "role[base],role[kvm_guest]" --secret-file .chef/encrypted_data_bag_secret
|
||||||
|
|
||||||
|
### Bootstrap a new VM with environment and role/app (postgres replica as example)
|
||||||
|
|
||||||
|
knife zero bootstrap ubuntu@10.1.1.134 -x ubuntu --sudo --environment production --run-list "role[base],role[kvm_guest],role[postgresql_replica]" --secret-file .chef/encrypted_data_bag_secret
|
||||||
|
|
||||||
### Run Chef Zero on a host server
|
### Run Chef Zero on a host server
|
||||||
|
|
||||||
knife zero converge -p2222 name:server-name.kosmos.org
|
knife zero converge -p2222 name:server-name.kosmos.org
|
||||||
|
|||||||
4
clients/garage-10.json
Normal file
4
clients/garage-10.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "garage-10",
|
||||||
|
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2+3Wo+KkXVJCOX1SxT9\nSdwKXgPbCDM3EI9uwoxhMxQfRyN53dxIsBDsQUVOIe1Z8yqm4FenMQlNmeDR+QLE\nvNFf1fisinW+D9VVRm+CjcJy96i/Dyt786Z6YRrDlB860HxCbfTL2Zv5BRtbyIKg\nhz5gO+9PMEpPVR2ij9iue4K6jbM1AAL2ia/P6zDWLJqeIzUocCeHV5N0Z3jXH6qr\nf444v78x35MMJ+3tg5h95SU1/PDCpdSTct4uHEuKIosiN7p4DlYMoM5iSyvVoujr\nflRQPEpGzS9qEt3rDo/F4ltzYMx6bf1tB/0QaBKD+zwPZWTTwf61tSBo5/NkGvJc\nFQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||||
|
}
|
||||||
4
clients/garage-11.json
Normal file
4
clients/garage-11.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "garage-11",
|
||||||
|
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzfZcNEQojtmaogd9vGP/\nMsVPhAOlQ4kxKgrUas+p+XT7lXRan6b3M8UZEleIaL1HWsjSVwtFWRnNl8kg8rF8\nNEkLeOX8kHf7IoXDFOQa2TXanY8tSqrfh9/heFunt4Q3DluVt7S3bBdwukbDXm/n\nXJS2EQP33eJT4reL6FpVR0oVlFCzI3Vmf7ieSHIBXrbXy7AIvGC2+NVXvQle6pqp\nx0rqU6Wc6ef/VtIv+vK3YFnt9ue3tC63mexyeNKgRYf1YjDx61wo2bOY2t8rqN8y\nHeZ3dmAN8/Vwjk5VGnZqK7kRQ92G4IcE+mEp7MuwXcLqQ9WB960o+evay+o1R5JS\nhwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||||
|
}
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "garage-4",
|
|
||||||
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8it7QtT6zDiJJqlyHKfQ\nLqwu6bLblD15WWxlUSiOdhz3njWDv1BIDCAdkCR3HAXgxvk8sMj9QkvWS7u1+bc4\nxvHrY4Tgfg+Tk1h3gGa7ukll8s1WLIbGjj89vrK8PFr4iuDqRytYRMmcdMsNzPkS\nKcsOjFYWGV7KM/OwoQGVIOUPB+WtkrFAvNkXtIU6Wd5orzFMjt/9DPF2aO7QegL8\nG1mQmXcPGl9NSDUXptn/kzFKm/p4n7pjy6OypFT192ak7OA/s+CvQlaVE2tb/M3c\ne4J6A+PInV5AGKY6BxI3QRQLZIlqE0FXawFKr1iRU4JP4tVnICXZqy+SDXQU1zar\nTQIDAQAB\n-----END PUBLIC KEY-----\n"
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "garage-5",
|
|
||||||
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnJxLFOBbml94W/GAe7nm\ntZs1Ziy8IbqXySsm8bSwWhRMQ8UuseqQLG30R3Q5X5AoJbtNfd26l63qLtP2fFtL\n5km9dV+2FoIJWFetl8Wzr7CaLYAiNzTQSFHlV7+6DKmPMDcJ63GKrFR77vkSGOG6\nOWL1bJy5BOaClp/sKL/0WQ0+mRbTP6RCQ2eI+46clAg702SenBU6Nz9HDm+teKN7\nYlP1CvzXgfgfpDOsat7wGn5+oKcmKavZxcdn8bt5jRpg8v3JezaZIjMXt7XcNS4n\n0F4XO/efnZE5B5SN68j4BpD8N79zJw4HlRIGP+RaYv2qLtBeWgLHCCs9wXQXfj6b\nLwIDAQAB\n-----END PUBLIC KEY-----\n"
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "garage-6",
|
|
||||||
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwasYgWLM8ShvirFiKRE6\nGWqc3pMlvcrk4YnWAUW5Y/H26EnyexxWNfnwlEcq8thJ3M3hs7zkoF3Yk4uqX869\n4/niYqXwYgeE1K3gzLp4K1+w3yVupYAFVFStVEHJyuMlLJ+ulDEGvNdQDuIfw7+E\nr6DcDLa1o92Eo0wL1ihYyMilduH0LdFTixL+tEBXbbPWBa3RDJJCFsRF1+UC6hAH\nzmaWL661Gdzdabxjm/FlGUYkdbDqeInZq/1GMQqv+9/DcNRkWA9H7i4Ykrfpx4/2\nRZ8xtx/DbnJVB1zYoORygFMMAkTu5E+R8ropeI7Wi77Yq0S7laiRlYQYQml3x9ak\nzQIDAQAB\n-----END PUBLIC KEY-----\n"
|
|
||||||
}
|
|
||||||
4
clients/garage-9.json
Normal file
4
clients/garage-9.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "garage-9",
|
||||||
|
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnMHzKE8JBrsQkmRDeMjX\n71mBzvRzNM90cwA8xtvIkXesdTyGqohX9k/PJbCY5ySGK9PpMaYDPVAnwnUP8LFQ\n3G98aSbLxUjqU/PBzRsnWpihehr05uz9zYcNFzr4LTNvGQZsq47nN9Tk+LG3zHP7\nAZViv2mJ4ZRnukXf6KHlyoVvhuTu+tiBM8QzjTF97iP/aguNPzYHmrecy9Uf5bSA\nZrbNZT+ayxtgswC2OclhRucx7XLSuHXtpwFqsQzSAhiX1aQ3wwCyH9WJtVwpfUsE\nlxTjcQiSM9aPZ8iSC0shpBaKD1j3iF/2K2Jk+88++zMhJJPLermvaJxzsdePgvyk\nKQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||||
|
}
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "postgres-5",
|
|
||||||
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvXZv6Gk+dhIVkTXH9hJ1\nt2oqsMSLmTUj71uPN+4j0rxCQriXa095Nle9ifJAxfwzQyKEpWKyZd1Hpyye6bL1\nwgWATZ/u5ZS4B63NhRFyDxgPlHWBBohaZBN42zeq0Y0PNGHPVGDH/zFDrpP22Q9Q\nYScsyXTauE/Yf8a/rKR5jdnoVsVVMxk0LHxka8FcM2cqVsDAcK7GqIG6epqNFY8P\nUb1P+mVxRwnkzvf1VtG212ezV/yw9uiQcUkHS+JwZMAgbC34k9iDyRmk6l4sj/Zk\nNem20ImMqdDzsrX8zEe21K+KNvpejPH9fxaNCwR8W+woBMMzqD3I7P9PbLjc70Rx\nRwIDAQAB\n-----END PUBLIC KEY-----\n"
|
|
||||||
}
|
|
||||||
4
clients/postgres-7.json
Normal file
4
clients/postgres-7.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "postgres-7",
|
||||||
|
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArraIm6mXi0qgK4oWDs2I\nOIx+g/LPnfRd5aBXhoHcekGiJKttQTi5dRdN4+T6qVEC2h4Cc9qN47h2TZPLDh/M\neIZvu0AyicpectzXf6DtDZh0hFCnv47RDi9927op9tjMXk0SV1tLel7MN0dawATw\ny0vQkkr/5a3ZdiP4dFv+bdfVrj+Tuh85BYPVyX2mxq9F7Efxrt6rzVBiqr6uJLUY\nStpeB3CCalC4zQApKX2xrdtr2k8aJbqC6C//LiKbb7VKn+ZuZJ32L/+9HDEzQoFC\no0ZZPMhfnjcU+iSHYZuPMTJTNbwgRuOgpn9O8kZ239qYc59z7HEXwwWiYPDevbiM\nCQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||||
|
}
|
||||||
4
clients/postgres-8.json
Normal file
4
clients/postgres-8.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "postgres-8",
|
||||||
|
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx88DgM/x1UbKRzgPexXE\nSyfrAsqaDVjqZz7yF3tqAc9A52Ol0KOM6NESoPWBVMbS86WtAjBcMHcOoQBJ+ovp\nXcjNlRtO1Il6/d4uCRr4CEDX+yeS0Qrt0SOORnoTbVlkq9VlVljyCmxk8VBCILzk\ndHvFr62mahMy6vOEcpCQgCwYE3ISH2jlTDz2agoK/CjIyyqFTlB1N7mJVGLrJdcA\nA2JOxDRE8HqOdpY7bHcHj4uyMWaKuM3zxXK04lhrvuPRfJUhXgsK9r5jeTEa8407\nqV9K+mB17R1dBeHmWEPDRt02HELe2SUjYmlmyVX73H2mWKDLBFpAFjOfz86CJ6jf\nDQIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||||
|
}
|
||||||
@@ -1,72 +1,93 @@
|
|||||||
{
|
{
|
||||||
"id": "akkounts",
|
"id": "akkounts",
|
||||||
"postgresql_username": {
|
"rails_master_key": {
|
||||||
"encrypted_data": "bDlOkEmhvMgyVzPeTNUzYnzRLf3T9cc0cDxt\n",
|
"encrypted_data": "q/0BtGuFZJQhw+iG4ZmFG12DPaWQDGTb/nCmRoxOnsACkANqMv/zZ39CoNFe\nLPtZiItY\n",
|
||||||
"iv": "GCCUoqU5pxQ7fGkv\n",
|
"iv": "JV8R0iu6TrqcZRxL\n",
|
||||||
"auth_tag": "Q7mrSHIBluMe3CGVmoR86Q==\n",
|
"auth_tag": "YxZIhEUnrd3XrwR6f9wO4A==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"postgresql_password": {
|
"rails_secret_key_base": {
|
||||||
"encrypted_data": "wD0HtdsNe/hl4ZaOy8hyr2k4z8TXQrrSja3KNVE47w==\n",
|
"encrypted_data": "JmDQew3+OR6+yJ1xErwXeTn6jw8N2HwTc9yvAVJ3G+7w1s3N7rKDM6+M50ez\n2zP4Lm/eXzH4WTsTZlQcodlyNpi66pvUCGAkNM36rwTN5yvnhqPUmuSQi7AG\nDTBronBwr9ENvwA/gRuugyyhrRB1iuStpzpYKCMhZ2ae9Mrxdux0+ezfSLn4\nuP22uUrEqdQ/BWsW\n",
|
||||||
"iv": "tb5yz8WDer0CsGvJ\n",
|
"iv": "U/+YncCk13U6bYMz\n",
|
||||||
"auth_tag": "/+K2anuCff/6M7Pu70Smqw==\n",
|
"auth_tag": "2wPYJ/uVPv4jLKpAW/x6sw==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
|
"rails_encryption_primary_key": {
|
||||||
|
"encrypted_data": "u/7z91Og/2eM7PWi2JWYAQMhYX4S5+bMMeVpkFPu778Gqj6Td9pagsWIak/d\nb7AU1zjF\n",
|
||||||
|
"iv": "wYhrJWcuWbY8yo8S\n",
|
||||||
|
"auth_tag": "WEoEdNy6VBvB2d5gb8DTXw==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
|
"rails_encryption_key_derivation_salt": {
|
||||||
|
"encrypted_data": "noOwTZuxfhsH94bjOT9rWCKS9rb3wAoXELGrc4nJZeNrb/B9XnOLTuK/wen8\nfmtoym0P\n",
|
||||||
|
"iv": "jiFWs3VXhJdQBNqk\n",
|
||||||
|
"auth_tag": "XDpJFgadYp7LyRqU7SO+Fg==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
|
"postgresql": {
|
||||||
|
"encrypted_data": "Xorg8R8COxE/Swivu8MqZiwstD6rD+8FmgDx70pFscZ/CTb6WQRpyqGSrGZt\nZ7oL9WrqZs+mQgBb30odU+Sgdr6x\n",
|
||||||
|
"iv": "6QWZc3+MY0hBCc/s\n",
|
||||||
|
"auth_tag": "ZM+7OYyx5E9PciNG2OILhg==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"encrypted_data": "mr2Z7hXF1GOn8RmqeZMMdaUcmiVP4ZeKtTX6RYW1cR+FQiUwoITwTPBE9XUx\n2cqZ9Mcd8uJicmf9vd+PfwPtRtoZFwqHQ4LDRFLW64hBZyiEkZWxWW+HzgPr\n",
|
||||||
|
"iv": "k1AkyEplnJ4IZO1Z\n",
|
||||||
|
"auth_tag": "zAOcrPex3VLDfRFq38n7fA==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"sentry_dsn": {
|
"sentry_dsn": {
|
||||||
"encrypted_data": "jCz681x0WVixHYZUb62TO+1cgyJMiJ2UMqWcaztx57yDBOIiKW3oSZjuXdhP\n9WCesfXQF/lgzITZno3IKDqzlKjWgbGLC75y8FLguxidCHI=\n",
|
"encrypted_data": "51cAERaRBCRg/sMb5c13EcnJzsz6VEf7jx6X3ooUSzm9wHoEfC5Hs/qakr/D\nqm9x3s3aGURRzyLUIEoe9jCohGguh6ehrXYVrun0B6pghVU=\n",
|
||||||
"iv": "IRNOzN/hLwg1iqax\n",
|
"iv": "hJsiiW6dFQMEQ+2p\n",
|
||||||
"auth_tag": "eg9dWnEK04JDb94e4CFa9Q==\n",
|
"auth_tag": "TOIahNrUhhsdQGlzp6UV5g==\n",
|
||||||
"version": 3,
|
|
||||||
"cipher": "aes-256-gcm"
|
|
||||||
},
|
|
||||||
"rails_master_key": {
|
|
||||||
"encrypted_data": "nUB77VLRp41rluH7hLBwQqPtnh/HsmfLr2VbcIZHWawL3o2TGuY+mj648f9L\n7XsEpgqY\n",
|
|
||||||
"iv": "fpdbDitqTRHxEKiv\n",
|
|
||||||
"auth_tag": "I44fn8Ott3L/Y5LYr56U/Q==\n",
|
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"discourse_connect_secret": {
|
"discourse_connect_secret": {
|
||||||
"encrypted_data": "ENtMn+1XTVFmdEZw7LU6WGoMbSZY654ggm3vPACGfFgqo6r0LhG60c5OTdqv\nZvT5/Q==\n",
|
"encrypted_data": "pvKcwuZgUJsAvClQ4V0BwhwEg09EUEWVxoSx+mFlfG1KpvZE4Cu3u3PalPSD\nldyKsw==\n",
|
||||||
"iv": "bL1BmvRhgxFqSM1P\n",
|
"iv": "ED85d6PKyaKB3Wlv\n",
|
||||||
"auth_tag": "sEBZzGWwwYFHn+4B4SsyCA==\n",
|
"auth_tag": "XVCU/WigC97tNe0bUK6okQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"lndhub_admin_token": {
|
"lndhub_admin_token": {
|
||||||
"encrypted_data": "4LPGFoARzI8UYnsJPIk8sax/rAA16pUULEZWn86e2C7L\n",
|
"encrypted_data": "LvCgahQblsKOxK9iNbwDd31atBfemVppHqV7s3K/sR4j\n",
|
||||||
"iv": "nvjXrOwgfgutwEVw\n",
|
"iv": "zObzh2jEsqXk2vD2\n",
|
||||||
"auth_tag": "A89RUf1sdcS3FVscNPWYLg==\n",
|
"auth_tag": "n9m/sBYBfzggwQLWrGpR2Q==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"btcpay_auth_token": {
|
"btcpay_auth_token": {
|
||||||
"encrypted_data": "ky5iWYF06os0Ek6vIRzWqMTekqJhCOh/Q9DTDIeKhSyk8TnT3O71lCNEt1F5\nXCNq6ux3V6oyHVLWj0o=\n",
|
"encrypted_data": "M4kGd6+jresm90nWrJG25mX6rfhaU+VlJlIVd/IjOAUsDABryyulJul3GZFh\nFPSI4uEhgIWtn56I0bA=\n",
|
||||||
"iv": "zk6WnxsY89oNW1F9\n",
|
"iv": "hvqHm7A/YfUOJwRJ\n",
|
||||||
"auth_tag": "FAIMXKvQ1T7QKezVSNJbwQ==\n",
|
"auth_tag": "DhtT6IeixD1MSRX+D7JxZA==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"s3_access_key": {
|
"s3_access_key": {
|
||||||
"encrypted_data": "KfhfEGwPjOonlz6rpnNTinXFPqX/sIbqQn/aby0UDi/G/7cvEcOiNcCkfuSz\n",
|
"encrypted_data": "FPRpLZoIbLcVWPJhOlX7ZeXGv6TZIWYAD+BKTsJOyOHxDG3eRULqQc89cGWi\n",
|
||||||
"iv": "Q3rg06v6K9pUDLDY\n",
|
"iv": "f9WiiGLmDxtygp60\n",
|
||||||
"auth_tag": "G5ugdlJ896KtYtObKLclJA==\n",
|
"auth_tag": "lGnq4itmByuF/Yp20/6coQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"s3_secret_key": {
|
"s3_secret_key": {
|
||||||
"encrypted_data": "N8s1OoDrYXHjqSydQA0kY7dd68Aelq4+/cgmJlYfP92u4YA17V4TR7fsvQZL\nkqjuUSClNYPc0XiCwf/5gxVirE9AO6OmmvSV7lUyu4hcEY6unrU=\n",
|
"encrypted_data": "JnnwISbHJ+d7JZB/C0NH0fb8p+bDSwoq5t5knSi+bSTltSxKcq6PRX9K6bov\nEbo0GTdWePbuc5NCsyYxfrkzCtpLXTIxeCROtinRmFIgMFNwaOA=\n",
|
||||||
"iv": "bXzIVWnX6V0P6PRb\n",
|
"iv": "pKPCaANDqGtbFV3V\n",
|
||||||
"auth_tag": "1EOjCfsX9P6ETjUsgBvBsA==\n",
|
"auth_tag": "S//hn2HOhuZH8+UfCNBWDg==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"nostr_private_key": {
|
"nostr_private_key": {
|
||||||
"encrypted_data": "Sf8PEyQ0sqcgxddSlIDxLOVzPjOkTFObsYuTgcxkbEV7igrati4e8QVVUEBD\n1yoLJXelp8jlCr28Ectci29jc53gYSMTLSQsw97uYas2R0dGCqQ=\n",
|
"encrypted_data": "AKfFiLow+veDyEWBwmCDuLerT3l+o2aJUCeHg2mZZIyoH4oeo/9crZwIdjBn\n70reouqnHNG9mBHuO/+IPGfj53mHLo+oGHh+6LkL3ImI4MFBofY=\n",
|
||||||
"iv": "+1CIUyvIUOveLrY4\n",
|
"iv": "bPlOKk2qkJAzdKf+\n",
|
||||||
"auth_tag": "GDqS+IuAIfMBmHIeFXaV7A==\n",
|
"auth_tag": "VIp1IOjBGatn2MN5LHVymg==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
{
|
{
|
||||||
"id": "gandi_api",
|
"id": "gandi_api",
|
||||||
"key": {
|
"key": {
|
||||||
"encrypted_data": "d3/rJMX6B9GuzUt0/mIk/lgQ3qGyQdbNXH6UEm3ZX7DeSl+rbW9FPJCRWg==\n",
|
"encrypted_data": "lU7/xYTmP5Sb6SsK5TNNIyegWozzBtUzpg7oDdl6gcz9FEMmG2ft0Ljh5Q==\n",
|
||||||
"iv": "15YVAYla7PqqVOab\n",
|
"iv": "EZPQD3C+wsP/mBhF\n",
|
||||||
"auth_tag": "xQSq+ld6SDOAER07N4ZkUQ==\n",
|
"auth_tag": "vF9E8Pj4Z8quJJdOMg/QTw==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"access_token": {
|
"access_token": {
|
||||||
"encrypted_data": "geQwcNosiJZmqbbMpD/I+a2yueBzpV6C8Rb7vrCD8kR161ZRjvqLe+g/1XpT\n2/65wKYDMTrdto1I030=\n",
|
"encrypted_data": "1Uw69JkNrmb8LU/qssuod1SlqxxrWR7TJQZeeivRrNzrMIVTEW/1uwJIYL6b\nM4GeeYl9lIRlMMmLBkc=\n",
|
||||||
"iv": "1sj58eyooOZ8FTYn\n",
|
"iv": "cc1GJKu6Cf4DkIgX\n",
|
||||||
"auth_tag": "yBNfgWXaToc06VDLly/HUw==\n",
|
"auth_tag": "ERem4S7ozG695kjvWIMghw==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"domains": {
|
"domains": {
|
||||||
"encrypted_data": "p5rIQTyCE+0d4HIuA4GKEAFekh7qEC4xe9Rm/kP0DyzY83FO0/4uKIvYoZRB\n",
|
"encrypted_data": "scZ5blsSjs54DlitR7KZ3enLbyceOR5q0wjHw1golQ==\n",
|
||||||
"iv": "LWlx98NSS1/ngCH1\n",
|
"iv": "oDcHm7shAzW97b4t\n",
|
||||||
"auth_tag": "FID+x/LjTZ3cgQV5U2xZLA==\n",
|
"auth_tag": "62Zais9yf68SwmZRsmZ3hw==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
}
|
}
|
||||||
|
|||||||
10
data_bags/credentials/kosmos-rs.json
Normal file
10
data_bags/credentials/kosmos-rs.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "kosmos-rs",
|
||||||
|
"auth_tokens": {
|
||||||
|
"encrypted_data": "fiznpRw7VKlm232+U6XV1rqkAf2Z8CpoD8KyvuvOH2JniaymlcTHgazGWQ8s\nGeqK4RU9l4d29e9i+Mh0k4vnhO4q\n",
|
||||||
|
"iv": "SvurcL2oNSNWjlxp\n",
|
||||||
|
"auth_tag": "JLQ7vGXAuYYJpLEpL6C+Rw==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,30 +1,30 @@
|
|||||||
{
|
{
|
||||||
"id": "lndhub-go",
|
"id": "lndhub-go",
|
||||||
"jwt_secret": {
|
"jwt_secret": {
|
||||||
"encrypted_data": "3T4JYnoISKXCnatCBeLCXyE8wVjzphw5/JU5A0vHfQ2xSDZreIRQ\n",
|
"encrypted_data": "lJsKBTCRzI83xmRHXzpnuRH/4cuMOR+Rd+SBU50G9HdibadIEDhS\n",
|
||||||
"iv": "bGQZjCk6FtD/hqVj\n",
|
"iv": "f/SvsWtZIYOVc54X\n",
|
||||||
"auth_tag": "CS87+UK1ZIFMiNcNaoyO6w==\n",
|
"auth_tag": "YlJ78EuJbcPfjCPc2eH+ug==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"postgresql_password": {
|
"postgresql_password": {
|
||||||
"encrypted_data": "u8kf/6WdSTzyIz2kF+24JgOPLndWH2WmTFZ3CToJsnay\n",
|
"encrypted_data": "aT0yNlWjvk/0S4z2kZB4Ye1u/ngk5J6fGPbwZSfdq6cy\n",
|
||||||
"iv": "KqLtV2UuaAzJx7C8\n",
|
"iv": "OgUttF4LlSrL/7gH\n",
|
||||||
"auth_tag": "3aqx45+epb2NFkNfOfG89A==\n",
|
"auth_tag": "pcbbGqbQ2RjU+i9dt8c3OQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"admin_token": {
|
"admin_token": {
|
||||||
"encrypted_data": "Z737fXqRE9JHfunRhc2GG281dFFN1bvBvTzTDzl/Vb8O\n",
|
"encrypted_data": "I9EsqCCxMIw+fX6sfu6KX8B5fJj9DX5Y4tbX30jdnmxr\n",
|
||||||
"iv": "oKLQJbD67tiz2235\n",
|
"iv": "vnERvIWYInO6+Y8q\n",
|
||||||
"auth_tag": "SlVIqC9d9SRoO78M7cBjTw==\n",
|
"auth_tag": "gO+MprZUQgPEWJQUmSF1sA==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"sentry_dsn": {
|
"sentry_dsn": {
|
||||||
"encrypted_data": "gmDHGDWkTIvaXjcWMs1dnKnbqtsADPJ2mLmWw8Idj6RVevU5CabjvviAxEo1\n3hs2LWuObumRSCQt2QKap191uMq3CL2+da53hbsv+JUkxl4=\n",
|
"encrypted_data": "+sUXWgl6dXpA1/0FqjKC3Jnl54aor6gtM+19EM/NsHwg4qu672YnSgxV+c9x\nHM3JZBYxBYvJ+HYGAvMmhlGvaOOEIvLmFUpCCJeVUXR32S8=\n",
|
||||||
"iv": "Yt0fSsxL4SNicwUY\n",
|
"iv": "82+DzAnHiptaX7sO\n",
|
||||||
"auth_tag": "j7BWbcNnymHHMNTADWmCNw==\n",
|
"auth_tag": "CDx44iRBVhSIF8DOxb2c+w==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,93 +1,114 @@
|
|||||||
{
|
{
|
||||||
"id": "mastodon",
|
"id": "mastodon",
|
||||||
|
"active_record_encryption_deterministic_key": {
|
||||||
|
"encrypted_data": "2ik8hqK7wrtxyC73DLI8FNezZiWp2rdjwaWZkTUFRj+iwvpSrGVEwMx6uxDI\nWa7zF3p/\n",
|
||||||
|
"iv": "XMp6wqwzStXZx+F3\n",
|
||||||
|
"auth_tag": "vloJOLqEcghfQXOYohVVlg==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
|
"active_record_encryption_key_derivation_salt": {
|
||||||
|
"encrypted_data": "Nq/rHayMYmT/82k3tJUKU8YTvDKUKLoK204aT0CMGZertZaAD3dtA9AkprrA\nPK0D9CdL\n",
|
||||||
|
"iv": "tn9C+igusYMH6GyM\n",
|
||||||
|
"auth_tag": "+ReZRNrfpl6ZDwYQpwm6dw==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
|
"active_record_encryption_primary_key": {
|
||||||
|
"encrypted_data": "UEDMuKHgZDBhpB9BwbPmtdmIDWHyS9/bSzaEbtTRvLcV8dGOE5q9lDVIIsQp\n2HE0c92p\n",
|
||||||
|
"iv": "tnB0pQ3OGDne3mN/\n",
|
||||||
|
"auth_tag": "kt234ms+bmcxJj/+FH/72Q==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
},
|
||||||
"paperclip_secret": {
|
"paperclip_secret": {
|
||||||
"encrypted_data": "VJn4Yd2N7qFV+nWXPjPA8Y2KEXL/gZs2gK5E3DZZc9ogFXV7RtpDtq+NKGJU\ndpR8ohtEZvkyC+iBkMAlnS1sSVKiLdQ1xXvbzkj04mYgjnLvwsZ19uVpBGwR\nt/DON7Bhe5Fw+OyrBQksqNcZQSpB9sMBfgA1IgCpdVGHQ8PmkMbFTaZZYcoF\n7gg3yUw5/0t3vRdL\n",
|
"encrypted_data": "AlsnNTRF6GEyHjMHnC4VdzF4swMlppz/Gcp1xr0OuMEgQiOcW1oSZjDRZCRV\nmuGqZXZx64wqZyzTsJZ6ayCLsmWlPq6L21odHWyO+P/C5ubenSXnuCjpUn3/\nHs8WLX3kwVmqCRnVgDl2vEZ5H4XedSLr7R7YM7gQkM0UX4muMDWWnOTR8/x/\ni1ecwBY5RjdewwyR\n",
|
||||||
"iv": "X5atp/KaIurfln/u\n",
|
"iv": "RWiLePhFyPekYSl9\n",
|
||||||
"auth_tag": "mVnBoUb5HwhXNYUddJbq8Q==\n",
|
"auth_tag": "sUq4ZX9CFKPbwDyuKQfNLQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"secret_key_base": {
|
"secret_key_base": {
|
||||||
"encrypted_data": "d0sNREFhzQEJhkRzielbCNBJOVAdfThv7zcYTZ1vFZ20i/mzB9GWW2nb+1yn\nNFjAq8wCLpLXn9n3FClE+WOqnAw0jwTlyScRM5lzjKI5SxHKkBQHGyFs2AF8\nqFjEvpiqxhjsc4kNOJGO8DdcyHuulXyaO9fJg8HDnU1ov1vSSuTc0ABKgycY\nMq/Xt10UXnhP8cPw\n",
|
"encrypted_data": "K5CmIXFa9mS4/dODBQAN9Bw0SFpbLiZAB8ewiYpkB8NDXP6X/BX8aDjW2Y4F\ncMvpFyiFldRBhrh1MSKTVYQEoJ3JhlNL9HCdPsAYbBEW70AuEBpHvOtD5OxH\nqgbH4Reuk6JX5AI8SwDD3zGrdT12mTFVNgSujzuZMvpi1Sro2HtRGAkjmnaa\nMGKrBV21O1CREJJg\n",
|
||||||
"iv": "HFT7fdGQ2KRJ2NFy\n",
|
"iv": "/yMMmz1YtKIs5HSd\n",
|
||||||
"auth_tag": "C55JT2msLQCoI+09VKf+Jw==\n",
|
"auth_tag": "WXgIVWjIdbMFlJhTD5J0JQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"otp_secret": {
|
"otp_secret": {
|
||||||
"encrypted_data": "1iH7mUkaUzyn9dfDwMdiJ8X059qWSUO3DqivsOFfI1f44nMnzllaYPu6nh8O\nNLNCOzvsSAonhhaq1X+foOdyPIG2mGhE/juKveDD57/AdZAayHWsbsQlPC4l\nwdShz/ANrq0YZ/zOhpT2sZj1TZavW+S+JlxJFX2kP24D4dUzwG0vNj7522+Q\n9NAApJdUte1ZYF/b\n",
|
"encrypted_data": "OPLnYRySSIDOcVHy2A5V+pCrz9zVIPjdpAGmCdgQkXtJfsS9NzNtxOPwrXo6\nuQlV9iPjr1Y9ljGKYytbF0fPgAa5q6Z1oHMY9vOGs/LGKj8wHDmIvxQ+Gil1\nC+dZEePmqGaySlNSB/gNzcFIvjBH3mDxHJJe9hDxSv5miNS9l9f3UvQeLP2M\nU7/aHKagL9ZHOp/d\n",
|
||||||
"iv": "00/vs5zTdoC19+pS\n",
|
"iv": "wqJBLdZhJ7M/KRG9\n",
|
||||||
"auth_tag": "3cjYqebMshnmWkQ3SdRcCQ==\n",
|
"auth_tag": "dv5YyZszZCrRnTleaiGd4A==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"aws_access_key_id": {
|
"aws_access_key_id": {
|
||||||
"encrypted_data": "krcfpxOrAkwZR2GP4glTaFg2dw/COw8BO8I+KICqyl4bvpL5NrB9\n",
|
"encrypted_data": "A1/gfcyrwT6i9W6aGTJ8pH4Dm4o8ACDxvooDroA/2N0szOiNyiYX\n",
|
||||||
"iv": "paoDKp6EIU8bjxzF\n",
|
"iv": "JNvf21KhdM3yoLGt\n",
|
||||||
"auth_tag": "p6Pt/tz5dgGXzW5cO06nBg==\n",
|
"auth_tag": "2xaZql1ymPYuXuvXzT3ymA==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"aws_secret_access_key": {
|
"aws_secret_access_key": {
|
||||||
"encrypted_data": "aQySCT7gxeNiMMocq81KtIi+YzrZwMBeTd4LrRSN8iNEikWReJrrfagBwozy\n+Gfdw4bMGzY1dhF1Sl4=\n",
|
"encrypted_data": "T1tc01nACxhDgygKaiAq3LChGYSgmW8LAwr1aSxXmJ5D2NtypJDikiHrJbFZ\nfWFgm1qe4L8iD/k5+ro=\n",
|
||||||
"iv": "R/hvvOvmqq/uoKbx\n",
|
"iv": "FDTPQQDLUMKW7TXx\n",
|
||||||
"auth_tag": "QBJY/3+OprBXO/FSNwv2OQ==\n",
|
"auth_tag": "msY6PFFYhlwQ0X7gekSDiw==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"ldap_bind_dn": {
|
"ldap_bind_dn": {
|
||||||
"encrypted_data": "wDPABdL+DlXz2WWV4XwW20kM4EWPSwc/ajBmbdYMnjFau6c76CIBpbFhrFoj\n3mwDbHz8cgOnLNvozXSV4w6N7URCN/mWWTBHNhd3ppw=\n",
|
"encrypted_data": "C/YNROVyOxmR4O2Cy52TX41EKli2bCOMzwYD+6Hz/SiKkgidnKUHlvHlbTDq\nkWwlRDM2o8esOCKaEAGPNWcNc9IHlaSsfwhr4YWnwe0=\n",
|
||||||
"iv": "8rQ0M4LT1HbCNpq9\n",
|
"iv": "QCQF0+vH+//+nDxr\n",
|
||||||
"auth_tag": "AuO5R6WCtd75TGJNfgFSCg==\n",
|
"auth_tag": "a0PbyO/7wjufqH2acDCqmQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"ldap_password": {
|
"ldap_password": {
|
||||||
"encrypted_data": "y0t8RuptVYiTKmUhaAWsC4c2ZzhQsYeVLeMPiQBn+Q==\n",
|
"encrypted_data": "SqwKeiyzfvvZGqH5gi35BdW3W+Fo/AQQjso1Yfp2XA==\n",
|
||||||
"iv": "mixYzDKkPSIDQ/l+\n",
|
"iv": "md2/etFJ1r/BKaYg\n",
|
||||||
"auth_tag": "DbLlZG7rlgBmyCdJ3nhSYA==\n",
|
"auth_tag": "OlCCOoYSD7ukdH2yWCd6KA==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"smtp_user_name": {
|
"smtp_user_name": {
|
||||||
"encrypted_data": "Ugc29HUFcirv6jOOlYNs9uvmhfwa2rG41im/MusCx0Vu0AZKcdy0krGi/kCZ\nKg==\n",
|
"encrypted_data": "0kzppmSSUg7lEyYnI5a0nf+xO0vSVx88rbxI+niIdzFOOBKSIL6uVHJ340dw\nMQ==\n",
|
||||||
"iv": "ZlDK854w+vTNmeJe\n",
|
"iv": "lQR77ETTtIIyaG1r\n",
|
||||||
"auth_tag": "Nj95g0JMxrT419OLQIX26g==\n",
|
"auth_tag": "smF2HRg8WdmD+MWwkT3TqA==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"smtp_password": {
|
"smtp_password": {
|
||||||
"encrypted_data": "D1TGjRfmM1ZeUmzwewlKXfQvvqTSzpzNlK5MKIU8dxbAH175UKn5qiemDEWe\nRYPe1LWT\n",
|
"encrypted_data": "1i0m9qiZA/8k8fMKo+04uyndl1UhagtHweBFICIorWALkB68edjb8OhUDxv9\nTubiXYRC\n",
|
||||||
"iv": "D1OVfD5bMcefM5DP\n",
|
"iv": "IU2x4ips9HWmKoxi\n",
|
||||||
"auth_tag": "2E/q2gTbdXiLVnOMDeJv9w==\n",
|
"auth_tag": "BZJTDfPBvt8cf6/MbKzUJQ==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"vapid_private_key": {
|
"vapid_private_key": {
|
||||||
"encrypted_data": "+87bVrbd/XvWhZH1IYusc4Hla7ZZmylptAyJf48CMG/F3SMEO33OqW2I+UWh\nSkqbxai5+GaMhvZHB8U2Clod\n",
|
"encrypted_data": "+LmySMvzrV3z2z7BmJG9hpvkL06mGc87RG20XQhhdAJ2Z/5uMMjev2pUf7du\ntv2qvDJAimhkZajuDGL9R3eq\n",
|
||||||
"iv": "HVhNdFQl0TvCcjsa\n",
|
"iv": "Mg7NhPl31O6Z4P+v\n",
|
||||||
"auth_tag": "EEQXuQ5keOHXmchhBh+Ixw==\n",
|
"auth_tag": "qYWPInhgoWAjg0zQ+XXt5w==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"vapid_public_key": {
|
"vapid_public_key": {
|
||||||
"encrypted_data": "nBm1lXbn1+Kzol95+QSEjsUI/n7ObhdEqEyfYcVSP/LiLy57KOBQDu6CjSMz\n+PN9yEP4lOjtscqHS29jTC2vi3PSui9XpOFHRxFBnDuyKxczrnID2KlLCNRQ\n228G3VRgFIMAWMYKACgzUk0=\n",
|
"encrypted_data": "NOyc+Cech9qG2HhnhajDaJMWd1OU5Rp6hws6i4xF5mLPePMJ9mJTqzklkuMK\npYSEdtcxA3KmDt1HrFxfezYUc9xO9pvlm0BPA7XAFmF/PU7/AJbFqgPU6pX/\ntSDLSdFuMB3ky+cl4DJi+O4=\n",
|
||||||
"iv": "xHrVl+4JGkQbfUW3\n",
|
"iv": "rgUglYiHB/mhqGha\n",
|
||||||
"auth_tag": "rfFoBMocq17YiDSlOCvWqw==\n",
|
"auth_tag": "DEX7hdNsNLi/LIrMkdUe/Q==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"s3_key_id": {
|
"s3_key_id": {
|
||||||
"encrypted_data": "pq0+VZhjoxzLuyY34f23wOmuks9Wevt8Wu6muKZAsZMSuU0iJvlRoK/65Qa0\n",
|
"encrypted_data": "rPVzrYYIbcM+ssVpdL6wpCTdzLIEKXke1+eMlPLMG2gPuoh+W3eO3nFGb/s2\n",
|
||||||
"iv": "QTxO+IfYcpI170ON\n",
|
"iv": "/qI8F9cvnfKG7ZXE\n",
|
||||||
"auth_tag": "4ZHva2iBYgDv6DyhMRRXzA==\n",
|
"auth_tag": "z1+MPdkO/+SCaag2ULelPg==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
},
|
},
|
||||||
"s3_secret_key": {
|
"s3_secret_key": {
|
||||||
"encrypted_data": "YMZqKtOXDPAME8IWWC+lO8TsxHMzawlbTju9z/Hcb5DnQAOy82QufTN90m73\n/xikUboAdKcA5YGn0mkm+Rt/ygVR6DFirYV3kwi2M3qyGVJifug=\n",
|
"encrypted_data": "RMnB9kZ+slbQXfpo0udYld6S1QqBxqM1YbszdLfSAdKK9I0J3Kmvh/CQ5Fbx\nyov6LClmsl1rjtH16r7cY32M4Woq+6miERdtecyDrrYkNHz0xkA=\n",
|
||||||
"iv": "9AwabheRFOgC8IKR\n",
|
"iv": "pO7bm3aOtjuwYjG/\n",
|
||||||
"auth_tag": "iU2kkA1q8OsblN5jaZrWGQ==\n",
|
"auth_tag": "SRvn4z1+Vd5VAGgjG64s+Q==\n",
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"cipher": "aes-256-gcm"
|
"cipher": "aes-256-gcm"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,15 +107,24 @@
|
|||||||
"domain": "nostr.kosmos.org",
|
"domain": "nostr.kosmos.org",
|
||||||
"real_ip_header": "x-real-ip",
|
"real_ip_header": "x-real-ip",
|
||||||
"policy_path": "/opt/strfry/strfry-policy.ts",
|
"policy_path": "/opt/strfry/strfry-policy.ts",
|
||||||
"whitelist_pubkeys": [
|
"known_pubkeys": {
|
||||||
"b3e1b7c1660b7db0ecb93ec55c09e67961171a5c4e9e2602f1b47477ea61c50a"
|
"_": "b3e1b7c0ef48294bd856203bfd460625de95d3afb894e5f09b14cd1f0e7097cf",
|
||||||
],
|
"accounts": "b3e1b7c1660b7db0ecb93ec55c09e67961171a5c4e9e2602f1b47477ea61c50a",
|
||||||
|
"bitcoincore": "47750177bb6bb113784e4973f6b2e3dd27ef1eff227d6e38d0046d618969e41a",
|
||||||
|
"fiatjaf": "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"
|
||||||
|
},
|
||||||
"info": {
|
"info": {
|
||||||
"name": "Kosmos Relay",
|
"name": "Kosmos Relay",
|
||||||
"description": "Members-only nostr relay for kosmos.org users",
|
"description": "Members-only nostr relay for kosmos.org users",
|
||||||
"pubkey": "1f79058c77a224e5be226c8f024cacdad4d741855d75ed9f11473ba8eb86e1cb",
|
"pubkey": "b3e1b7c0ef48294bd856203bfd460625de95d3afb894e5f09b14cd1f0e7097cf",
|
||||||
"contact": "ops@kosmos.org"
|
"contact": "ops@kosmos.org",
|
||||||
|
"icon": "https://assets.kosmos.org/img/app-icon-256px.png"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"substr": {
|
||||||
|
"relay_urls": [
|
||||||
|
"ws://localhost:7777"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
"kvm_guest",
|
"kvm_guest",
|
||||||
"sentry_client",
|
"sentry_client",
|
||||||
"bitcoind",
|
"bitcoind",
|
||||||
"cln",
|
|
||||||
"lnd",
|
"lnd",
|
||||||
"lndhub",
|
"lndhub",
|
||||||
"postgresql_client",
|
"postgresql_client",
|
||||||
@@ -30,7 +29,6 @@
|
|||||||
"tor-full",
|
"tor-full",
|
||||||
"tor-full::default",
|
"tor-full::default",
|
||||||
"kosmos-bitcoin::bitcoind",
|
"kosmos-bitcoin::bitcoind",
|
||||||
"kosmos-bitcoin::c-lightning",
|
|
||||||
"kosmos-bitcoin::lnd",
|
"kosmos-bitcoin::lnd",
|
||||||
"kosmos-bitcoin::lnd-scb-s3",
|
"kosmos-bitcoin::lnd-scb-s3",
|
||||||
"kosmos-bitcoin::rtl",
|
"kosmos-bitcoin::rtl",
|
||||||
@@ -40,6 +38,7 @@
|
|||||||
"kosmos-bitcoin::dotnet",
|
"kosmos-bitcoin::dotnet",
|
||||||
"kosmos-bitcoin::nbxplorer",
|
"kosmos-bitcoin::nbxplorer",
|
||||||
"kosmos-bitcoin::btcpay",
|
"kosmos-bitcoin::btcpay",
|
||||||
|
"kosmos-bitcoin::price_tracking",
|
||||||
"apt::default",
|
"apt::default",
|
||||||
"timezone_iii::default",
|
"timezone_iii::default",
|
||||||
"timezone_iii::debian",
|
"timezone_iii::debian",
|
||||||
@@ -102,9 +101,9 @@
|
|||||||
"role[sentry_client]",
|
"role[sentry_client]",
|
||||||
"recipe[tor-full]",
|
"recipe[tor-full]",
|
||||||
"role[bitcoind]",
|
"role[bitcoind]",
|
||||||
"role[cln]",
|
|
||||||
"role[lnd]",
|
"role[lnd]",
|
||||||
"role[lndhub]",
|
"role[lndhub]",
|
||||||
"role[btcpay]"
|
"role[btcpay]",
|
||||||
|
"recipe[kosmos-bitcoin::price_tracking]"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "draco.kosmos.org",
|
"fqdn": "draco.kosmos.org",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.4.0-54-generic",
|
"os_version": "5.4.0-187-generic",
|
||||||
"hostname": "draco",
|
"hostname": "draco",
|
||||||
"ipaddress": "148.251.237.73",
|
"ipaddress": "148.251.237.73",
|
||||||
"roles": [
|
"roles": [
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"name": "garage-4",
|
"name": "garage-10",
|
||||||
"chef_environment": "production",
|
"chef_environment": "production",
|
||||||
"normal": {
|
"normal": {
|
||||||
"knife_zero": {
|
"knife_zero": {
|
||||||
"host": "10.1.1.104"
|
"host": "10.1.1.27"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "garage-4",
|
"fqdn": "garage-10",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.4.0-132-generic",
|
"os_version": "5.4.0-1090-kvm",
|
||||||
"hostname": "garage-4",
|
"hostname": "garage-10",
|
||||||
"ipaddress": "192.168.122.123",
|
"ipaddress": "192.168.122.70",
|
||||||
"roles": [
|
"roles": [
|
||||||
"base",
|
"base",
|
||||||
"kvm_guest",
|
"kvm_guest",
|
||||||
@@ -23,7 +23,8 @@
|
|||||||
"kosmos_kvm::guest",
|
"kosmos_kvm::guest",
|
||||||
"kosmos_garage",
|
"kosmos_garage",
|
||||||
"kosmos_garage::default",
|
"kosmos_garage::default",
|
||||||
"kosmos_garage::firewall",
|
"kosmos_garage::firewall_rpc",
|
||||||
|
"kosmos_garage::firewall_apis",
|
||||||
"apt::default",
|
"apt::default",
|
||||||
"timezone_iii::default",
|
"timezone_iii::default",
|
||||||
"timezone_iii::debian",
|
"timezone_iii::debian",
|
||||||
@@ -38,21 +39,20 @@
|
|||||||
"postfix::_attributes",
|
"postfix::_attributes",
|
||||||
"postfix::sasl_auth",
|
"postfix::sasl_auth",
|
||||||
"hostname::default",
|
"hostname::default",
|
||||||
"firewall::default",
|
"firewall::default"
|
||||||
"chef-sugar::default"
|
|
||||||
],
|
],
|
||||||
"platform": "ubuntu",
|
"platform": "ubuntu",
|
||||||
"platform_version": "20.04",
|
"platform_version": "20.04",
|
||||||
"cloud": null,
|
"cloud": null,
|
||||||
"chef_packages": {
|
"chef_packages": {
|
||||||
"chef": {
|
"chef": {
|
||||||
"version": "17.10.3",
|
"version": "18.5.0",
|
||||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.10.3/lib",
|
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.5.0/lib",
|
||||||
"chef_effortless": null
|
"chef_effortless": null
|
||||||
},
|
},
|
||||||
"ohai": {
|
"ohai": {
|
||||||
"version": "17.9.0",
|
"version": "18.1.11",
|
||||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.9.0/lib/ohai"
|
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -61,4 +61,4 @@
|
|||||||
"role[kvm_guest]",
|
"role[kvm_guest]",
|
||||||
"role[garage_node]"
|
"role[garage_node]"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"name": "garage-5",
|
"name": "garage-11",
|
||||||
"chef_environment": "production",
|
"chef_environment": "production",
|
||||||
"normal": {
|
"normal": {
|
||||||
"knife_zero": {
|
"knife_zero": {
|
||||||
"host": "10.1.1.33"
|
"host": "10.1.1.165"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "garage-5",
|
"fqdn": "garage-11",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.15.0-84-generic",
|
"os_version": "5.15.0-1059-kvm",
|
||||||
"hostname": "garage-5",
|
"hostname": "garage-11",
|
||||||
"ipaddress": "192.168.122.55",
|
"ipaddress": "192.168.122.9",
|
||||||
"roles": [
|
"roles": [
|
||||||
"base",
|
"base",
|
||||||
"kvm_guest",
|
"kvm_guest",
|
||||||
@@ -46,13 +46,13 @@
|
|||||||
"cloud": null,
|
"cloud": null,
|
||||||
"chef_packages": {
|
"chef_packages": {
|
||||||
"chef": {
|
"chef": {
|
||||||
"version": "18.3.0",
|
"version": "18.5.0",
|
||||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
|
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.5.0/lib",
|
||||||
"chef_effortless": null
|
"chef_effortless": null
|
||||||
},
|
},
|
||||||
"ohai": {
|
"ohai": {
|
||||||
"version": "18.1.4",
|
"version": "18.1.11",
|
||||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
|
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"name": "garage-6",
|
"name": "garage-9",
|
||||||
"chef_environment": "production",
|
"chef_environment": "production",
|
||||||
"normal": {
|
"normal": {
|
||||||
"knife_zero": {
|
"knife_zero": {
|
||||||
"host": "10.1.1.161"
|
"host": "10.1.1.223"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "garage-6",
|
"fqdn": "garage-9",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.4.0-1090-kvm",
|
"os_version": "5.4.0-1090-kvm",
|
||||||
"hostname": "garage-6",
|
"hostname": "garage-9",
|
||||||
"ipaddress": "192.168.122.213",
|
"ipaddress": "192.168.122.21",
|
||||||
"roles": [
|
"roles": [
|
||||||
"base",
|
"base",
|
||||||
"kvm_guest",
|
"kvm_guest",
|
||||||
@@ -46,13 +46,13 @@
|
|||||||
"cloud": null,
|
"cloud": null,
|
||||||
"chef_packages": {
|
"chef_packages": {
|
||||||
"chef": {
|
"chef": {
|
||||||
"version": "18.3.0",
|
"version": "18.5.0",
|
||||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.0/lib",
|
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.5.0/lib",
|
||||||
"chef_effortless": null
|
"chef_effortless": null
|
||||||
},
|
},
|
||||||
"ohai": {
|
"ohai": {
|
||||||
"version": "18.1.4",
|
"version": "18.1.11",
|
||||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
|
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "gitea-2",
|
"fqdn": "gitea-2",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.4.0-1096-kvm",
|
"os_version": "5.4.0-1123-kvm",
|
||||||
"hostname": "gitea-2",
|
"hostname": "gitea-2",
|
||||||
"ipaddress": "192.168.122.189",
|
"ipaddress": "192.168.122.189",
|
||||||
"roles": [
|
"roles": [
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"fqdn": "mail.kosmos.org",
|
"fqdn": "mail.kosmos.org",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.15.0-1048-kvm",
|
"os_version": "5.15.0-1048-kvm",
|
||||||
"hostname": "mail",
|
"hostname": "mail.kosmos.org",
|
||||||
"ipaddress": "192.168.122.131",
|
"ipaddress": "192.168.122.131",
|
||||||
"roles": [
|
"roles": [
|
||||||
"base",
|
"base",
|
||||||
|
|||||||
@@ -63,8 +63,6 @@
|
|||||||
"redisio::disable_os_default",
|
"redisio::disable_os_default",
|
||||||
"redisio::configure",
|
"redisio::configure",
|
||||||
"redisio::enable",
|
"redisio::enable",
|
||||||
"nodejs::npm",
|
|
||||||
"nodejs::install",
|
|
||||||
"backup::default",
|
"backup::default",
|
||||||
"logrotate::default"
|
"logrotate::default"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -13,12 +13,21 @@
|
|||||||
"ipaddress": "192.168.122.60",
|
"ipaddress": "192.168.122.60",
|
||||||
"roles": [
|
"roles": [
|
||||||
"base",
|
"base",
|
||||||
"kvm_guest"
|
"kvm_guest",
|
||||||
|
"postgresql_primary"
|
||||||
],
|
],
|
||||||
"recipes": [
|
"recipes": [
|
||||||
"kosmos-base",
|
"kosmos-base",
|
||||||
"kosmos-base::default",
|
"kosmos-base::default",
|
||||||
"kosmos_kvm::guest",
|
"kosmos_kvm::guest",
|
||||||
|
"kosmos_postgresql::primary",
|
||||||
|
"kosmos_postgresql::firewall",
|
||||||
|
"kosmos-akkounts::pg_db",
|
||||||
|
"kosmos-bitcoin::lndhub-go_pg_db",
|
||||||
|
"kosmos-bitcoin::nbxplorer_pg_db",
|
||||||
|
"kosmos_drone::pg_db",
|
||||||
|
"kosmos_gitea::pg_db",
|
||||||
|
"kosmos-mastodon::pg_db",
|
||||||
"apt::default",
|
"apt::default",
|
||||||
"timezone_iii::default",
|
"timezone_iii::default",
|
||||||
"timezone_iii::debian",
|
"timezone_iii::debian",
|
||||||
@@ -52,6 +61,6 @@
|
|||||||
"run_list": [
|
"run_list": [
|
||||||
"role[base]",
|
"role[base]",
|
||||||
"role[kvm_guest]",
|
"role[kvm_guest]",
|
||||||
"role[postgresql_replica]"
|
"role[postgresql_primary]"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,32 +1,29 @@
|
|||||||
{
|
{
|
||||||
"name": "postgres-5",
|
"name": "postgres-7",
|
||||||
|
"chef_environment": "production",
|
||||||
"normal": {
|
"normal": {
|
||||||
"knife_zero": {
|
"knife_zero": {
|
||||||
"host": "10.1.1.54"
|
"host": "10.1.1.134"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "postgres-5",
|
"fqdn": "postgres-7",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.4.0-153-generic",
|
"os_version": "5.4.0-1123-kvm",
|
||||||
"hostname": "postgres-5",
|
"hostname": "postgres-7",
|
||||||
"ipaddress": "192.168.122.211",
|
"ipaddress": "192.168.122.89",
|
||||||
"roles": [
|
"roles": [
|
||||||
"base",
|
"base",
|
||||||
"kvm_guest",
|
"kvm_guest",
|
||||||
"postgresql_primary"
|
"postgresql_replica"
|
||||||
],
|
],
|
||||||
"recipes": [
|
"recipes": [
|
||||||
"kosmos-base",
|
"kosmos-base",
|
||||||
"kosmos-base::default",
|
"kosmos-base::default",
|
||||||
"kosmos_kvm::guest",
|
"kosmos_kvm::guest",
|
||||||
"kosmos_postgresql::primary",
|
"kosmos_postgresql::hostsfile",
|
||||||
|
"kosmos_postgresql::replica",
|
||||||
"kosmos_postgresql::firewall",
|
"kosmos_postgresql::firewall",
|
||||||
"kosmos-bitcoin::lndhub-go_pg_db",
|
|
||||||
"kosmos-bitcoin::nbxplorer_pg_db",
|
|
||||||
"kosmos_drone::pg_db",
|
|
||||||
"kosmos_gitea::pg_db",
|
|
||||||
"kosmos-mastodon::pg_db",
|
|
||||||
"apt::default",
|
"apt::default",
|
||||||
"timezone_iii::default",
|
"timezone_iii::default",
|
||||||
"timezone_iii::debian",
|
"timezone_iii::debian",
|
||||||
@@ -47,19 +44,19 @@
|
|||||||
"cloud": null,
|
"cloud": null,
|
||||||
"chef_packages": {
|
"chef_packages": {
|
||||||
"chef": {
|
"chef": {
|
||||||
"version": "18.2.7",
|
"version": "18.5.0",
|
||||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/lib",
|
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.5.0/lib",
|
||||||
"chef_effortless": null
|
"chef_effortless": null
|
||||||
},
|
},
|
||||||
"ohai": {
|
"ohai": {
|
||||||
"version": "18.1.4",
|
"version": "18.1.11",
|
||||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
|
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"run_list": [
|
"run_list": [
|
||||||
"role[base]",
|
"role[base]",
|
||||||
"role[kvm_guest]",
|
"role[kvm_guest]",
|
||||||
"role[postgresql_primary]"
|
"role[postgresql_replica]"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
62
nodes/postgres-8.json
Normal file
62
nodes/postgres-8.json
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"name": "postgres-8",
|
||||||
|
"chef_environment": "production",
|
||||||
|
"normal": {
|
||||||
|
"knife_zero": {
|
||||||
|
"host": "10.1.1.99"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"automatic": {
|
||||||
|
"fqdn": "postgres-8",
|
||||||
|
"os": "linux",
|
||||||
|
"os_version": "5.15.0-1059-kvm",
|
||||||
|
"hostname": "postgres-8",
|
||||||
|
"ipaddress": "192.168.122.100",
|
||||||
|
"roles": [
|
||||||
|
"base",
|
||||||
|
"kvm_guest",
|
||||||
|
"postgresql_replica"
|
||||||
|
],
|
||||||
|
"recipes": [
|
||||||
|
"kosmos-base",
|
||||||
|
"kosmos-base::default",
|
||||||
|
"kosmos_kvm::guest",
|
||||||
|
"kosmos_postgresql::hostsfile",
|
||||||
|
"kosmos_postgresql::replica",
|
||||||
|
"kosmos_postgresql::firewall",
|
||||||
|
"apt::default",
|
||||||
|
"timezone_iii::default",
|
||||||
|
"timezone_iii::debian",
|
||||||
|
"ntp::default",
|
||||||
|
"ntp::apparmor",
|
||||||
|
"kosmos-base::systemd_emails",
|
||||||
|
"apt::unattended-upgrades",
|
||||||
|
"kosmos-base::firewall",
|
||||||
|
"kosmos-postfix::default",
|
||||||
|
"postfix::default",
|
||||||
|
"postfix::_common",
|
||||||
|
"postfix::_attributes",
|
||||||
|
"postfix::sasl_auth",
|
||||||
|
"hostname::default"
|
||||||
|
],
|
||||||
|
"platform": "ubuntu",
|
||||||
|
"platform_version": "22.04",
|
||||||
|
"cloud": null,
|
||||||
|
"chef_packages": {
|
||||||
|
"chef": {
|
||||||
|
"version": "18.5.0",
|
||||||
|
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.5.0/lib",
|
||||||
|
"chef_effortless": null
|
||||||
|
},
|
||||||
|
"ohai": {
|
||||||
|
"version": "18.1.11",
|
||||||
|
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.11/lib/ohai"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"run_list": [
|
||||||
|
"role[base]",
|
||||||
|
"role[kvm_guest]",
|
||||||
|
"role[postgresql_replica]"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
"strfry::default",
|
"strfry::default",
|
||||||
"kosmos_strfry::policies",
|
"kosmos_strfry::policies",
|
||||||
"kosmos_strfry::firewall",
|
"kosmos_strfry::firewall",
|
||||||
|
"kosmos_strfry::substr",
|
||||||
"apt::default",
|
"apt::default",
|
||||||
"timezone_iii::default",
|
"timezone_iii::default",
|
||||||
"timezone_iii::debian",
|
"timezone_iii::debian",
|
||||||
|
|||||||
@@ -8,16 +8,19 @@
|
|||||||
"automatic": {
|
"automatic": {
|
||||||
"fqdn": "wiki-1",
|
"fqdn": "wiki-1",
|
||||||
"os": "linux",
|
"os": "linux",
|
||||||
"os_version": "5.4.0-91-generic",
|
"os_version": "5.4.0-167-generic",
|
||||||
"hostname": "wiki-1",
|
"hostname": "wiki-1",
|
||||||
"ipaddress": "192.168.122.26",
|
"ipaddress": "192.168.122.26",
|
||||||
"roles": [
|
"roles": [
|
||||||
"kvm_guest"
|
"base",
|
||||||
|
"kvm_guest",
|
||||||
|
"ldap_client"
|
||||||
],
|
],
|
||||||
"recipes": [
|
"recipes": [
|
||||||
"kosmos-base",
|
"kosmos-base",
|
||||||
"kosmos-base::default",
|
"kosmos-base::default",
|
||||||
"kosmos_kvm::guest",
|
"kosmos_kvm::guest",
|
||||||
|
"kosmos-dirsrv::hostsfile",
|
||||||
"kosmos-mediawiki",
|
"kosmos-mediawiki",
|
||||||
"kosmos-mediawiki::default",
|
"kosmos-mediawiki::default",
|
||||||
"apt::default",
|
"apt::default",
|
||||||
@@ -41,7 +44,6 @@
|
|||||||
"php::package",
|
"php::package",
|
||||||
"php::ini",
|
"php::ini",
|
||||||
"composer::global_configs",
|
"composer::global_configs",
|
||||||
"kosmos-dirsrv::hostsfile",
|
|
||||||
"mediawiki::default",
|
"mediawiki::default",
|
||||||
"mediawiki::database",
|
"mediawiki::database",
|
||||||
"kosmos-nginx::default",
|
"kosmos-nginx::default",
|
||||||
@@ -79,4 +81,4 @@
|
|||||||
"role[ldap_client]",
|
"role[ldap_client]",
|
||||||
"recipe[kosmos-mediawiki]"
|
"recipe[kosmos-mediawiki]"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ name "postgresql_primary"
|
|||||||
run_list %w(
|
run_list %w(
|
||||||
kosmos_postgresql::primary
|
kosmos_postgresql::primary
|
||||||
kosmos_postgresql::firewall
|
kosmos_postgresql::firewall
|
||||||
|
kosmos-akkounts::pg_db
|
||||||
kosmos-bitcoin::lndhub-go_pg_db
|
kosmos-bitcoin::lndhub-go_pg_db
|
||||||
kosmos-bitcoin::nbxplorer_pg_db
|
kosmos-bitcoin::nbxplorer_pg_db
|
||||||
kosmos_drone::pg_db
|
kosmos_drone::pg_db
|
||||||
|
|||||||
@@ -5,4 +5,5 @@ run_list %w(
|
|||||||
strfry::default
|
strfry::default
|
||||||
kosmos_strfry::policies
|
kosmos_strfry::policies
|
||||||
kosmos_strfry::firewall
|
kosmos_strfry::firewall
|
||||||
|
kosmos_strfry::substr
|
||||||
)
|
)
|
||||||
|
|||||||
Submodule site-cookbooks/deno updated: 617f7959ab...5ddfe642eb
@@ -24,13 +24,12 @@ package "libvips"
|
|||||||
|
|
||||||
include_recipe 'redisio::default'
|
include_recipe 'redisio::default'
|
||||||
include_recipe 'redisio::enable'
|
include_recipe 'redisio::enable'
|
||||||
|
|
||||||
|
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_20.x"
|
||||||
include_recipe 'kosmos-nodejs'
|
include_recipe 'kosmos-nodejs'
|
||||||
|
npm_package "bun"
|
||||||
|
|
||||||
npm_package "yarn" do
|
ruby_version = "3.3.8"
|
||||||
version "1.22.4"
|
|
||||||
end
|
|
||||||
|
|
||||||
ruby_version = "3.3.0"
|
|
||||||
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
||||||
bundle_path = "#{ruby_path}/bin/bundle"
|
bundle_path = "#{ruby_path}/bin/bundle"
|
||||||
rails_env = node.chef_environment == "development" ? "development" : "production"
|
rails_env = node.chef_environment == "development" ? "development" : "production"
|
||||||
@@ -48,7 +47,28 @@ webhooks_allowed_ips = [lndhub_host].compact.uniq.join(',')
|
|||||||
env = {
|
env = {
|
||||||
primary_domain: node['akkounts']['primary_domain'],
|
primary_domain: node['akkounts']['primary_domain'],
|
||||||
akkounts_domain: node['akkounts']['domain'],
|
akkounts_domain: node['akkounts']['domain'],
|
||||||
rails_serve_static_files: true
|
rails_serve_static_files: true,
|
||||||
|
secret_key_base: credentials["rails_secret_key_base"],
|
||||||
|
encryption_primary_key: credentials["rails_encryption_primary_key"],
|
||||||
|
encryption_key_derivation_salt: credentials["rails_encryption_key_derivation_salt"],
|
||||||
|
db_adapter: "postgresql",
|
||||||
|
pg_host: "pg.kosmos.local",
|
||||||
|
pg_port: 5432,
|
||||||
|
pg_database: "akkounts",
|
||||||
|
pg_database_queue: "akkounts_queue",
|
||||||
|
pg_username: credentials["postgresql"]["username"],
|
||||||
|
pg_password: credentials["postgresql"]["password"]
|
||||||
|
}
|
||||||
|
|
||||||
|
env[:ldap] = {
|
||||||
|
host: "ldap.kosmos.local",
|
||||||
|
port: 389,
|
||||||
|
use_tls: false,
|
||||||
|
uid_attr: "cn",
|
||||||
|
base: "ou=kosmos.org,cn=users,dc=kosmos,dc=org",
|
||||||
|
admin_user: credentials["ldap"]["admin_user"],
|
||||||
|
admin_password: credentials["ldap"]["admin_password"],
|
||||||
|
suffix: "dc=kosmos,dc=org"
|
||||||
}
|
}
|
||||||
|
|
||||||
smtp_server, smtp_port = smtp_credentials[:relayhost].split(":")
|
smtp_server, smtp_port = smtp_credentials[:relayhost].split(":")
|
||||||
@@ -138,9 +158,9 @@ if lndhub_host
|
|||||||
if postgres_readonly_host
|
if postgres_readonly_host
|
||||||
env[:lndhub_admin_ui] = true
|
env[:lndhub_admin_ui] = true
|
||||||
env[:lndhub_pg_host] = postgres_readonly_host
|
env[:lndhub_pg_host] = postgres_readonly_host
|
||||||
env[:lndhub_pg_database] = node['akkounts']['lndhub']['postgres_db']
|
env[:lndhub_pg_database] = node["akkounts"]["lndhub"]["postgres_db"]
|
||||||
env[:lndhub_pg_username] = credentials['postgresql_username']
|
env[:lndhub_pg_username] = credentials["postgresql"]["username"]
|
||||||
env[:lndhub_pg_password] = credentials['postgresql_password']
|
env[:lndhub_pg_password] = credentials["postgresql"]["password"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -208,7 +228,7 @@ systemd_unit "akkounts.service" do
|
|||||||
Type: "simple",
|
Type: "simple",
|
||||||
User: deploy_user,
|
User: deploy_user,
|
||||||
WorkingDirectory: deploy_path,
|
WorkingDirectory: deploy_path,
|
||||||
Environment: "RAILS_ENV=#{rails_env}",
|
Environment: "RAILS_ENV=#{rails_env} SOLID_QUEUE_IN_PUMA=true",
|
||||||
ExecStart: "#{bundle_path} exec puma -C config/puma.rb --pidfile #{deploy_path}/tmp/puma.pid",
|
ExecStart: "#{bundle_path} exec puma -C config/puma.rb --pidfile #{deploy_path}/tmp/puma.pid",
|
||||||
ExecStop: "#{bundle_path} exec puma -C config/puma.rb --pidfile #{deploy_path}/tmp/puma.pid stop",
|
ExecStop: "#{bundle_path} exec puma -C config/puma.rb --pidfile #{deploy_path}/tmp/puma.pid stop",
|
||||||
ExecReload: "#{bundle_path} exec pumactl -F config/puma.rb --pidfile #{deploy_path}/tmp/puma.pid phased-restart",
|
ExecReload: "#{bundle_path} exec pumactl -F config/puma.rb --pidfile #{deploy_path}/tmp/puma.pid phased-restart",
|
||||||
@@ -225,36 +245,6 @@ systemd_unit "akkounts.service" do
|
|||||||
action [:create, :enable]
|
action [:create, :enable]
|
||||||
end
|
end
|
||||||
|
|
||||||
systemd_unit "akkounts-sidekiq.service" do
|
|
||||||
content({
|
|
||||||
Unit: {
|
|
||||||
Description: "Kosmos Accounts async/background jobs",
|
|
||||||
Documentation: ["https://gitea.kosmos.org/kosmos/akkounts"],
|
|
||||||
Requires: "redis@6379.service",
|
|
||||||
After: "syslog.target network.target redis@6379.service"
|
|
||||||
},
|
|
||||||
Service: {
|
|
||||||
Type: "notify",
|
|
||||||
User: deploy_user,
|
|
||||||
WorkingDirectory: deploy_path,
|
|
||||||
Environment: "MALLOC_ARENA_MAX=2",
|
|
||||||
ExecStart: "#{bundle_path} exec sidekiq -C #{deploy_path}/config/sidekiq.yml -e #{rails_env}",
|
|
||||||
WatchdogSec: "10",
|
|
||||||
Restart: "on-failure",
|
|
||||||
RestartSec: "1",
|
|
||||||
StandardOutput: "syslog",
|
|
||||||
StandardError: "syslog",
|
|
||||||
SyslogIdentifier: "sidekiq"
|
|
||||||
},
|
|
||||||
Install: {
|
|
||||||
WantedBy: "multi-user.target"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
verify false
|
|
||||||
triggers_reload true
|
|
||||||
action [:create, :enable]
|
|
||||||
end
|
|
||||||
|
|
||||||
deploy_env = {
|
deploy_env = {
|
||||||
"HOME" => deploy_path,
|
"HOME" => deploy_path,
|
||||||
"PATH" => "#{ruby_path}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin",
|
"PATH" => "#{ruby_path}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin",
|
||||||
@@ -267,15 +257,7 @@ git deploy_path do
|
|||||||
revision node[app_name]["revision"]
|
revision node[app_name]["revision"]
|
||||||
user deploy_user
|
user deploy_user
|
||||||
group deploy_group
|
group deploy_group
|
||||||
# Restart services on deployments
|
|
||||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
|
||||||
end
|
|
||||||
|
|
||||||
execute "restart #{app_name} services" do
|
|
||||||
command "true"
|
|
||||||
action :nothing
|
|
||||||
notifies :restart, "service[#{app_name}]", :delayed
|
notifies :restart, "service[#{app_name}]", :delayed
|
||||||
notifies :restart, "service[#{app_name}-sidekiq]", :delayed
|
|
||||||
end
|
end
|
||||||
|
|
||||||
file "#{deploy_path}/config/master.key" do
|
file "#{deploy_path}/config/master.key" do
|
||||||
@@ -283,7 +265,7 @@ file "#{deploy_path}/config/master.key" do
|
|||||||
mode '0400'
|
mode '0400'
|
||||||
owner deploy_user
|
owner deploy_user
|
||||||
group deploy_group
|
group deploy_group
|
||||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
notifies :restart, "service[#{app_name}]", :delayed
|
||||||
end
|
end
|
||||||
|
|
||||||
template "#{deploy_path}/.env.#{rails_env}" do
|
template "#{deploy_path}/.env.#{rails_env}" do
|
||||||
@@ -293,7 +275,7 @@ template "#{deploy_path}/.env.#{rails_env}" do
|
|||||||
mode 0600
|
mode 0600
|
||||||
sensitive true
|
sensitive true
|
||||||
variables config: env
|
variables config: env
|
||||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
notifies :restart, "service[#{app_name}]", :delayed
|
||||||
end
|
end
|
||||||
|
|
||||||
execute "bundle install" do
|
execute "bundle install" do
|
||||||
@@ -303,13 +285,6 @@ execute "bundle install" do
|
|||||||
command "bundle install --without development,test --deployment"
|
command "bundle install --without development,test --deployment"
|
||||||
end
|
end
|
||||||
|
|
||||||
execute "yarn install" do
|
|
||||||
environment deploy_env
|
|
||||||
user deploy_user
|
|
||||||
cwd deploy_path
|
|
||||||
command "yarn install --pure-lockfile"
|
|
||||||
end
|
|
||||||
|
|
||||||
execute 'rake db:migrate' do
|
execute 'rake db:migrate' do
|
||||||
environment deploy_env
|
environment deploy_env
|
||||||
user deploy_user
|
user deploy_user
|
||||||
@@ -330,10 +305,6 @@ service "akkounts" do
|
|||||||
action [:enable, :start]
|
action [:enable, :start]
|
||||||
end
|
end
|
||||||
|
|
||||||
service "akkounts-sidekiq" do
|
|
||||||
action [:enable, :start]
|
|
||||||
end
|
|
||||||
|
|
||||||
firewall_rule "akkounts_zerotier" do
|
firewall_rule "akkounts_zerotier" do
|
||||||
command :allow
|
command :allow
|
||||||
port node["akkounts"]["port"]
|
port node["akkounts"]["port"]
|
||||||
|
|||||||
22
site-cookbooks/kosmos-akkounts/recipes/pg_db.rb
Normal file
22
site-cookbooks/kosmos-akkounts/recipes/pg_db.rb
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# Cookbook:: kosmos-akkounts
|
||||||
|
# Recipe:: pg_db
|
||||||
|
#
|
||||||
|
|
||||||
|
credentials = data_bag_item("credentials", "akkounts")
|
||||||
|
pg_username = credentials["postgresql"]["username"]
|
||||||
|
pg_password = credentials["postgresql"]["password"]
|
||||||
|
|
||||||
|
postgresql_user pg_username do
|
||||||
|
action :create
|
||||||
|
password pg_password
|
||||||
|
end
|
||||||
|
|
||||||
|
databases = ["akkounts", "akkounts_queue"]
|
||||||
|
|
||||||
|
databases.each do |database|
|
||||||
|
postgresql_database database do
|
||||||
|
owner pg_username
|
||||||
|
action :create
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -14,6 +14,10 @@ server {
|
|||||||
listen [::]:443 ssl http2;
|
listen [::]:443 ssl http2;
|
||||||
server_name <%= @domain %>;
|
server_name <%= @domain %>;
|
||||||
|
|
||||||
|
if ($host != $server_name) {
|
||||||
|
return 301 $scheme://$server_name$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
ssl_certificate <%= @ssl_cert %>;
|
ssl_certificate <%= @ssl_cert %>;
|
||||||
ssl_certificate_key <%= @ssl_key %>;
|
ssl_certificate_key <%= @ssl_key %>;
|
||||||
|
|
||||||
@@ -39,6 +43,9 @@ server {
|
|||||||
|
|
||||||
location @proxy {
|
location @proxy {
|
||||||
proxy_set_header Host $http_host;
|
proxy_set_header Host $http_host;
|
||||||
|
set $x_forwarded_host $http_x_forwarded_host;
|
||||||
|
if ($x_forwarded_host = "") { set $x_forwarded_host $host; }
|
||||||
|
proxy_set_header X-Forwarded-Host $x_forwarded_host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ action :create do
|
|||||||
command <<-CMD
|
command <<-CMD
|
||||||
certbot certonly --manual -n \
|
certbot certonly --manual -n \
|
||||||
--preferred-challenges dns \
|
--preferred-challenges dns \
|
||||||
--manual-public-ip-logging-ok \
|
|
||||||
--agree-tos \
|
--agree-tos \
|
||||||
--manual-auth-hook '#{hook_auth_command}' \
|
--manual-auth-hook '#{hook_auth_command}' \
|
||||||
--manual-cleanup-hook '#{hook_cleanup_command}' \
|
--manual-cleanup-hook '#{hook_cleanup_command}' \
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ node.default['c-lightning']['log_level'] = 'info'
|
|||||||
node.default['c-lightning']['public_ip'] = '148.251.237.73'
|
node.default['c-lightning']['public_ip'] = '148.251.237.73'
|
||||||
|
|
||||||
node.default['lnd']['repo'] = 'https://github.com/lightningnetwork/lnd'
|
node.default['lnd']['repo'] = 'https://github.com/lightningnetwork/lnd'
|
||||||
node.default['lnd']['revision'] = 'v0.18.3-beta'
|
node.default['lnd']['revision'] = 'v0.18.5-beta'
|
||||||
node.default['lnd']['source_dir'] = '/opt/lnd'
|
node.default['lnd']['source_dir'] = '/opt/lnd'
|
||||||
node.default['lnd']['lnd_dir'] = "/home/#{node['bitcoin']['username']}/.lnd"
|
node.default['lnd']['lnd_dir'] = "/home/#{node['bitcoin']['username']}/.lnd"
|
||||||
node.default['lnd']['alias'] = 'ln2.kosmos.org'
|
node.default['lnd']['alias'] = 'ln2.kosmos.org'
|
||||||
@@ -65,7 +65,7 @@ node.default['rtl']['host'] = '10.1.1.163'
|
|||||||
node.default['rtl']['port'] = '3000'
|
node.default['rtl']['port'] = '3000'
|
||||||
|
|
||||||
node.default['lndhub-go']['repo'] = 'https://github.com/getAlby/lndhub.go.git'
|
node.default['lndhub-go']['repo'] = 'https://github.com/getAlby/lndhub.go.git'
|
||||||
node.default['lndhub-go']['revision'] = '0.14.0'
|
node.default['lndhub-go']['revision'] = '1.0.2'
|
||||||
node.default['lndhub-go']['source_dir'] = '/opt/lndhub-go'
|
node.default['lndhub-go']['source_dir'] = '/opt/lndhub-go'
|
||||||
node.default['lndhub-go']['port'] = 3026
|
node.default['lndhub-go']['port'] = 3026
|
||||||
node.default['lndhub-go']['domain'] = 'lndhub.kosmos.org'
|
node.default['lndhub-go']['domain'] = 'lndhub.kosmos.org'
|
||||||
@@ -73,8 +73,10 @@ node.default['lndhub-go']['postgres']['database'] = 'lndhub'
|
|||||||
node.default['lndhub-go']['postgres']['user'] = 'lndhub'
|
node.default['lndhub-go']['postgres']['user'] = 'lndhub'
|
||||||
node.default['lndhub-go']['postgres']['port'] = 5432
|
node.default['lndhub-go']['postgres']['port'] = 5432
|
||||||
node.default['lndhub-go']['default_rate_limit'] = 20
|
node.default['lndhub-go']['default_rate_limit'] = 20
|
||||||
node.default['lndhub-go']['strict_rate_limit'] = 1
|
node.default['lndhub-go']['strict_rate_limit'] = 1
|
||||||
node.default['lndhub-go']['burst_rate_limit'] = 10
|
node.default['lndhub-go']['burst_rate_limit'] = 10
|
||||||
|
node.default['lndhub-go']['service_fee'] = 1
|
||||||
|
node.default['lndhub-go']['no_service_fee_up_to_amount'] = 1000
|
||||||
node.default['lndhub-go']['branding'] = {
|
node.default['lndhub-go']['branding'] = {
|
||||||
'title' => 'LndHub - Kosmos Lightning',
|
'title' => 'LndHub - Kosmos Lightning',
|
||||||
'desc' => 'Kosmos accounts for the Lightning Network',
|
'desc' => 'Kosmos accounts for the Lightning Network',
|
||||||
@@ -88,7 +90,7 @@ node.default['dotnet']['ms_packages_src_url'] = "https://packages.microsoft.com/
|
|||||||
node.default['dotnet']['ms_packages_src_checksum'] = "4df5811c41fdded83eb9e2da9336a8dfa5594a79dc8a80133bd815f4f85b9991"
|
node.default['dotnet']['ms_packages_src_checksum'] = "4df5811c41fdded83eb9e2da9336a8dfa5594a79dc8a80133bd815f4f85b9991"
|
||||||
|
|
||||||
node.default['nbxplorer']['repo'] = 'https://github.com/dgarage/NBXplorer'
|
node.default['nbxplorer']['repo'] = 'https://github.com/dgarage/NBXplorer'
|
||||||
node.default['nbxplorer']['revision'] = 'v2.5.0'
|
node.default['nbxplorer']['revision'] = 'v2.5.23'
|
||||||
node.default['nbxplorer']['source_dir'] = '/opt/nbxplorer'
|
node.default['nbxplorer']['source_dir'] = '/opt/nbxplorer'
|
||||||
node.default['nbxplorer']['config_path'] = "/home/#{node['bitcoin']['username']}/.nbxplorer/Main/settings.config"
|
node.default['nbxplorer']['config_path'] = "/home/#{node['bitcoin']['username']}/.nbxplorer/Main/settings.config"
|
||||||
node.default['nbxplorer']['port'] = '24445'
|
node.default['nbxplorer']['port'] = '24445'
|
||||||
@@ -96,7 +98,7 @@ node.default['nbxplorer']['postgres']['database'] = 'nbxplorer'
|
|||||||
node.default['nbxplorer']['postgres']['user'] = 'nbxplorer'
|
node.default['nbxplorer']['postgres']['user'] = 'nbxplorer'
|
||||||
|
|
||||||
node.default['btcpay']['repo'] = 'https://github.com/btcpayserver/btcpayserver'
|
node.default['btcpay']['repo'] = 'https://github.com/btcpayserver/btcpayserver'
|
||||||
node.default['btcpay']['revision'] = 'v1.12.5'
|
node.default['btcpay']['revision'] = 'v2.0.7'
|
||||||
node.default['btcpay']['source_dir'] = '/opt/btcpay'
|
node.default['btcpay']['source_dir'] = '/opt/btcpay'
|
||||||
node.default['btcpay']['config_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/Main/settings.config"
|
node.default['btcpay']['config_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/Main/settings.config"
|
||||||
node.default['btcpay']['log_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/debug.log"
|
node.default['btcpay']['log_path'] = "/home/#{node['bitcoin']['username']}/.btcpayserver/debug.log"
|
||||||
@@ -109,3 +111,5 @@ node.default['btcpay']['postgres']['user'] = 'satoshi'
|
|||||||
node.default['peerswap']['repo'] = 'https://github.com/ElementsProject/peerswap.git'
|
node.default['peerswap']['repo'] = 'https://github.com/ElementsProject/peerswap.git'
|
||||||
node.default['peerswap']['revision'] = 'master'
|
node.default['peerswap']['revision'] = 'master'
|
||||||
node.default['peerswap-lnd']['source_dir'] = '/opt/peerswap'
|
node.default['peerswap-lnd']['source_dir'] = '/opt/peerswap'
|
||||||
|
|
||||||
|
node.default['price_tracking']['rs_base_url'] = "https://storage.kosmos.org/kosmos/public/btc-price"
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ template "#{source_dir}/.env" do
|
|||||||
default_rate_limit: node['lndhub-go']['default_rate_limit'],
|
default_rate_limit: node['lndhub-go']['default_rate_limit'],
|
||||||
strict_rate_limit: node['lndhub-go']['strict_rate_limit'],
|
strict_rate_limit: node['lndhub-go']['strict_rate_limit'],
|
||||||
burst_rate_limit: node['lndhub-go']['burst_rate_limit'],
|
burst_rate_limit: node['lndhub-go']['burst_rate_limit'],
|
||||||
|
service_fee: 1,
|
||||||
|
no_service_fee_up_to_amount: 1000,
|
||||||
branding: node['lndhub-go']['branding'],
|
branding: node['lndhub-go']['branding'],
|
||||||
webhook_url: node['lndhub-go']['webhook_url'],
|
webhook_url: node['lndhub-go']['webhook_url'],
|
||||||
sentry_dsn: credentials['sentry_dsn']
|
sentry_dsn: credentials['sentry_dsn']
|
||||||
|
|||||||
@@ -58,9 +58,7 @@ directory '/run/nbxplorer' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
env = {
|
env = {
|
||||||
NBXPLORER_POSTGRES: "User ID=#{postgres_user};Password=#{credentials['postgresql_password']};Database=#{postgres_database};Host=pg.kosmos.local;Port=5432;Application Name=nbxplorer;MaxPoolSize=20",
|
NBXPLORER_POSTGRES: "User ID=#{postgres_user};Password=#{credentials['postgresql_password']};Database=#{postgres_database};Host=pg.kosmos.local;Port=5432;Application Name=nbxplorer;MaxPoolSize=20"
|
||||||
NBXPLORER_AUTOMIGRATE: "1",
|
|
||||||
NBXPLORER_NOMIGRATEEVTS: "1"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
systemd_unit 'nbxplorer.service' do
|
systemd_unit 'nbxplorer.service' do
|
||||||
|
|||||||
59
site-cookbooks/kosmos-bitcoin/recipes/price_tracking.rb
Normal file
59
site-cookbooks/kosmos-bitcoin/recipes/price_tracking.rb
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#
|
||||||
|
# Cookbook:: kosmos-bitcoin
|
||||||
|
# Recipe:: price_tracking
|
||||||
|
#
|
||||||
|
# Track BTC rates and publish them via remoteStorage
|
||||||
|
#
|
||||||
|
|
||||||
|
%w[curl jq].each do |pkg|
|
||||||
|
apt_package pkg
|
||||||
|
end
|
||||||
|
|
||||||
|
daily_tracker_path = "/usr/local/bin/btc-price-tracker-daily"
|
||||||
|
|
||||||
|
credentials = Chef::EncryptedDataBagItem.load('credentials', 'kosmos-rs')
|
||||||
|
|
||||||
|
template daily_tracker_path do
|
||||||
|
source "btc-price-tracker-daily.sh.erb"
|
||||||
|
mode '0740'
|
||||||
|
variables rs_base_url: node['price_tracking']['rs_base_url']
|
||||||
|
notifies :restart, "systemd_unit[lnd-channel-backup.service]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
systemd_unit 'btc-price-tracker-daily.service' do
|
||||||
|
content({
|
||||||
|
Unit: {
|
||||||
|
Description: 'BTC price tracker (daily rates)',
|
||||||
|
After: 'network-online.target',
|
||||||
|
Wants: 'network-online.target'
|
||||||
|
},
|
||||||
|
Service: {
|
||||||
|
Type: 'oneshot',
|
||||||
|
ExecStart: daily_tracker_path,
|
||||||
|
Environment: "RS_AUTH=#{credentials["auth_tokens"]["/btc-price"]}"
|
||||||
|
},
|
||||||
|
Install: {
|
||||||
|
WantedBy: 'multi-user.target'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
sensitive true
|
||||||
|
triggers_reload true
|
||||||
|
action [:create]
|
||||||
|
end
|
||||||
|
|
||||||
|
systemd_unit 'btc-price-tracker-daily.timer' do
|
||||||
|
content({
|
||||||
|
Unit: {
|
||||||
|
Description: 'Run BTC price tracker daily'
|
||||||
|
},
|
||||||
|
Timer: {
|
||||||
|
OnCalendar: '*-*-* 00:00:00',
|
||||||
|
Persistent: 'true'
|
||||||
|
},
|
||||||
|
Install: {
|
||||||
|
WantedBy: 'timers.target'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
triggers_reload true
|
||||||
|
action [:create, :enable, :start]
|
||||||
|
end
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Calculate yesterday's date in YYYY-MM-DD format
|
||||||
|
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
|
||||||
|
echo "Starting price tracking for $YESTERDAY" >&2
|
||||||
|
|
||||||
|
# Fetch and process rates for a fiat currency
|
||||||
|
get_price_data() {
|
||||||
|
local currency=$1
|
||||||
|
local data avg open24 last
|
||||||
|
|
||||||
|
data=$(curl -s "https://www.bitstamp.net/api/v2/ticker/btc${currency,,}/")
|
||||||
|
if [ $? -eq 0 ] && [ ! -z "$data" ]; then
|
||||||
|
echo "Successfully retrieved ${currency} price data" >&2
|
||||||
|
open24=$(echo "$data" | jq -r '.open_24')
|
||||||
|
last=$(echo "$data" | jq -r '.last')
|
||||||
|
avg=$(( (${open24%.*} + ${last%.*}) / 2 ))
|
||||||
|
echo $avg
|
||||||
|
else
|
||||||
|
echo "ERROR: Failed to retrieve ${currency} price data" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get price data for each currency
|
||||||
|
usd_avg=$(get_price_data "USD")
|
||||||
|
eur_avg=$(get_price_data "EUR")
|
||||||
|
gbp_avg=$(get_price_data "GBP")
|
||||||
|
|
||||||
|
# Create JSON
|
||||||
|
json="{\"EUR\":$eur_avg,\"USD\":$usd_avg,\"GBP\":$gbp_avg}"
|
||||||
|
echo "Rates: $json" >&2
|
||||||
|
|
||||||
|
# PUT in remote storage
|
||||||
|
response=$(curl -X PUT \
|
||||||
|
-H "Authorization: Bearer $RS_AUTH" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "$json" \
|
||||||
|
-w "%{http_code}" \
|
||||||
|
-s \
|
||||||
|
-o /dev/null \
|
||||||
|
"<%= @rs_base_url %>/$YESTERDAY")
|
||||||
|
|
||||||
|
if [ "$response" -eq 200 ] || [ "$response" -eq 201 ]; then
|
||||||
|
echo "Successfully uploaded price data" >&2
|
||||||
|
else
|
||||||
|
echo "ERROR: Failed to upload price data. HTTP status: $response" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -84,6 +84,12 @@ hosts = [
|
|||||||
sql_database: "ejabberd",
|
sql_database: "ejabberd",
|
||||||
ldap_enabled: true,
|
ldap_enabled: true,
|
||||||
ldap_password: ejabberd_credentials['kosmos_ldap_password'],
|
ldap_password: ejabberd_credentials['kosmos_ldap_password'],
|
||||||
|
certfiles: [
|
||||||
|
"/opt/ejabberd/conf/kosmos.org.crt",
|
||||||
|
"/opt/ejabberd/conf/kosmos.org.key",
|
||||||
|
"/opt/ejabberd/conf/kosmos.chat.crt",
|
||||||
|
"/opt/ejabberd/conf/kosmos.chat.key"
|
||||||
|
],
|
||||||
append_host_config: <<-EOF
|
append_host_config: <<-EOF
|
||||||
modules:
|
modules:
|
||||||
mod_disco:
|
mod_disco:
|
||||||
@@ -114,6 +120,10 @@ hosts = [
|
|||||||
sql_database: "ejabberd_5apps",
|
sql_database: "ejabberd_5apps",
|
||||||
ldap_enabled: true,
|
ldap_enabled: true,
|
||||||
ldap_password: ejabberd_credentials['5apps_ldap_password'],
|
ldap_password: ejabberd_credentials['5apps_ldap_password'],
|
||||||
|
certfiles: [
|
||||||
|
"/opt/ejabberd/conf/5apps.com.crt",
|
||||||
|
"/opt/ejabberd/conf/5apps.com.key"
|
||||||
|
],
|
||||||
append_host_config: <<-EOF
|
append_host_config: <<-EOF
|
||||||
modules:
|
modules:
|
||||||
mod_disco:
|
mod_disco:
|
||||||
@@ -155,7 +165,7 @@ admin_users = ejabberd_credentials['admins']
|
|||||||
hosts.each do |host|
|
hosts.each do |host|
|
||||||
ldap_rootdn = "uid=service,ou=#{host[:name]},cn=applications,dc=kosmos,dc=org"
|
ldap_rootdn = "uid=service,ou=#{host[:name]},cn=applications,dc=kosmos,dc=org"
|
||||||
if host[:name] == "kosmos.org"
|
if host[:name] == "kosmos.org"
|
||||||
ldap_filter = "(&(objectClass=person)(serviceEnabled=xmpp))"
|
ldap_filter = "(&(objectClass=person)(serviceEnabled=ejabberd))"
|
||||||
else
|
else
|
||||||
ldap_filter = "(objectClass=person)"
|
ldap_filter = "(objectClass=person)"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ set -e
|
|||||||
# letsencrypt live folder
|
# letsencrypt live folder
|
||||||
for domain in $RENEWED_DOMAINS; do
|
for domain in $RENEWED_DOMAINS; do
|
||||||
case $domain in
|
case $domain in
|
||||||
kosmos.org|5apps.com)
|
kosmos.org|kosmos.chat|5apps.com)
|
||||||
cp "${RENEWED_LINEAGE}/privkey.pem" /opt/ejabberd/conf/$domain.key
|
cp "/etc/letsencrypt/live/${domain}/privkey.pem" /opt/ejabberd/conf/$domain.key
|
||||||
cp "${RENEWED_LINEAGE}/fullchain.pem" /opt/ejabberd/conf/$domain.crt
|
cp "/etc/letsencrypt/live/${domain}/fullchain.pem" /opt/ejabberd/conf/$domain.crt
|
||||||
chown ejabberd:ejabberd /opt/ejabberd/conf/$domain.*
|
chown ejabberd:ejabberd /opt/ejabberd/conf/$domain.*
|
||||||
chmod 600 /opt/ejabberd/conf/$domain.*
|
chmod 600 /opt/ejabberd/conf/$domain.*
|
||||||
/opt/ejabberd-#{node["ejabberd"]["version"]}/bin/ejabberdctl reload_config
|
/opt/ejabberd-#{node["ejabberd"]["version"]}/bin/ejabberdctl reload_config
|
||||||
@@ -38,21 +38,29 @@ gandi_api_credentials = data_bag_item('credentials', 'gandi_api')
|
|||||||
template "/root/gandi_dns_certbot_hook.sh" do
|
template "/root/gandi_dns_certbot_hook.sh" do
|
||||||
variables access_token: gandi_api_credentials["access_token"]
|
variables access_token: gandi_api_credentials["access_token"]
|
||||||
mode 0700
|
mode 0700
|
||||||
|
sensitive true
|
||||||
end
|
end
|
||||||
|
|
||||||
# Generate a Let's Encrypt cert (only if no cert has been generated before).
|
# Generate a Let's Encrypt cert (only if no cert has been generated before).
|
||||||
# The systemd timer will take care of renewing
|
# The systemd timer will take care of renewing
|
||||||
execute "letsencrypt cert for kosmos xmpp" do
|
execute "letsencrypt cert for kosmos.org domains" do
|
||||||
command "certbot certonly --manual --preferred-challenges dns --manual-public-ip-logging-ok --agree-tos --manual-auth-hook \"/root/gandi_dns_certbot_hook.sh auth\" --manual-cleanup-hook \"/root/gandi_dns_certbot_hook.sh cleanup\" --deploy-hook \"/etc/letsencrypt/renewal-hooks/post/ejabberd\" --email ops@kosmos.org -d kosmos.org -d xmpp.kosmos.org -d chat.kosmos.org -d kosmos.chat -d uploads.xmpp.kosmos.org -n"
|
command "certbot certonly --manual --preferred-challenges dns --agree-tos --manual-auth-hook \"/root/gandi_dns_certbot_hook.sh auth\" --manual-cleanup-hook \"/root/gandi_dns_certbot_hook.sh cleanup\" --deploy-hook \"/etc/letsencrypt/renewal-hooks/post/ejabberd\" --email ops@kosmos.org -d kosmos.org -d xmpp.kosmos.org -d chat.kosmos.org -d upload.kosmos.org -d proxy.kosmos.org -d pubsub.kosmos.org -d uploads.xmpp.kosmos.org -n"
|
||||||
not_if do
|
not_if do
|
||||||
File.exist?("/etc/letsencrypt/live/kosmos.org/fullchain.pem")
|
File.exist?("/etc/letsencrypt/live/kosmos.org/fullchain.pem")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
execute "letsencrypt cert for kosmos.chat" do
|
||||||
|
command "certbot certonly --manual --preferred-challenges dns --agree-tos --manual-auth-hook \"/root/gandi_dns_certbot_hook.sh auth letsencrypt.kosmos.org\" --manual-cleanup-hook \"/root/gandi_dns_certbot_hook.sh cleanup letsencrypt.kosmos.org\" --deploy-hook \"/etc/letsencrypt/renewal-hooks/post/ejabberd\" --email ops@kosmos.org -d kosmos.chat -n"
|
||||||
|
not_if do
|
||||||
|
File.exist?("/etc/letsencrypt/live/kosmos.chat/fullchain.pem")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Generate a Let's Encrypt cert (only if no cert has been generated before).
|
# Generate a Let's Encrypt cert (only if no cert has been generated before).
|
||||||
# The systemd timer will take care of renewing
|
# The systemd timer will take care of renewing
|
||||||
execute "letsencrypt cert for 5apps xmpp" do
|
execute "letsencrypt cert for 5apps xmpp" do
|
||||||
command "certbot certonly --manual --preferred-challenges dns --manual-public-ip-logging-ok --agree-tos --manual-auth-hook \"/root/gandi_dns_certbot_hook.sh auth letsencrypt.kosmos.chat\" --manual-cleanup-hook \"/root/gandi_dns_certbot_hook.sh cleanup letsencrypt.kosmos.chat\" --deploy-hook \"/etc/letsencrypt/renewal-hooks/post/ejabberd\" --email ops@5apps.com -d 5apps.com -d muc.5apps.com -d xmpp.5apps.com -d uploads.xmpp.5apps.com -n"
|
command "certbot certonly --manual --preferred-challenges dns --manual-public-ip-logging-ok --agree-tos --manual-auth-hook \"/root/gandi_dns_certbot_hook.sh auth letsencrypt.kosmos.org\" --manual-cleanup-hook \"/root/gandi_dns_certbot_hook.sh cleanup letsencrypt.kosmos.org\" --deploy-hook \"/etc/letsencrypt/renewal-hooks/post/ejabberd\" --email ops@5apps.com -d 5apps.com -d muc.5apps.com -d xmpp.5apps.com -d uploads.xmpp.5apps.com -n"
|
||||||
not_if do
|
not_if do
|
||||||
File.exist?("/etc/letsencrypt/live/5apps.com/fullchain.pem")
|
File.exist?("/etc/letsencrypt/live/5apps.com/fullchain.pem")
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ modules:
|
|||||||
access_createnode: pubsub_createnode
|
access_createnode: pubsub_createnode
|
||||||
ignore_pep_from_offline: false
|
ignore_pep_from_offline: false
|
||||||
last_item_cache: false
|
last_item_cache: false
|
||||||
max_items_node: 10
|
max_items_node: 10000
|
||||||
plugins:
|
plugins:
|
||||||
- "flat"
|
- "flat"
|
||||||
- "pep" # pep requires mod_caps
|
- "pep" # pep requires mod_caps
|
||||||
@@ -231,7 +231,6 @@ modules:
|
|||||||
mod_shared_roster: {}
|
mod_shared_roster: {}
|
||||||
mod_stun_disco:
|
mod_stun_disco:
|
||||||
offer_local_services: false
|
offer_local_services: false
|
||||||
credentials_lifetime: 300
|
|
||||||
secret: <%= @stun_secret %>
|
secret: <%= @stun_secret %>
|
||||||
services:
|
services:
|
||||||
-
|
-
|
||||||
@@ -259,7 +258,10 @@ modules:
|
|||||||
transport: tcp
|
transport: tcp
|
||||||
restricted: true
|
restricted: true
|
||||||
mod_vcard:
|
mod_vcard:
|
||||||
|
db_type: ldap
|
||||||
search: false
|
search: false
|
||||||
|
ldap_vcard_map:
|
||||||
|
PHOTO: {"%s": [jpegPhoto]}
|
||||||
mod_vcard_xupdate: {}
|
mod_vcard_xupdate: {}
|
||||||
mod_avatar: {}
|
mod_avatar: {}
|
||||||
mod_version: {}
|
mod_version: {}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
# Generated by Chef for <%= @host[:name] %>
|
# Generated by Chef for <%= @host[:name] %>
|
||||||
certfiles:
|
certfiles:
|
||||||
- "/opt/ejabberd/conf/<%= @host[:name] %>.crt"
|
<% @host[:certfiles].each do |certfile| %>
|
||||||
- "/opt/ejabberd/conf/<%= @host[:name] %>.key"
|
- <%= certfile %>
|
||||||
|
<% end %>
|
||||||
host_config:
|
host_config:
|
||||||
"<%= @host[:name] %>":
|
"<%= @host[:name] %>":
|
||||||
sql_type: pgsql
|
sql_type: pgsql
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ upstream_host = search(:node, "role:hubot").first["knife_zero"]["host"]
|
|||||||
|
|
||||||
tls_cert_for domain do
|
tls_cert_for domain do
|
||||||
auth "gandi_dns"
|
auth "gandi_dns"
|
||||||
|
acme_domain "letsencrypt.kosmos.org"
|
||||||
action :create
|
action :create
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ upstream_host = search(:node, "role:hubot").first["knife_zero"]["host"]
|
|||||||
|
|
||||||
tls_cert_for domain do
|
tls_cert_for domain do
|
||||||
auth "gandi_dns"
|
auth "gandi_dns"
|
||||||
|
acme_domain "letsencrypt.kosmos.org"
|
||||||
action :create
|
action :create
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
node.default["kosmos-mastodon"]["repo"] = "https://gitea.kosmos.org/kosmos/mastodon.git"
|
node.default["kosmos-mastodon"]["repo"] = "https://gitea.kosmos.org/kosmos/mastodon.git"
|
||||||
node.default["kosmos-mastodon"]["revision"] = "production"
|
node.default["kosmos-mastodon"]["revision"] = "production-4.3"
|
||||||
node.default["kosmos-mastodon"]["directory"] = "/opt/mastodon"
|
node.default["kosmos-mastodon"]["directory"] = "/opt/mastodon"
|
||||||
node.default["kosmos-mastodon"]["bind_ip"] = "127.0.0.1"
|
node.default["kosmos-mastodon"]["bind_ip"] = "127.0.0.1"
|
||||||
node.default["kosmos-mastodon"]["app_port"] = 3000
|
node.default["kosmos-mastodon"]["app_port"] = 3000
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Recipe:: default
|
# Recipe:: default
|
||||||
#
|
#
|
||||||
|
|
||||||
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_16.x"
|
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_18.x"
|
||||||
|
|
||||||
include_recipe "kosmos-nodejs"
|
include_recipe "kosmos-nodejs"
|
||||||
include_recipe "java"
|
include_recipe "java"
|
||||||
@@ -71,11 +71,7 @@ package %w(build-essential imagemagick ffmpeg libxml2-dev libxslt1-dev file git
|
|||||||
curl pkg-config libprotobuf-dev protobuf-compiler libidn11
|
curl pkg-config libprotobuf-dev protobuf-compiler libidn11
|
||||||
libidn11-dev libjemalloc2 libpq-dev)
|
libidn11-dev libjemalloc2 libpq-dev)
|
||||||
|
|
||||||
npm_package "yarn" do
|
ruby_version = "3.3.5"
|
||||||
version "1.22.4"
|
|
||||||
end
|
|
||||||
|
|
||||||
ruby_version = "3.3.0"
|
|
||||||
|
|
||||||
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
||||||
bundle_path = "#{ruby_path}/bin/bundle"
|
bundle_path = "#{ruby_path}/bin/bundle"
|
||||||
@@ -194,6 +190,9 @@ template "#{mastodon_path}/.env.#{rails_env}" do
|
|||||||
variables redis_url: node["kosmos-mastodon"]["redis_url"],
|
variables redis_url: node["kosmos-mastodon"]["redis_url"],
|
||||||
domain: node["kosmos-mastodon"]["domain"],
|
domain: node["kosmos-mastodon"]["domain"],
|
||||||
alternate_domains: node["kosmos-mastodon"]["alternate_domains"],
|
alternate_domains: node["kosmos-mastodon"]["alternate_domains"],
|
||||||
|
active_record_encryption_deterministic_key: credentials["active_record_encryption_deterministic_key"],
|
||||||
|
active_record_encryption_key_derivation_salt: credentials["active_record_encryption_key_derivation_salt"],
|
||||||
|
active_record_encryption_primary_key: credentials["active_record_encryption_primary_key"],
|
||||||
paperclip_secret: credentials['paperclip_secret'],
|
paperclip_secret: credentials['paperclip_secret'],
|
||||||
secret_key_base: credentials['secret_key_base'],
|
secret_key_base: credentials['secret_key_base'],
|
||||||
otp_secret: credentials['otp_secret'],
|
otp_secret: credentials['otp_secret'],
|
||||||
@@ -231,7 +230,7 @@ execute "yarn install" do
|
|||||||
environment deploy_env
|
environment deploy_env
|
||||||
user mastodon_user
|
user mastodon_user
|
||||||
cwd mastodon_path
|
cwd mastodon_path
|
||||||
command "yarn install --frozen-lockfile"
|
command "corepack prepare && yarn install --immutable"
|
||||||
end
|
end
|
||||||
|
|
||||||
execute "rake assets:precompile" do
|
execute "rake assets:precompile" do
|
||||||
|
|||||||
@@ -12,6 +12,13 @@ search(:node, "role:mastodon").each do |node|
|
|||||||
end
|
end
|
||||||
if upstream_hosts.any?
|
if upstream_hosts.any?
|
||||||
web_root_dir = "/var/www/#{server_name}/public"
|
web_root_dir = "/var/www/#{server_name}/public"
|
||||||
|
directory web_root_dir do
|
||||||
|
action :create
|
||||||
|
recursive true
|
||||||
|
owner 'www-data'
|
||||||
|
group 'www-data'
|
||||||
|
mode 0755
|
||||||
|
end
|
||||||
else
|
else
|
||||||
web_root_dir = "#{app_dir}/public"
|
web_root_dir = "#{app_dir}/public"
|
||||||
upstream_hosts << "localhost"
|
upstream_hosts << "localhost"
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ LOCAL_HTTPS=true
|
|||||||
|
|
||||||
# Application secrets
|
# Application secrets
|
||||||
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
|
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
|
||||||
|
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=<%= @active_record_encryption_deterministic_key %>
|
||||||
|
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=<%= @active_record_encryption_key_derivation_salt %>
|
||||||
|
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=<%= @active_record_encryption_primary_key %>
|
||||||
PAPERCLIP_SECRET=<%= @paperclip_secret %>
|
PAPERCLIP_SECRET=<%= @paperclip_secret %>
|
||||||
SECRET_KEY_BASE=<%= @secret_key_base %>
|
SECRET_KEY_BASE=<%= @secret_key_base %>
|
||||||
OTP_SECRET=<%= @otp_secret %>
|
OTP_SECRET=<%= @otp_secret %>
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ cookbook_file "#{node["nginx"]["user_home"]}/maintenance.html" do
|
|||||||
source "maintenance.html"
|
source "maintenance.html"
|
||||||
owner node['nginx']['user']
|
owner node['nginx']['user']
|
||||||
group node['nginx']['group']
|
group node['nginx']['group']
|
||||||
mode "0640"
|
mode "0755"
|
||||||
end
|
end
|
||||||
|
|
||||||
unless node.chef_environment == "development"
|
unless node.chef_environment == "development"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
node.default["gitea"]["version"] = "1.22.1"
|
node.default["gitea"]["version"] = "1.23.7"
|
||||||
node.default["gitea"]["checksum"] = "b8043324545eec269fc8f18c22b49fc365ed367e0dd41e081b79832de2570f9c"
|
node.default["gitea"]["checksum"] = "3c0a7121ad1d9c525a92c68a7c040546553cd41e7464ce2fa811246b648c0a46"
|
||||||
node.default["gitea"]["working_directory"] = "/var/lib/gitea"
|
node.default["gitea"]["working_directory"] = "/var/lib/gitea"
|
||||||
node.default["gitea"]["port"] = 3000
|
node.default["gitea"]["port"] = 3000
|
||||||
node.default["gitea"]["postgresql_host"] = "localhost:5432"
|
node.default["gitea"]["postgresql_host"] = "localhost:5432"
|
||||||
|
|||||||
@@ -24,9 +24,11 @@ NAME = gitea
|
|||||||
USER = gitea
|
USER = gitea
|
||||||
PASSWD = <%= @postgresql_password %>
|
PASSWD = <%= @postgresql_password %>
|
||||||
SSL_MODE = disable
|
SSL_MODE = disable
|
||||||
|
MAX_OPEN_CONNS = 20
|
||||||
|
|
||||||
[repository]
|
[repository]
|
||||||
ROOT = <%= @repository_root_directory %>
|
ROOT = <%= @repository_root_directory %>
|
||||||
|
DISABLE_DOWNLOAD_SOURCE_ARCHIVES = true
|
||||||
|
|
||||||
# [indexer]
|
# [indexer]
|
||||||
# ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
|
# ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ server {
|
|||||||
|
|
||||||
add_header Strict-Transport-Security "max-age=31536000";
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
|
|
||||||
client_max_body_size 20M;
|
client_max_body_size 121M;
|
||||||
|
|
||||||
location ~ ^/(avatars|repo-avatars)/.*$ {
|
location ~ ^/(avatars|repo-avatars)/.*$ {
|
||||||
proxy_buffers 1024 8k;
|
proxy_buffers 1024 8k;
|
||||||
|
|||||||
@@ -10,16 +10,6 @@ upstream _<%= @app_name %> {
|
|||||||
# TODO use cookbook attribute when enabling
|
# TODO use cookbook attribute when enabling
|
||||||
# variables_hash_max_size 2048;
|
# variables_hash_max_size 2048;
|
||||||
|
|
||||||
server {
|
|
||||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name <%= @server_name %>;
|
|
||||||
# Redirect to https
|
|
||||||
location / {
|
|
||||||
return 301 https://<%= @server_name %>$request_uri;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
||||||
listen [::]:443 ssl http2;
|
listen [::]:443 ssl http2;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
node.default['rskj']['version'] = '5.3.0~jammy'
|
node.default['rskj']['version'] = '7.0.0~jammy'
|
||||||
node.default['rskj']['network'] = 'testnet'
|
node.default['rskj']['network'] = 'testnet'
|
||||||
|
|
||||||
node.default['rskj']['nginx']['domain'] = nil
|
node.default['rskj']['nginx']['domain'] = nil
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ apt_repository 'rskj' do
|
|||||||
key '5EED9995C84A49BC02D4F507DF10691F518C7BEA'
|
key '5EED9995C84A49BC02D4F507DF10691F518C7BEA'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
apt_package 'openjdk-17-jdk'
|
||||||
|
|
||||||
apt_package 'rskj' do
|
apt_package 'rskj' do
|
||||||
response_file 'rskj-preseed.cfg.erb'
|
response_file 'rskj-preseed.cfg.erb'
|
||||||
response_file_variables network: node['rskj']['network']
|
response_file_variables network: node['rskj']['network']
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ end
|
|||||||
|
|
||||||
describe package('rskj') do
|
describe package('rskj') do
|
||||||
it { should be_installed }
|
it { should be_installed }
|
||||||
its('version') { should eq '5.3.0~jammy' }
|
its('version') { should eq '7.0.0~jammy' }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe service('rsk') do
|
describe service('rsk') do
|
||||||
|
|||||||
@@ -1,2 +1,10 @@
|
|||||||
node.default["strfry"]["ldap_search_dn"] = "ou=kosmos.org,cn=users,dc=kosmos,dc=org"
|
node.default["strfry"]["ldap_search_dn"] = "ou=kosmos.org,cn=users,dc=kosmos,dc=org"
|
||||||
node.default["strfry"]["extras_dir"] = "/opt/strfry"
|
node.default["strfry"]["extras_dir"] = "/opt/strfry"
|
||||||
|
|
||||||
|
# node.default["substr"]["repo"] = "https://gitea.kosmos.org/kosmos/substr.git"
|
||||||
|
# node.default["substr"]["revision"] = "master"
|
||||||
|
node.default["substr"]["version"] = "nightly"
|
||||||
|
node.default["substr"]["download_url"] = "https://gitea.kosmos.org/api/packages/kosmos/generic/substr/#{node["substr"]["version"]}/substr_x86_64-unknown-linux-gnu"
|
||||||
|
node.default["substr"]["workdir"] = "/opt/substr"
|
||||||
|
node.default["substr"]["port"] = 30023
|
||||||
|
node.default["substr"]["relay_urls"] = ["ws://localhost:7777"]
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ env = {
|
|||||||
ldap_bind_dn: ldap_credentials["service_dn"],
|
ldap_bind_dn: ldap_credentials["service_dn"],
|
||||||
ldap_password: ldap_credentials["service_password"],
|
ldap_password: ldap_credentials["service_password"],
|
||||||
ldap_search_dn: node["strfry"]["ldap_search_dn"],
|
ldap_search_dn: node["strfry"]["ldap_search_dn"],
|
||||||
whitelist_pubkeys: node["strfry"]["whitelist_pubkeys"].join(",")
|
whitelist_pubkeys: node["strfry"]["known_pubkeys"].values.join(",")
|
||||||
}
|
}
|
||||||
|
|
||||||
template "#{extras_dir}/.env" do
|
template "#{extras_dir}/.env" do
|
||||||
|
|||||||
100
site-cookbooks/kosmos_strfry/recipes/substr.rb
Normal file
100
site-cookbooks/kosmos_strfry/recipes/substr.rb
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
#
|
||||||
|
# Cookbook:: kosmos_strfry
|
||||||
|
# Recipe:: substr
|
||||||
|
#
|
||||||
|
|
||||||
|
unless platform?("ubuntu")
|
||||||
|
raise "This recipe only supports Ubuntu installs at the moment"
|
||||||
|
end
|
||||||
|
|
||||||
|
apt_package "imagemagick"
|
||||||
|
|
||||||
|
directory node["substr"]["workdir"] do
|
||||||
|
owner node["strfry"]["user"]
|
||||||
|
group node["strfry"]["group"]
|
||||||
|
mode "0755"
|
||||||
|
end
|
||||||
|
|
||||||
|
if node["substr"]["download_url"]
|
||||||
|
remote_file '/usr/local/bin/substr' do
|
||||||
|
source node["substr"]["download_url"]
|
||||||
|
checksum node["substr"]["checksum"]
|
||||||
|
mode '0755'
|
||||||
|
show_progress true
|
||||||
|
notifies :restart, "service[substr]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
exec_start = "/usr/local/bin/substr"
|
||||||
|
else
|
||||||
|
# TODO Install Deno 2
|
||||||
|
|
||||||
|
git node["substr"]["workdir"] do
|
||||||
|
user node["strfry"]["user"]
|
||||||
|
group node["strfry"]["group"]
|
||||||
|
repository node['substr']['repo']
|
||||||
|
revision node['substr']['revision']
|
||||||
|
action :sync
|
||||||
|
notifies :restart, "service[substr]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
exec_start = "deno task server"
|
||||||
|
end
|
||||||
|
|
||||||
|
file "#{node["substr"]["workdir"]}/users.yaml" do
|
||||||
|
mode "0644"
|
||||||
|
owner node["strfry"]["user"]
|
||||||
|
group node["strfry"]["group"]
|
||||||
|
content node["strfry"]["known_pubkeys"].to_yaml
|
||||||
|
notifies :restart, "service[substr]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
ldap_credentials = Chef::EncryptedDataBagItem.load('credentials', 'dirsrv')
|
||||||
|
|
||||||
|
env = {
|
||||||
|
port: node['substr']['port'],
|
||||||
|
base_url: "https://#{node["strfry"]["domain"]}",
|
||||||
|
relay_urls: node['substr']['relay_urls'].join(","),
|
||||||
|
ldap_url: 'ldap://ldap.kosmos.local:389', # requires "ldap_client" role
|
||||||
|
ldap_bind_dn: ldap_credentials["service_dn"],
|
||||||
|
ldap_password: ldap_credentials["service_password"],
|
||||||
|
ldap_search_dn: node["strfry"]["ldap_search_dn"],
|
||||||
|
}
|
||||||
|
|
||||||
|
template "#{node["substr"]["workdir"]}/.env" do
|
||||||
|
source 'env.erb'
|
||||||
|
owner node["strfry"]["user"]
|
||||||
|
group node["strfry"]["group"]
|
||||||
|
mode 0600
|
||||||
|
sensitive true
|
||||||
|
variables config: env
|
||||||
|
notifies :restart, "service[substr]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
systemd_unit "substr.service" do
|
||||||
|
content({
|
||||||
|
Unit: {
|
||||||
|
Description: "substr for nostr",
|
||||||
|
Documentation: ["https://gitea.kosmos.org/kosmos/substr"],
|
||||||
|
},
|
||||||
|
Service: {
|
||||||
|
Type: "simple",
|
||||||
|
User: node["strfry"]["user"],
|
||||||
|
WorkingDirectory: node["substr"]["workdir"],
|
||||||
|
ExecStart: exec_start,
|
||||||
|
Restart: "on-failure",
|
||||||
|
RestartSec: "5",
|
||||||
|
ProtectHome: "no",
|
||||||
|
NoNewPrivileges: "yes",
|
||||||
|
ProtectSystem: "full"
|
||||||
|
},
|
||||||
|
Install: {
|
||||||
|
WantedBy: "multi-user.target"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
triggers_reload true
|
||||||
|
action :create
|
||||||
|
end
|
||||||
|
|
||||||
|
service "substr" do
|
||||||
|
action [:enable, :start]
|
||||||
|
end
|
||||||
@@ -4,9 +4,16 @@ upstream _strfry {
|
|||||||
<% end %>
|
<% end %>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
upstream _substr {
|
||||||
|
<% @upstream_hosts.each do |host| %>
|
||||||
|
server <%= host %>:30023;
|
||||||
|
<% end %>
|
||||||
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
|
||||||
server_name <%= @domain %>;
|
server_name <%= @domain %>;
|
||||||
|
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
||||||
|
listen [::]:443 ssl http2;
|
||||||
|
|
||||||
access_log "/var/log/nginx/<%= @domain %>.access.log";
|
access_log "/var/log/nginx/<%= @domain %>.access.log";
|
||||||
error_log "/var/log/nginx/<%= @domain %>.error.log";
|
error_log "/var/log/nginx/<%= @domain %>.error.log";
|
||||||
@@ -14,6 +21,16 @@ server {
|
|||||||
ssl_certificate <%= @ssl_cert %>;
|
ssl_certificate <%= @ssl_cert %>;
|
||||||
ssl_certificate_key <%= @ssl_key %>;
|
ssl_certificate_key <%= @ssl_key %>;
|
||||||
|
|
||||||
|
location = /favicon.ico {
|
||||||
|
alias /var/www/assets.kosmos.org/site/img/favicon.ico;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* ^/[@~n]|^/assets {
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_pass http://_substr;
|
||||||
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
redirects = [
|
redirects = [
|
||||||
{
|
{
|
||||||
domain: "kosmos.chat",
|
domain: "kosmos.chat",
|
||||||
|
acme_domain: "letsencrypt.kosmos.org",
|
||||||
target: "https://kosmos.org",
|
target: "https://kosmos.org",
|
||||||
http_status: 307
|
http_status: 307
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,7 +14,5 @@ server {
|
|||||||
ssl_certificate <%= @ssl_cert %>;
|
ssl_certificate <%= @ssl_cert %>;
|
||||||
ssl_certificate_key <%= @ssl_key %>;
|
ssl_certificate_key <%= @ssl_key %>;
|
||||||
|
|
||||||
location / {
|
return <%= @http_status || 307 %> <%= @target %>;
|
||||||
return <%= @http_status || 301 %> <%= @target %>;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
server {
|
server {
|
||||||
server_name _;
|
server_name _;
|
||||||
listen 80 default_server;
|
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>80 default_server;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
return 301 https://<%= @domain %>;
|
return 301 https://<%= @domain %>;
|
||||||
@@ -14,6 +14,10 @@ server {
|
|||||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2 default_server;
|
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2 default_server;
|
||||||
listen [::]:443 ssl http2 default_server;
|
listen [::]:443 ssl http2 default_server;
|
||||||
|
|
||||||
|
if ($host != $server_name) {
|
||||||
|
return 307 $scheme://$server_name;
|
||||||
|
}
|
||||||
|
|
||||||
root /var/www/<%= @domain %>/public;
|
root /var/www/<%= @domain %>/public;
|
||||||
|
|
||||||
access_log <%= node[:openresty][:log_dir] %>/<%= @domain %>.access.log;
|
access_log <%= node[:openresty][:log_dir] %>/<%= @domain %>.access.log;
|
||||||
@@ -22,15 +26,18 @@ server {
|
|||||||
gzip_static on;
|
gzip_static on;
|
||||||
gzip_comp_level 5;
|
gzip_comp_level 5;
|
||||||
|
|
||||||
add_header 'Access-Control-Allow-Origin' '*';
|
|
||||||
|
|
||||||
ssl_certificate <%= @ssl_cert %>;
|
ssl_certificate <%= @ssl_cert %>;
|
||||||
ssl_certificate_key <%= @ssl_key %>;
|
ssl_certificate_key <%= @ssl_key %>;
|
||||||
|
|
||||||
|
location /.well-known/host-meta.json {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
}
|
||||||
|
|
||||||
<% if @accounts_url %>
|
<% if @accounts_url %>
|
||||||
location ~ ^/.well-known/(webfinger|nostr|lnurlp|keysend) {
|
location ~ ^/.well-known/(keysend|lnurlp|nostr|openpgpkey|webfinger) {
|
||||||
proxy_ssl_server_name on;
|
proxy_ssl_server_name on;
|
||||||
proxy_pass https://accounts.kosmos.org;
|
proxy_set_header X-Forwarded-Host $host;
|
||||||
|
proxy_pass <%= @accounts_url %>;
|
||||||
}
|
}
|
||||||
<% end %>
|
<% end %>
|
||||||
}
|
}
|
||||||
|
|||||||
Submodule site-cookbooks/strfry updated: a4756377b4...8df7c00a14
Reference in New Issue
Block a user