Compare commits
60 Commits
feature/ak
...
master
Author | SHA1 | Date | |
---|---|---|---|
63d0b68c36 | |||
3adb2a1aee | |||
9cff1fb68b | |||
3c51ff261e | |||
0c62ff6c84 | |||
2c3b381755 | |||
3492bec627 | |||
00f4c8bd31 | |||
301596500d | |||
8a2bfb6b18 | |||
846bf3483a | |||
e3ef1dc3b3 | |||
2089999cc8 | |||
a4aa29de0c | |||
98be234a4f | |||
|
7dc4f674a0 | ||
|
49b636305e | ||
|
3e2ee30334 | ||
d00072ee5a | |||
14687558fe | |||
de7cc69505 | |||
|
b01315f998 | ||
160134bd86 | |||
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 | |||
4ce39738fd | |||
d35e57b90e | |||
c8160e38c8 |
@ -1,72 +1,93 @@
|
||||
{
|
||||
"id": "akkounts",
|
||||
"postgresql_username": {
|
||||
"encrypted_data": "bDlOkEmhvMgyVzPeTNUzYnzRLf3T9cc0cDxt\n",
|
||||
"iv": "GCCUoqU5pxQ7fGkv\n",
|
||||
"auth_tag": "Q7mrSHIBluMe3CGVmoR86Q==\n",
|
||||
"rails_master_key": {
|
||||
"encrypted_data": "q/0BtGuFZJQhw+iG4ZmFG12DPaWQDGTb/nCmRoxOnsACkANqMv/zZ39CoNFe\nLPtZiItY\n",
|
||||
"iv": "JV8R0iu6TrqcZRxL\n",
|
||||
"auth_tag": "YxZIhEUnrd3XrwR6f9wO4A==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"postgresql_password": {
|
||||
"encrypted_data": "wD0HtdsNe/hl4ZaOy8hyr2k4z8TXQrrSja3KNVE47w==\n",
|
||||
"iv": "tb5yz8WDer0CsGvJ\n",
|
||||
"auth_tag": "/+K2anuCff/6M7Pu70Smqw==\n",
|
||||
"rails_secret_key_base": {
|
||||
"encrypted_data": "JmDQew3+OR6+yJ1xErwXeTn6jw8N2HwTc9yvAVJ3G+7w1s3N7rKDM6+M50ez\n2zP4Lm/eXzH4WTsTZlQcodlyNpi66pvUCGAkNM36rwTN5yvnhqPUmuSQi7AG\nDTBronBwr9ENvwA/gRuugyyhrRB1iuStpzpYKCMhZ2ae9Mrxdux0+ezfSLn4\nuP22uUrEqdQ/BWsW\n",
|
||||
"iv": "U/+YncCk13U6bYMz\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,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"sentry_dsn": {
|
||||
"encrypted_data": "jCz681x0WVixHYZUb62TO+1cgyJMiJ2UMqWcaztx57yDBOIiKW3oSZjuXdhP\n9WCesfXQF/lgzITZno3IKDqzlKjWgbGLC75y8FLguxidCHI=\n",
|
||||
"iv": "IRNOzN/hLwg1iqax\n",
|
||||
"auth_tag": "eg9dWnEK04JDb94e4CFa9Q==\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",
|
||||
"encrypted_data": "51cAERaRBCRg/sMb5c13EcnJzsz6VEf7jx6X3ooUSzm9wHoEfC5Hs/qakr/D\nqm9x3s3aGURRzyLUIEoe9jCohGguh6ehrXYVrun0B6pghVU=\n",
|
||||
"iv": "hJsiiW6dFQMEQ+2p\n",
|
||||
"auth_tag": "TOIahNrUhhsdQGlzp6UV5g==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"discourse_connect_secret": {
|
||||
"encrypted_data": "ENtMn+1XTVFmdEZw7LU6WGoMbSZY654ggm3vPACGfFgqo6r0LhG60c5OTdqv\nZvT5/Q==\n",
|
||||
"iv": "bL1BmvRhgxFqSM1P\n",
|
||||
"auth_tag": "sEBZzGWwwYFHn+4B4SsyCA==\n",
|
||||
"encrypted_data": "pvKcwuZgUJsAvClQ4V0BwhwEg09EUEWVxoSx+mFlfG1KpvZE4Cu3u3PalPSD\nldyKsw==\n",
|
||||
"iv": "ED85d6PKyaKB3Wlv\n",
|
||||
"auth_tag": "XVCU/WigC97tNe0bUK6okQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"lndhub_admin_token": {
|
||||
"encrypted_data": "4LPGFoARzI8UYnsJPIk8sax/rAA16pUULEZWn86e2C7L\n",
|
||||
"iv": "nvjXrOwgfgutwEVw\n",
|
||||
"auth_tag": "A89RUf1sdcS3FVscNPWYLg==\n",
|
||||
"encrypted_data": "LvCgahQblsKOxK9iNbwDd31atBfemVppHqV7s3K/sR4j\n",
|
||||
"iv": "zObzh2jEsqXk2vD2\n",
|
||||
"auth_tag": "n9m/sBYBfzggwQLWrGpR2Q==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"btcpay_auth_token": {
|
||||
"encrypted_data": "ky5iWYF06os0Ek6vIRzWqMTekqJhCOh/Q9DTDIeKhSyk8TnT3O71lCNEt1F5\nXCNq6ux3V6oyHVLWj0o=\n",
|
||||
"iv": "zk6WnxsY89oNW1F9\n",
|
||||
"auth_tag": "FAIMXKvQ1T7QKezVSNJbwQ==\n",
|
||||
"encrypted_data": "M4kGd6+jresm90nWrJG25mX6rfhaU+VlJlIVd/IjOAUsDABryyulJul3GZFh\nFPSI4uEhgIWtn56I0bA=\n",
|
||||
"iv": "hvqHm7A/YfUOJwRJ\n",
|
||||
"auth_tag": "DhtT6IeixD1MSRX+D7JxZA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_access_key": {
|
||||
"encrypted_data": "KfhfEGwPjOonlz6rpnNTinXFPqX/sIbqQn/aby0UDi/G/7cvEcOiNcCkfuSz\n",
|
||||
"iv": "Q3rg06v6K9pUDLDY\n",
|
||||
"auth_tag": "G5ugdlJ896KtYtObKLclJA==\n",
|
||||
"encrypted_data": "FPRpLZoIbLcVWPJhOlX7ZeXGv6TZIWYAD+BKTsJOyOHxDG3eRULqQc89cGWi\n",
|
||||
"iv": "f9WiiGLmDxtygp60\n",
|
||||
"auth_tag": "lGnq4itmByuF/Yp20/6coQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_secret_key": {
|
||||
"encrypted_data": "N8s1OoDrYXHjqSydQA0kY7dd68Aelq4+/cgmJlYfP92u4YA17V4TR7fsvQZL\nkqjuUSClNYPc0XiCwf/5gxVirE9AO6OmmvSV7lUyu4hcEY6unrU=\n",
|
||||
"iv": "bXzIVWnX6V0P6PRb\n",
|
||||
"auth_tag": "1EOjCfsX9P6ETjUsgBvBsA==\n",
|
||||
"encrypted_data": "JnnwISbHJ+d7JZB/C0NH0fb8p+bDSwoq5t5knSi+bSTltSxKcq6PRX9K6bov\nEbo0GTdWePbuc5NCsyYxfrkzCtpLXTIxeCROtinRmFIgMFNwaOA=\n",
|
||||
"iv": "pKPCaANDqGtbFV3V\n",
|
||||
"auth_tag": "S//hn2HOhuZH8+UfCNBWDg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"nostr_private_key": {
|
||||
"encrypted_data": "Sf8PEyQ0sqcgxddSlIDxLOVzPjOkTFObsYuTgcxkbEV7igrati4e8QVVUEBD\n1yoLJXelp8jlCr28Ectci29jc53gYSMTLSQsw97uYas2R0dGCqQ=\n",
|
||||
"iv": "+1CIUyvIUOveLrY4\n",
|
||||
"auth_tag": "GDqS+IuAIfMBmHIeFXaV7A==\n",
|
||||
"encrypted_data": "AKfFiLow+veDyEWBwmCDuLerT3l+o2aJUCeHg2mZZIyoH4oeo/9crZwIdjBn\n70reouqnHNG9mBHuO/+IPGfj53mHLo+oGHh+6LkL3ImI4MFBofY=\n",
|
||||
"iv": "bPlOKk2qkJAzdKf+\n",
|
||||
"auth_tag": "VIp1IOjBGatn2MN5LHVymg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -1,23 +1,23 @@
|
||||
{
|
||||
"id": "gandi_api",
|
||||
"key": {
|
||||
"encrypted_data": "Ky1/PdywtEIl5vVXhzu3n2JetqOxnNjpjQ7yCao6qwIAn8oYxnv1c1hFAQ==\n",
|
||||
"iv": "stAc2FxDvUqrh0kt\n",
|
||||
"auth_tag": "rcK4Qt+f2O4Zo5IMmG0fkw==\n",
|
||||
"encrypted_data": "lU7/xYTmP5Sb6SsK5TNNIyegWozzBtUzpg7oDdl6gcz9FEMmG2ft0Ljh5Q==\n",
|
||||
"iv": "EZPQD3C+wsP/mBhF\n",
|
||||
"auth_tag": "vF9E8Pj4Z8quJJdOMg/QTw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"access_token": {
|
||||
"encrypted_data": "J7zoLhEbPfPjnVWBmFmDdPKRer5GGw2o6Ad0uinznANugfaDiqjyYinOdEDF\nHlAqLmXv4J40rr3F+o4=\n",
|
||||
"iv": "fAxFqVh9QqrfBsPW\n",
|
||||
"auth_tag": "9ugi4frDLv8f7X0X1+k4DA==\n",
|
||||
"encrypted_data": "1Uw69JkNrmb8LU/qssuod1SlqxxrWR7TJQZeeivRrNzrMIVTEW/1uwJIYL6b\nM4GeeYl9lIRlMMmLBkc=\n",
|
||||
"iv": "cc1GJKu6Cf4DkIgX\n",
|
||||
"auth_tag": "ERem4S7ozG695kjvWIMghw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"domains": {
|
||||
"encrypted_data": "X0KOKlJp5GYbKcq/jzmlaMmTXV1U7exWSqi3UxX9Sw==\n",
|
||||
"iv": "9JucnYLlYdQ9N6pd\n",
|
||||
"auth_tag": "sERYPDnVUJwVfSS8/xrPpQ==\n",
|
||||
"encrypted_data": "scZ5blsSjs54DlitR7KZ3enLbyceOR5q0wjHw1golQ==\n",
|
||||
"iv": "oDcHm7shAzW97b4t\n",
|
||||
"auth_tag": "62Zais9yf68SwmZRsmZ3hw==\n",
|
||||
"version": 3,
|
||||
"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",
|
||||
"jwt_secret": {
|
||||
"encrypted_data": "3T4JYnoISKXCnatCBeLCXyE8wVjzphw5/JU5A0vHfQ2xSDZreIRQ\n",
|
||||
"iv": "bGQZjCk6FtD/hqVj\n",
|
||||
"auth_tag": "CS87+UK1ZIFMiNcNaoyO6w==\n",
|
||||
"encrypted_data": "lJsKBTCRzI83xmRHXzpnuRH/4cuMOR+Rd+SBU50G9HdibadIEDhS\n",
|
||||
"iv": "f/SvsWtZIYOVc54X\n",
|
||||
"auth_tag": "YlJ78EuJbcPfjCPc2eH+ug==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"postgresql_password": {
|
||||
"encrypted_data": "u8kf/6WdSTzyIz2kF+24JgOPLndWH2WmTFZ3CToJsnay\n",
|
||||
"iv": "KqLtV2UuaAzJx7C8\n",
|
||||
"auth_tag": "3aqx45+epb2NFkNfOfG89A==\n",
|
||||
"encrypted_data": "aT0yNlWjvk/0S4z2kZB4Ye1u/ngk5J6fGPbwZSfdq6cy\n",
|
||||
"iv": "OgUttF4LlSrL/7gH\n",
|
||||
"auth_tag": "pcbbGqbQ2RjU+i9dt8c3OQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"admin_token": {
|
||||
"encrypted_data": "Z737fXqRE9JHfunRhc2GG281dFFN1bvBvTzTDzl/Vb8O\n",
|
||||
"iv": "oKLQJbD67tiz2235\n",
|
||||
"auth_tag": "SlVIqC9d9SRoO78M7cBjTw==\n",
|
||||
"encrypted_data": "I9EsqCCxMIw+fX6sfu6KX8B5fJj9DX5Y4tbX30jdnmxr\n",
|
||||
"iv": "vnERvIWYInO6+Y8q\n",
|
||||
"auth_tag": "gO+MprZUQgPEWJQUmSF1sA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"sentry_dsn": {
|
||||
"encrypted_data": "gmDHGDWkTIvaXjcWMs1dnKnbqtsADPJ2mLmWw8Idj6RVevU5CabjvviAxEo1\n3hs2LWuObumRSCQt2QKap191uMq3CL2+da53hbsv+JUkxl4=\n",
|
||||
"iv": "Yt0fSsxL4SNicwUY\n",
|
||||
"auth_tag": "j7BWbcNnymHHMNTADWmCNw==\n",
|
||||
"encrypted_data": "+sUXWgl6dXpA1/0FqjKC3Jnl54aor6gtM+19EM/NsHwg4qu672YnSgxV+c9x\nHM3JZBYxBYvJ+HYGAvMmhlGvaOOEIvLmFUpCCJeVUXR32S8=\n",
|
||||
"iv": "82+DzAnHiptaX7sO\n",
|
||||
"auth_tag": "CDx44iRBVhSIF8DOxb2c+w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -105,19 +105,39 @@
|
||||
},
|
||||
"strfry": {
|
||||
"domain": "nostr.kosmos.org",
|
||||
"config": {
|
||||
"events": {
|
||||
"max_event_size": "524288"
|
||||
},
|
||||
"relay": {
|
||||
"bind": "0.0.0.0",
|
||||
"real_ip_header": "x-real-ip",
|
||||
"policy_path": "/opt/strfry/strfry-policy.ts",
|
||||
"whitelist_pubkeys": [
|
||||
"b3e1b7c1660b7db0ecb93ec55c09e67961171a5c4e9e2602f1b47477ea61c50a",
|
||||
"b3e1b7c0ef48294bd856203bfd460625de95d3afb894e5f09b14cd1f0e7097cf"
|
||||
],
|
||||
"info": {
|
||||
"name": "Kosmos Relay",
|
||||
"description": "Members-only nostr relay for kosmos.org users",
|
||||
"pubkey": "b3e1b7c0ef48294bd856203bfd460625de95d3afb894e5f09b14cd1f0e7097cf",
|
||||
"contact": "ops@kosmos.org",
|
||||
"icon": "https://assets.kosmos.org/img/app-icon-256px.png"
|
||||
},
|
||||
"write_policy": {
|
||||
"plugin": "/opt/strfry/strfry-policy.ts"
|
||||
},
|
||||
"logging": {
|
||||
"dump_in_all": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"known_pubkeys": {
|
||||
"_": "b3e1b7c0ef48294bd856203bfd460625de95d3afb894e5f09b14cd1f0e7097cf",
|
||||
"accounts": "b3e1b7c1660b7db0ecb93ec55c09e67961171a5c4e9e2602f1b47477ea61c50a",
|
||||
"bitcoincore": "47750177bb6bb113784e4973f6b2e3dd27ef1eff227d6e38d0046d618969e41a",
|
||||
"fiatjaf": "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"
|
||||
}
|
||||
},
|
||||
"substr": {
|
||||
"relay_urls": [
|
||||
"ws://localhost:7777"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +38,7 @@
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
|
@ -38,6 +38,7 @@
|
||||
"kosmos-bitcoin::dotnet",
|
||||
"kosmos-bitcoin::nbxplorer",
|
||||
"kosmos-bitcoin::btcpay",
|
||||
"kosmos-bitcoin::price_tracking",
|
||||
"apt::default",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
@ -102,6 +103,7 @@
|
||||
"role[bitcoind]",
|
||||
"role[lnd]",
|
||||
"role[lndhub]",
|
||||
"role[btcpay]"
|
||||
"role[btcpay]",
|
||||
"recipe[kosmos-bitcoin::price_tracking]"
|
||||
]
|
||||
}
|
@ -20,7 +20,7 @@
|
||||
"automatic": {
|
||||
"fqdn": "draco.kosmos.org",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-54-generic",
|
||||
"os_version": "5.4.0-187-generic",
|
||||
"hostname": "draco",
|
||||
"ipaddress": "148.251.237.73",
|
||||
"roles": [
|
||||
|
@ -8,26 +8,27 @@
|
||||
"automatic": {
|
||||
"fqdn": "drone-1",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1058-kvm",
|
||||
"os_version": "5.4.0-1133-kvm",
|
||||
"hostname": "drone-1",
|
||||
"ipaddress": "192.168.122.200",
|
||||
"roles": [
|
||||
"kvm_guest",
|
||||
"drone",
|
||||
"postgresql_client",
|
||||
"kvm_guest"
|
||||
"postgresql_client"
|
||||
],
|
||||
"recipes": [
|
||||
"kosmos-base",
|
||||
"kosmos-base::default",
|
||||
"kosmos_kvm::guest",
|
||||
"kosmos_postgresql::hostsfile",
|
||||
"kosmos_drone",
|
||||
"kosmos_drone::default",
|
||||
"kosmos_kvm::guest",
|
||||
"apt::default",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
@ -43,13 +44,13 @@
|
||||
"cloud": null,
|
||||
"chef_packages": {
|
||||
"chef": {
|
||||
"version": "17.9.52",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.9.52/lib",
|
||||
"version": "18.7.10",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.7.10/lib",
|
||||
"chef_effortless": null
|
||||
},
|
||||
"ohai": {
|
||||
"version": "17.9.0",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.9.0/lib/ohai"
|
||||
"version": "18.2.5",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.5/lib/ohai"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -9,7 +9,7 @@
|
||||
"automatic": {
|
||||
"fqdn": "gitea-2",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1096-kvm",
|
||||
"os_version": "5.4.0-1123-kvm",
|
||||
"hostname": "gitea-2",
|
||||
"ipaddress": "192.168.122.189",
|
||||
"roles": [
|
||||
@ -39,6 +39,7 @@
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
@ -49,6 +50,13 @@
|
||||
"postfix::sasl_auth",
|
||||
"hostname::default",
|
||||
"firewall::default",
|
||||
"kosmos_gitea::compile_from_source",
|
||||
"git::default",
|
||||
"git::package",
|
||||
"kosmos-nodejs::default",
|
||||
"nodejs::nodejs_from_package",
|
||||
"nodejs::repo",
|
||||
"golang::default",
|
||||
"backup::default",
|
||||
"logrotate::default"
|
||||
],
|
||||
|
@ -37,6 +37,7 @@
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
|
@ -22,6 +22,7 @@
|
||||
"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",
|
||||
|
@ -29,6 +29,7 @@
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
|
@ -27,11 +27,13 @@
|
||||
"strfry::default",
|
||||
"kosmos_strfry::policies",
|
||||
"kosmos_strfry::firewall",
|
||||
"kosmos_strfry::substr",
|
||||
"apt::default",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
|
@ -5,3 +5,11 @@ run_list %w(
|
||||
kosmos_gitea::default
|
||||
kosmos_gitea::backup
|
||||
)
|
||||
|
||||
override_attributes(
|
||||
"gitea" => {
|
||||
"repo" => "https://github.com/67P/gitea.git",
|
||||
"revision" => "ldap_sync",
|
||||
"log" => { "level" => "Info" }
|
||||
},
|
||||
)
|
||||
|
@ -3,6 +3,7 @@ name "postgresql_primary"
|
||||
run_list %w(
|
||||
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
|
||||
|
@ -5,4 +5,5 @@ run_list %w(
|
||||
strfry::default
|
||||
kosmos_strfry::policies
|
||||
kosmos_strfry::firewall
|
||||
kosmos_strfry::substr
|
||||
)
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 617f7959abda045326c8f06f1c1bcedbaa7c7285
|
||||
Subproject commit 92839b20a4c3b0a15b99bd86ea7cae16645570a6
|
@ -24,13 +24,12 @@ package "libvips"
|
||||
|
||||
include_recipe 'redisio::default'
|
||||
include_recipe 'redisio::enable'
|
||||
|
||||
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_20.x"
|
||||
include_recipe 'kosmos-nodejs'
|
||||
npm_package "bun"
|
||||
|
||||
npm_package "yarn" do
|
||||
version "1.22.4"
|
||||
end
|
||||
|
||||
ruby_version = "3.3.0"
|
||||
ruby_version = "3.3.8"
|
||||
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
||||
bundle_path = "#{ruby_path}/bin/bundle"
|
||||
rails_env = node.chef_environment == "development" ? "development" : "production"
|
||||
@ -48,7 +47,28 @@ webhooks_allowed_ips = [lndhub_host].compact.uniq.join(',')
|
||||
env = {
|
||||
primary_domain: node['akkounts']['primary_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(":")
|
||||
@ -138,9 +158,9 @@ if lndhub_host
|
||||
if postgres_readonly_host
|
||||
env[:lndhub_admin_ui] = true
|
||||
env[:lndhub_pg_host] = postgres_readonly_host
|
||||
env[:lndhub_pg_database] = node['akkounts']['lndhub']['postgres_db']
|
||||
env[:lndhub_pg_username] = credentials['postgresql_username']
|
||||
env[:lndhub_pg_password] = credentials['postgresql_password']
|
||||
env[:lndhub_pg_database] = node["akkounts"]["lndhub"]["postgres_db"]
|
||||
env[:lndhub_pg_username] = credentials["postgresql"]["username"]
|
||||
env[:lndhub_pg_password] = credentials["postgresql"]["password"]
|
||||
end
|
||||
end
|
||||
|
||||
@ -208,7 +228,7 @@ systemd_unit "akkounts.service" do
|
||||
Type: "simple",
|
||||
User: deploy_user,
|
||||
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",
|
||||
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",
|
||||
@ -225,36 +245,6 @@ systemd_unit "akkounts.service" do
|
||||
action [:create, :enable]
|
||||
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 = {
|
||||
"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",
|
||||
@ -267,15 +257,7 @@ git deploy_path do
|
||||
revision node[app_name]["revision"]
|
||||
user deploy_user
|
||||
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}-sidekiq]", :delayed
|
||||
end
|
||||
|
||||
file "#{deploy_path}/config/master.key" do
|
||||
@ -283,7 +265,7 @@ file "#{deploy_path}/config/master.key" do
|
||||
mode '0400'
|
||||
owner deploy_user
|
||||
group deploy_group
|
||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
||||
notifies :restart, "service[#{app_name}]", :delayed
|
||||
end
|
||||
|
||||
template "#{deploy_path}/.env.#{rails_env}" do
|
||||
@ -293,7 +275,7 @@ template "#{deploy_path}/.env.#{rails_env}" do
|
||||
mode 0600
|
||||
sensitive true
|
||||
variables config: env
|
||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
||||
notifies :restart, "service[#{app_name}]", :delayed
|
||||
end
|
||||
|
||||
execute "bundle install" do
|
||||
@ -303,13 +285,6 @@ execute "bundle install" do
|
||||
command "bundle install --without development,test --deployment"
|
||||
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
|
||||
environment deploy_env
|
||||
user deploy_user
|
||||
@ -330,10 +305,6 @@ service "akkounts" do
|
||||
action [:enable, :start]
|
||||
end
|
||||
|
||||
service "akkounts-sidekiq" do
|
||||
action [:enable, :start]
|
||||
end
|
||||
|
||||
firewall_rule "akkounts_zerotier" do
|
||||
command :allow
|
||||
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
|
2
site-cookbooks/kosmos-base/attributes/default.rb
Normal file
2
site-cookbooks/kosmos-base/attributes/default.rb
Normal file
@ -0,0 +1,2 @@
|
||||
node.default["kosmos-base"]["journald"]["system_max_use"] = "256M"
|
||||
node.default["kosmos-base"]["journald"]["max_retention_sec"] = "7d"
|
@ -27,6 +27,7 @@
|
||||
include_recipe 'apt'
|
||||
include_recipe 'timezone_iii'
|
||||
include_recipe 'ntp'
|
||||
include_recipe 'kosmos-base::journald_conf'
|
||||
include_recipe 'kosmos-base::systemd_emails'
|
||||
|
||||
node.override["apt"]["unattended_upgrades"]["allowed_origins"] = [
|
||||
|
14
site-cookbooks/kosmos-base/recipes/journald_conf.rb
Normal file
14
site-cookbooks/kosmos-base/recipes/journald_conf.rb
Normal file
@ -0,0 +1,14 @@
|
||||
#
|
||||
# Cookbook Name:: kosmos-base
|
||||
# Recipe:: journald_conf
|
||||
#
|
||||
|
||||
service "systemd-journald"
|
||||
|
||||
template "/etc/systemd/journald.conf" do
|
||||
source "journald.conf.erb"
|
||||
variables system_max_use: node["kosmos-base"]["journald"]["system_max_use"],
|
||||
max_retention_sec: node["kosmos-base"]["journald"]["max_retention_sec"]
|
||||
# Restarting journald is required
|
||||
notifies :restart, "service[systemd-journald]", :delayed
|
||||
end
|
@ -0,0 +1,6 @@
|
||||
[Journal]
|
||||
# Set the maximum size of the journal logs in bytes
|
||||
SystemMaxUse=<%= @system_max_use %>
|
||||
|
||||
# Set the number of days after which logs will be deleted
|
||||
MaxRetentionSec=<%= @max_retention_sec %>
|
@ -1,5 +1,5 @@
|
||||
node.default['bitcoin']['version'] = '28.0'
|
||||
node.default['bitcoin']['checksum'] = '700ae2d1e204602eb07f2779a6e6669893bc96c0dca290593f80ff8e102ff37f'
|
||||
node.default['bitcoin']['version'] = '29.0'
|
||||
node.default['bitcoin']['checksum'] = '882c782c34a3bf2eacd1fae5cdc58b35b869883512f197f7d6dc8f195decfdaa'
|
||||
node.default['bitcoin']['username'] = 'satoshi'
|
||||
node.default['bitcoin']['usergroup'] = 'bitcoin'
|
||||
node.default['bitcoin']['network'] = 'mainnet'
|
||||
@ -41,7 +41,7 @@ node.default['c-lightning']['log_level'] = 'info'
|
||||
node.default['c-lightning']['public_ip'] = '148.251.237.73'
|
||||
|
||||
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']['lnd_dir'] = "/home/#{node['bitcoin']['username']}/.lnd"
|
||||
node.default['lnd']['alias'] = 'ln2.kosmos.org'
|
||||
@ -90,7 +90,7 @@ node.default['dotnet']['ms_packages_src_url'] = "https://packages.microsoft.com/
|
||||
node.default['dotnet']['ms_packages_src_checksum'] = "4df5811c41fdded83eb9e2da9336a8dfa5594a79dc8a80133bd815f4f85b9991"
|
||||
|
||||
node.default['nbxplorer']['repo'] = 'https://github.com/dgarage/NBXplorer'
|
||||
node.default['nbxplorer']['revision'] = 'v2.5.0'
|
||||
node.default['nbxplorer']['revision'] = 'v2.5.26'
|
||||
node.default['nbxplorer']['source_dir'] = '/opt/nbxplorer'
|
||||
node.default['nbxplorer']['config_path'] = "/home/#{node['bitcoin']['username']}/.nbxplorer/Main/settings.config"
|
||||
node.default['nbxplorer']['port'] = '24445'
|
||||
@ -98,7 +98,7 @@ node.default['nbxplorer']['postgres']['database'] = 'nbxplorer'
|
||||
node.default['nbxplorer']['postgres']['user'] = 'nbxplorer'
|
||||
|
||||
node.default['btcpay']['repo'] = 'https://github.com/btcpayserver/btcpayserver'
|
||||
node.default['btcpay']['revision'] = 'v1.12.5'
|
||||
node.default['btcpay']['revision'] = 'v2.1.1'
|
||||
node.default['btcpay']['source_dir'] = '/opt/btcpay'
|
||||
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"
|
||||
@ -111,3 +111,5 @@ node.default['btcpay']['postgres']['user'] = 'satoshi'
|
||||
node.default['peerswap']['repo'] = 'https://github.com/ElementsProject/peerswap.git'
|
||||
node.default['peerswap']['revision'] = 'master'
|
||||
node.default['peerswap-lnd']['source_dir'] = '/opt/peerswap'
|
||||
|
||||
node.default['price_tracking']['rs_base_url'] = "https://storage.kosmos.org/kosmos/public/btc-price"
|
||||
|
@ -34,7 +34,7 @@ end
|
||||
execute "compile_bitcoin-core_dependencies" do
|
||||
cwd "/usr/local/bitcoind/depends"
|
||||
environment ({'CC' => 'gcc-13', 'CXX' => 'g++-13', 'NO_QT' => '1'})
|
||||
command "make -j 2"
|
||||
command "make -j $(($(nproc)/2))"
|
||||
action :nothing
|
||||
notifies :run, 'bash[compile_bitcoin-core]', :immediately
|
||||
end
|
||||
@ -43,21 +43,13 @@ bash "compile_bitcoin-core" do
|
||||
cwd "/usr/local/bitcoind"
|
||||
environment ({'CC' => 'gcc-13', 'CXX' => 'g++-13', 'NO_QT' => '1'})
|
||||
code <<-EOH
|
||||
./autogen.sh
|
||||
./configure --prefix=$PWD/depends/x86_64-pc-linux-gnu
|
||||
make
|
||||
cmake -B build --toolchain depends/x86_64-pc-linux-gnu/toolchain.cmake
|
||||
cmake --build build -j $(($(nproc)/2))
|
||||
cmake --install build
|
||||
EOH
|
||||
action :nothing
|
||||
end
|
||||
|
||||
link "/usr/local/bin/bitcoind" do
|
||||
to "/usr/local/bitcoind/src/bitcoind"
|
||||
end
|
||||
|
||||
link "/usr/local/bin/bitcoin-cli" do
|
||||
to "/usr/local/bitcoind/src/bitcoin-cli"
|
||||
end
|
||||
|
||||
bitcoin_user = node['bitcoin']['username']
|
||||
bitcoin_group = node['bitcoin']['usergroup']
|
||||
bitcoin_datadir = node['bitcoin']['datadir']
|
||||
|
@ -58,9 +58,7 @@ directory '/run/nbxplorer' do
|
||||
end
|
||||
|
||||
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_AUTOMIGRATE: "1",
|
||||
NBXPLORER_NOMIGRATEEVTS: "1"
|
||||
NBXPLORER_POSTGRES: "User ID=#{postgres_user};Password=#{credentials['postgresql_password']};Database=#{postgres_database};Host=pg.kosmos.local;Port=5432;Application Name=nbxplorer;MaxPoolSize=20"
|
||||
}
|
||||
|
||||
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
|
@ -110,6 +110,7 @@ hosts = [
|
||||
access_persistent: muc_create
|
||||
access_register: muc_create
|
||||
max_user_conferences: 1000
|
||||
max_users: 2000
|
||||
default_room_options:
|
||||
mam: true
|
||||
preload_rooms: true
|
||||
|
@ -16,8 +16,8 @@ set -e
|
||||
for domain in $RENEWED_DOMAINS; do
|
||||
case $domain in
|
||||
kosmos.org|kosmos.chat|5apps.com)
|
||||
cp "${RENEWED_LINEAGE}/privkey.pem" /opt/ejabberd/conf/$domain.key
|
||||
cp "${RENEWED_LINEAGE}/fullchain.pem" /opt/ejabberd/conf/$domain.crt
|
||||
cp "/etc/letsencrypt/live/${domain}/privkey.pem" /opt/ejabberd/conf/$domain.key
|
||||
cp "/etc/letsencrypt/live/${domain}/fullchain.pem" /opt/ejabberd/conf/$domain.crt
|
||||
chown ejabberd:ejabberd /opt/ejabberd/conf/$domain.*
|
||||
chmod 600 /opt/ejabberd/conf/$domain.*
|
||||
/opt/ejabberd-#{node["ejabberd"]["version"]}/bin/ejabberdctl reload_config
|
||||
@ -38,12 +38,13 @@ gandi_api_credentials = data_bag_item('credentials', 'gandi_api')
|
||||
template "/root/gandi_dns_certbot_hook.sh" do
|
||||
variables access_token: gandi_api_credentials["access_token"]
|
||||
mode 0700
|
||||
sensitive true
|
||||
end
|
||||
|
||||
# Generate a Let's Encrypt cert (only if no cert has been generated before).
|
||||
# The systemd timer will take care of renewing
|
||||
execute "letsencrypt cert for kosmos.org domains" do
|
||||
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 letsencrypt.kosmos.org\" --deploy-hook \"/etc/letsencrypt/renewal-hooks/post/ejabberd\" --email ops@kosmos.org -d kosmos.org -d xmpp.kosmos.org -d chat.kosmos.org -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
|
||||
File.exist?("/etc/letsencrypt/live/kosmos.org/fullchain.pem")
|
||||
end
|
||||
|
@ -185,8 +185,11 @@ api_permissions:
|
||||
what:
|
||||
- "add_rosteritem"
|
||||
- "delete_rosteritem"
|
||||
- "send_message"
|
||||
- "get_vcard2"
|
||||
- "muc_register_nick"
|
||||
- "private_set"
|
||||
- "send_message"
|
||||
- "send_stanza"
|
||||
|
||||
language: "en"
|
||||
|
||||
@ -231,7 +234,6 @@ modules:
|
||||
mod_shared_roster: {}
|
||||
mod_stun_disco:
|
||||
offer_local_services: false
|
||||
credentials_lifetime: 300
|
||||
secret: <%= @stun_secret %>
|
||||
services:
|
||||
-
|
||||
|
@ -265,6 +265,44 @@ service "mastodon-streaming" do
|
||||
action [:enable, :start]
|
||||
end
|
||||
|
||||
#
|
||||
# Delete cached remote media older than 30 days
|
||||
# Will be re-fetched if necessary
|
||||
#
|
||||
|
||||
systemd_unit 'mastodon-delete-old-media-cache.service' do
|
||||
content({
|
||||
Unit: {
|
||||
Description: 'Delete old Mastodon media cache'
|
||||
},
|
||||
Service: {
|
||||
Type: "oneshot",
|
||||
WorkingDirectory: mastodon_path,
|
||||
Environment: "RAILS_ENV=#{rails_env}",
|
||||
ExecStart: "#{bundle_path} exec bin/tootctl media remove --days 30",
|
||||
}
|
||||
})
|
||||
triggers_reload true
|
||||
action [:create]
|
||||
end
|
||||
|
||||
systemd_unit 'mastodon-delete-old-media-cache.timer' do
|
||||
content({
|
||||
Unit: {
|
||||
Description: 'Delete old Mastodon media cache'
|
||||
},
|
||||
Timer: {
|
||||
OnCalendar: '*-*-* 00:00:00',
|
||||
Persistent: 'true'
|
||||
},
|
||||
Install: {
|
||||
WantedBy: 'timer.target'
|
||||
}
|
||||
})
|
||||
triggers_reload true
|
||||
action [:create, :enable, :start]
|
||||
end
|
||||
|
||||
firewall_rule "mastodon_app" do
|
||||
port node['kosmos-mastodon']['app_port']
|
||||
source "10.1.1.0/24"
|
||||
|
@ -12,6 +12,13 @@ search(:node, "role:mastodon").each do |node|
|
||||
end
|
||||
if upstream_hosts.any?
|
||||
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
|
||||
web_root_dir = "#{app_dir}/public"
|
||||
upstream_hosts << "localhost"
|
||||
|
@ -59,7 +59,7 @@ cookbook_file "#{node["nginx"]["user_home"]}/maintenance.html" do
|
||||
source "maintenance.html"
|
||||
owner node['nginx']['user']
|
||||
group node['nginx']['group']
|
||||
mode "0640"
|
||||
mode "0755"
|
||||
end
|
||||
|
||||
unless node.chef_environment == "development"
|
||||
|
@ -26,7 +26,7 @@ template "#{deploy_path}/docker-compose.yml" do
|
||||
mode 0640
|
||||
variables domain: node["kosmos_drone"]["domain"],
|
||||
upstream_port: node["kosmos_drone"]["upstream_port"],
|
||||
gitea_server: "https://#{node["kosmos_gitea"]["nginx"]["domain"]}",
|
||||
gitea_server: "https://#{node["gitea"]["domain"]}",
|
||||
client_id: credentials['client_id'],
|
||||
client_secret: credentials['client_secret'],
|
||||
rpc_secret: credentials['rpc_secret'],
|
||||
|
@ -1,13 +1,21 @@
|
||||
node.default["gitea"]["version"] = "1.22.5"
|
||||
node.default["gitea"]["checksum"] = "ce2c7e4fff3c1e3ed59f5b5e00e3f2d301f012c34e329fccd564bc5129075460"
|
||||
node.default["gitea"]["version"] = "1.23.8"
|
||||
node.default["gitea"]["checksum"] = "827037e7ca940866918abc62a7488736923396c467fcb4acd0dd9829bb6a6f4c"
|
||||
node.default["gitea"]["repo"] = nil
|
||||
node.default["gitea"]["revision"] = nil
|
||||
node.default["gitea"]["working_directory"] = "/var/lib/gitea"
|
||||
node.default["gitea"]["port"] = 3000
|
||||
node.default["gitea"]["postgresql_host"] = "localhost:5432"
|
||||
node.default["gitea"]["domain"] = "gitea.kosmos.org"
|
||||
|
||||
node.default["gitea"]["config"] = {
|
||||
"log": {
|
||||
"level" => "Info",
|
||||
"logger.router.MODE" => "",
|
||||
"logger.xorm.MODE" => "",
|
||||
"logger.access.MODE" => ""
|
||||
},
|
||||
"actions": {
|
||||
"enabled": true
|
||||
"enabled" => true
|
||||
},
|
||||
"webhook": {
|
||||
"allowed_host_list" => "external,127.0.1.1"
|
||||
|
@ -10,5 +10,8 @@ chef_version '>= 14.0'
|
||||
depends "firewall"
|
||||
depends "kosmos_openresty"
|
||||
depends "kosmos_postgresql"
|
||||
depends "backup"
|
||||
depends "kosmos-dirsrv"
|
||||
depends 'kosmos-nodejs'
|
||||
depends 'git'
|
||||
depends 'golang'
|
||||
depends "backup"
|
||||
|
42
site-cookbooks/kosmos_gitea/recipes/compile_from_source.rb
Normal file
42
site-cookbooks/kosmos_gitea/recipes/compile_from_source.rb
Normal file
@ -0,0 +1,42 @@
|
||||
#
|
||||
# Cookbook:: kosmos_gitea
|
||||
# Recipe:: compile_from_source
|
||||
#
|
||||
# Compiles/installs Gitea from source
|
||||
#
|
||||
|
||||
include_recipe "git"
|
||||
|
||||
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_20.x"
|
||||
include_recipe 'kosmos-nodejs'
|
||||
|
||||
node.override["golang"]["version"] = "1.23.9"
|
||||
include_recipe "golang"
|
||||
|
||||
link "/usr/local/bin/go" do
|
||||
to "/usr/local/go/bin/go"
|
||||
end
|
||||
|
||||
source_dir = "/opt/gitea"
|
||||
|
||||
git source_dir do
|
||||
repository node["gitea"]["repo"]
|
||||
revision node["gitea"]["revision"]
|
||||
action :sync
|
||||
notifies :run, "execute[npm_install]", :immediately
|
||||
end
|
||||
|
||||
execute "npm_install" do
|
||||
cwd source_dir
|
||||
command "npm ci"
|
||||
action :nothing
|
||||
notifies :run, "bash[compile_gitea]", :immediately
|
||||
end
|
||||
|
||||
bash "compile_gitea" do
|
||||
cwd source_dir
|
||||
environment "TAGS" => "bindata"
|
||||
code "make build"
|
||||
action :nothing
|
||||
notifies :restart, "service[gitea]", :delayed
|
||||
end
|
@ -5,11 +5,12 @@
|
||||
|
||||
version = node["gitea"]["version"]
|
||||
download_url = "https://dl.gitea.io/gitea/#{version}/gitea-#{version}-linux-amd64"
|
||||
compile_from_source = node["gitea"]["repo"] && node["gitea"]["revision"]
|
||||
working_directory = node["gitea"]["working_directory"]
|
||||
git_home_directory = "/home/git"
|
||||
repository_root_directory = "#{git_home_directory}/gitea-repositories"
|
||||
config_directory = "/etc/gitea"
|
||||
gitea_binary_path = "/usr/local/bin/gitea"
|
||||
gitea_binary_path = compile_from_source ? "/opt/gitea/gitea" : "/usr/local/bin/gitea"
|
||||
gitea_data_bag_item = data_bag_item("credentials", "gitea")
|
||||
smtp_credentials = data_bag_item("credentials", "smtp")
|
||||
smtp_addr = smtp_credentials["relayhost"].split(":")[0]
|
||||
@ -18,7 +19,6 @@ jwt_secret = gitea_data_bag_item["jwt_secret"]
|
||||
internal_token = gitea_data_bag_item["internal_token"]
|
||||
secret_key = gitea_data_bag_item["secret_key"]
|
||||
|
||||
# Dependency
|
||||
package "git"
|
||||
|
||||
user "git" do
|
||||
@ -108,11 +108,15 @@ template "#{config_directory}/app.ini" do
|
||||
notifies :restart, "service[gitea]", :delayed
|
||||
end
|
||||
|
||||
remote_file gitea_binary_path do
|
||||
if compile_from_source
|
||||
include_recipe "kosmos_gitea::compile_from_source"
|
||||
else
|
||||
remote_file gitea_binary_path do
|
||||
source download_url
|
||||
checksum node['gitea']['checksum']
|
||||
mode "0755"
|
||||
notifies :restart, "service[gitea]", :delayed
|
||||
end
|
||||
end
|
||||
|
||||
execute "systemctl daemon-reload" do
|
||||
|
@ -24,9 +24,11 @@ NAME = gitea
|
||||
USER = gitea
|
||||
PASSWD = <%= @postgresql_password %>
|
||||
SSL_MODE = disable
|
||||
MAX_OPEN_CONNS = 20
|
||||
|
||||
[repository]
|
||||
ROOT = <%= @repository_root_directory %>
|
||||
DISABLE_DOWNLOAD_SOURCE_ARCHIVES = true
|
||||
|
||||
# [indexer]
|
||||
# ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
|
||||
@ -73,7 +75,10 @@ ENABLE_OPENID_SIGNUP = false
|
||||
|
||||
[log]
|
||||
MODE = console
|
||||
LEVEL = Debug
|
||||
LEVEL = <%= @config["log"]["level"] %>
|
||||
logger.router.MODE = <%= @config["log"]["logger.router.MODE"] %>
|
||||
logger.xorm.MODE = <%= @config["log"]["logger.xorm.MODE"] %>
|
||||
logger.access.MODE = <%= @config["log"]["logger.access.MODE"] %>
|
||||
|
||||
[attachment]
|
||||
ENABLED = true
|
||||
|
@ -16,7 +16,7 @@ server {
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000";
|
||||
|
||||
client_max_body_size 20M;
|
||||
client_max_body_size 121M;
|
||||
|
||||
location ~ ^/(avatars|repo-avatars)/.*$ {
|
||||
proxy_buffers 1024 8k;
|
||||
|
@ -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']['nginx']['domain'] = nil
|
||||
|
@ -19,6 +19,8 @@ apt_repository 'rskj' do
|
||||
key '5EED9995C84A49BC02D4F507DF10691F518C7BEA'
|
||||
end
|
||||
|
||||
apt_package 'openjdk-17-jdk'
|
||||
|
||||
apt_package 'rskj' do
|
||||
response_file 'rskj-preseed.cfg.erb'
|
||||
response_file_variables network: node['rskj']['network']
|
||||
|
@ -9,7 +9,7 @@ end
|
||||
|
||||
describe package('rskj') do
|
||||
it { should be_installed }
|
||||
its('version') { should eq '5.3.0~jammy' }
|
||||
its('version') { should eq '7.0.0~jammy' }
|
||||
end
|
||||
|
||||
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"]["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_password: ldap_credentials["service_password"],
|
||||
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
|
||||
|
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,6 +4,12 @@ upstream _strfry {
|
||||
<% end %>
|
||||
}
|
||||
|
||||
upstream _substr {
|
||||
<% @upstream_hosts.each do |host| %>
|
||||
server <%= host %>:30023;
|
||||
<% end %>
|
||||
}
|
||||
|
||||
server {
|
||||
server_name <%= @domain %>;
|
||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
||||
@ -15,6 +21,16 @@ server {
|
||||
ssl_certificate <%= @ssl_cert %>;
|
||||
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 / {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
@ -29,11 +29,15 @@ server {
|
||||
ssl_certificate <%= @ssl_cert %>;
|
||||
ssl_certificate_key <%= @ssl_key %>;
|
||||
|
||||
location /.well-known/host-meta.json {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
}
|
||||
|
||||
<% if @accounts_url %>
|
||||
location ~ ^/.well-known/(keysend|lnurlp|nostr|openpgpkey|webfinger) {
|
||||
proxy_ssl_server_name on;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_pass https://accounts.kosmos.org;
|
||||
proxy_pass <%= @accounts_url %>;
|
||||
}
|
||||
<% end %>
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 8df7c00a147873f5c0ac81dabc993ed25981c544
|
||||
Subproject commit 2c6e64d2311d2a50b207f4d970c3a951b73d2a5c
|
Loading…
x
Reference in New Issue
Block a user