Compare commits
1 Commits
master
...
feature/23
Author | SHA1 | Date | |
---|---|---|---|
6607474370 |
@ -21,6 +21,7 @@ cookbook 'composer', '~> 2.7.0'
|
||||
cookbook 'fail2ban', '~> 7.0.4'
|
||||
cookbook 'git', '~> 10.0.0'
|
||||
cookbook 'golang', '~> 5.3.1'
|
||||
cookbook 'gpg', '~> 2.0.13'
|
||||
cookbook 'hostname', '= 0.4.2'
|
||||
cookbook 'hostsfile', '~> 3.0.1'
|
||||
cookbook 'java', '~> 4.3.0'
|
||||
|
@ -8,6 +8,7 @@ DEPENDENCIES
|
||||
firewall (~> 6.2.16)
|
||||
git (~> 10.0.0)
|
||||
golang (~> 5.3.1)
|
||||
gpg (~> 2.0.13)
|
||||
hostname (= 0.4.2)
|
||||
hostsfile (~> 3.0.1)
|
||||
ipfs
|
||||
@ -59,6 +60,8 @@ GRAPH
|
||||
git (10.0.0)
|
||||
golang (5.3.1)
|
||||
ark (>= 6.0)
|
||||
gpg (2.0.13)
|
||||
yum-epel (>= 0.0.0)
|
||||
homebrew (5.4.1)
|
||||
hostname (0.4.2)
|
||||
hostsfile (>= 0.0.0)
|
||||
|
@ -38,10 +38,6 @@ 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
|
||||
|
||||
### 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
|
||||
|
||||
knife zero converge -p2222 name:server-name.kosmos.org
|
||||
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
4
clients/garage-4.json
Normal file
4
clients/garage-4.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"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"
|
||||
}
|
4
clients/garage-5.json
Normal file
4
clients/garage-5.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"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"
|
||||
}
|
4
clients/garage-6.json
Normal file
4
clients/garage-6.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"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"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
4
clients/postgres-5.json
Normal file
4
clients/postgres-5.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"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"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
5
cookbooks/gpg/.markdownlint-cli2.yaml
Normal file
5
cookbooks/gpg/.markdownlint-cli2.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
config:
|
||||
ul-indent: false # MD007
|
||||
line-length: false # MD013
|
||||
no-duplicate-heading: false # MD024
|
||||
reference-links-images: false # MD052
|
89
cookbooks/gpg/CHANGELOG.md
Normal file
89
cookbooks/gpg/CHANGELOG.md
Normal file
@ -0,0 +1,89 @@
|
||||
# gpg Cookbook CHANGELOG
|
||||
|
||||
This file is used to list changes made in each version of the gpg cookbook.
|
||||
|
||||
## 2.0.13 - *2024-05-02*
|
||||
|
||||
## 2.0.12 - *2024-05-02*
|
||||
|
||||
## 2.0.11 - *2023-09-28*
|
||||
|
||||
## 2.0.10 - *2023-09-04*
|
||||
|
||||
## 2.0.9 - *2023-07-10*
|
||||
|
||||
## 2.0.8 - *2023-05-16*
|
||||
|
||||
- Fix markdown formatting in the changelog
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.7 - *2023-05-16*
|
||||
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.6 - *2023-05-03*
|
||||
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.5 - *2023-04-01*
|
||||
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.4 - *2023-03-02*
|
||||
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.3 - *2023-02-14*
|
||||
|
||||
- Remove delivery folder
|
||||
|
||||
## 2.0.2 - *2021-08-31*
|
||||
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.1 - *2021-06-01*
|
||||
|
||||
- Standardise files with files in sous-chefs/repo-management
|
||||
|
||||
## 2.0.0 - *2021-05-07*
|
||||
|
||||
- Update tested platforms
|
||||
- Set minimum Chef version to 15.3 for unified_mode support
|
||||
|
||||
## 1.3.0 - *2020-12-14*
|
||||
|
||||
- Added support for SUSE and OpenSUSE
|
||||
|
||||
## 1.2.0 (2020-08-26)
|
||||
|
||||
- Comment out enforce_idempotency in kitchen.dokken.yml so tests work
|
||||
- Update/Remove the platforms we test against
|
||||
- Fix support for pinentry_mode on Ubuntu 16.04
|
||||
|
||||
## 1.1.0 (2020-05-14)
|
||||
|
||||
- resolved cookstyle error: resources/install.rb:1:36 convention: `Layout/TrailingWhitespace`
|
||||
- resolved cookstyle error: resources/install.rb:1:37 refactor: `ChefModernize/FoodcriticComments`
|
||||
|
||||
## 1.0.1 (2020-01-26)
|
||||
|
||||
- Use Github Actions for testing
|
||||
- Fix Ubuntu platform checks in the `gpg_key` resource
|
||||
- Use true/false in the resource to simplify the types
|
||||
|
||||
## 1.0.0 (2019-01-26)
|
||||
|
||||
- Adds two new resources `gpg_install` and `gpg_key`
|
||||
- Use CircleCI for testing
|
||||
|
||||
## 0.3.0 (2018-05-08)
|
||||
|
||||
- Sous Chefs will now be maintaining this cookbook. For more information on Sous Chefs see <http://sous-chefs.org/>
|
||||
- This cookbook now requires Chef 12 or later
|
||||
- Added a chefignore file
|
||||
- Added local testing with delivery local mode
|
||||
- Added Code of conduct, testing, contributing, license, and changelog files
|
||||
- Added `chef_version`, `source_url`, and `issues_url` to the metadata
|
||||
- Added ubuntu/debian to the metadata as supported platforms
|
||||
- Updated the kitchen config to use Vagrant on common platforms
|
||||
- Resolved all cookstyle / foodcritic warnings
|
202
cookbooks/gpg/LICENSE
Normal file
202
cookbooks/gpg/LICENSE
Normal file
@ -0,0 +1,202 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
63
cookbooks/gpg/README.md
Normal file
63
cookbooks/gpg/README.md
Normal file
@ -0,0 +1,63 @@
|
||||
# GPG cookbook
|
||||
|
||||
[](https://supermarket.chef.io/cookbooks/gpg)
|
||||
[](https://circleci.com/gh/sous-chefs/gpg)
|
||||
[](#backers)
|
||||
[](#sponsors)
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
|
||||
Installs and configures GPG on a system
|
||||
|
||||
## Maintainers
|
||||
|
||||
This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit [sous-chefs.org](https://sous-chefs.org/) or come chat with us on the Chef Community Slack in [#sous-chefs](https://chefcommunity.slack.com/messages/C2V7B88SF).
|
||||
|
||||
## Custom resources
|
||||
|
||||
This cookboks uses custom resources to control GPG2.
|
||||
|
||||
Install GPG2 and haveged
|
||||
|
||||
```ruby
|
||||
gpg_install
|
||||
```
|
||||
|
||||
Generate a GPG key for a user
|
||||
|
||||
```ruby
|
||||
gpg_key 'foo' do
|
||||
user 'foo'
|
||||
passphrase 'this-is-not-secure'
|
||||
end
|
||||
```
|
||||
|
||||
For further detail please see the documentation for each resource, or the test cookbook for example usage.
|
||||
|
||||
- [gpg_install](https://github.com/sous-chefs/gpg/blob/master/documentation/resource/install.md)
|
||||
- [gpg_key](https://github.com/sous-chefs/gpg/blob/master/documentation/resource/key.md)
|
||||
- [Test Cookbook](https://github.com/sous-chefs/gpg/blob/master/test/fixtures/cookbooks/test/recipes)
|
||||
|
||||
## Contributors
|
||||
|
||||
This project exists thanks to all the people who [contribute.](https://opencollective.com/sous-chefs/contributors.svg?width=890&button=false)
|
||||
|
||||
### Backers
|
||||
|
||||
Thank you to all our backers!
|
||||
|
||||

|
||||
|
||||
### Sponsors
|
||||
|
||||
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
115
cookbooks/gpg/chefignore
Normal file
115
cookbooks/gpg/chefignore
Normal file
@ -0,0 +1,115 @@
|
||||
# Put files/directories that should be ignored in this file when uploading
|
||||
# to a Chef Infra Server or Supermarket.
|
||||
# Lines that start with '# ' are comments.
|
||||
|
||||
# OS generated files #
|
||||
######################
|
||||
.DS_Store
|
||||
ehthumbs.db
|
||||
Icon?
|
||||
nohup.out
|
||||
Thumbs.db
|
||||
.envrc
|
||||
|
||||
# EDITORS #
|
||||
###########
|
||||
.#*
|
||||
.project
|
||||
.settings
|
||||
*_flymake
|
||||
*_flymake.*
|
||||
*.bak
|
||||
*.sw[a-z]
|
||||
*.tmproj
|
||||
*~
|
||||
\#*
|
||||
REVISION
|
||||
TAGS*
|
||||
tmtags
|
||||
.vscode
|
||||
.editorconfig
|
||||
|
||||
## COMPILED ##
|
||||
##############
|
||||
*.class
|
||||
*.com
|
||||
*.dll
|
||||
*.exe
|
||||
*.o
|
||||
*.pyc
|
||||
*.so
|
||||
*/rdoc/
|
||||
a.out
|
||||
mkmf.log
|
||||
|
||||
# Testing #
|
||||
###########
|
||||
.circleci/*
|
||||
.codeclimate.yml
|
||||
.delivery/*
|
||||
.foodcritic
|
||||
.kitchen*
|
||||
.mdlrc
|
||||
.overcommit.yml
|
||||
.rspec
|
||||
.rubocop.yml
|
||||
.travis.yml
|
||||
.watchr
|
||||
.yamllint
|
||||
azure-pipelines.yml
|
||||
Dangerfile
|
||||
examples/*
|
||||
features/*
|
||||
Guardfile
|
||||
kitchen*.yml
|
||||
mlc_config.json
|
||||
Procfile
|
||||
Rakefile
|
||||
spec/*
|
||||
test/*
|
||||
|
||||
# SCM #
|
||||
#######
|
||||
.git
|
||||
.gitattributes
|
||||
.gitconfig
|
||||
.github/*
|
||||
.gitignore
|
||||
.gitkeep
|
||||
.gitmodules
|
||||
.svn
|
||||
*/.bzr/*
|
||||
*/.git
|
||||
*/.hg/*
|
||||
*/.svn/*
|
||||
|
||||
# Berkshelf #
|
||||
#############
|
||||
Berksfile
|
||||
Berksfile.lock
|
||||
cookbooks/*
|
||||
tmp
|
||||
|
||||
# Bundler #
|
||||
###########
|
||||
vendor/*
|
||||
Gemfile
|
||||
Gemfile.lock
|
||||
|
||||
# Policyfile #
|
||||
##############
|
||||
Policyfile.rb
|
||||
Policyfile.lock.json
|
||||
|
||||
# Documentation #
|
||||
#############
|
||||
CODE_OF_CONDUCT*
|
||||
CONTRIBUTING*
|
||||
documentation/*
|
||||
TESTING*
|
||||
UPGRADING*
|
||||
|
||||
# Vagrant #
|
||||
###########
|
||||
.vagrant
|
||||
Vagrantfile
|
43
cookbooks/gpg/libraries/helpers.rb
Normal file
43
cookbooks/gpg/libraries/helpers.rb
Normal file
@ -0,0 +1,43 @@
|
||||
module Gpg
|
||||
module Helpers
|
||||
include Chef::Mixin::ShellOut
|
||||
|
||||
def key_exists(new_resource)
|
||||
gpg_check = gpg_cmd
|
||||
gpg_check << gpg_opts if new_resource.override_default_keyring
|
||||
gpg_check << "--list-keys | grep '#{new_resource.name_real}'"
|
||||
|
||||
cmd = Mixlib::ShellOut.new(
|
||||
gpg_check,
|
||||
user: new_resource.user,
|
||||
group: new_resource.group
|
||||
)
|
||||
|
||||
cmd.run_command
|
||||
|
||||
cmd.exitstatus == 0
|
||||
end
|
||||
|
||||
def gpg_opts(new_resource)
|
||||
if new_resource.override_default_keyring
|
||||
"--no-default-keyring --secret-keyring #{new_resource.secring_file} --keyring #{new_resource.pubring_file}"
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def gpg_cmd
|
||||
"gpg2 --homedir #{new_resource.home_dir} "
|
||||
end
|
||||
|
||||
def gpg2_packages
|
||||
packages = %w(haveged)
|
||||
if platform_family?('suse')
|
||||
packages.push('gpg2')
|
||||
else
|
||||
packages.push('gnupg2')
|
||||
end
|
||||
packages
|
||||
end
|
||||
end
|
||||
end
|
43
cookbooks/gpg/metadata.json
Normal file
43
cookbooks/gpg/metadata.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "gpg",
|
||||
"description": "Installs/Configures gpg",
|
||||
"long_description": "",
|
||||
"maintainer": "Sous Chefs",
|
||||
"maintainer_email": "help@sous-chefs.org",
|
||||
"license": "Apache-2.0",
|
||||
"platforms": {
|
||||
"debian": ">= 0.0.0",
|
||||
"ubuntu": ">= 0.0.0",
|
||||
"centos": ">= 0.0.0",
|
||||
"redhat": ">= 0.0.0",
|
||||
"oracle": ">= 0.0.0",
|
||||
"amazon": ">= 0.0.0",
|
||||
"opensuse": ">= 0.0.0",
|
||||
"suse": ">= 0.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"yum-epel": ">= 0.0.0"
|
||||
},
|
||||
"providing": {
|
||||
|
||||
},
|
||||
"recipes": {
|
||||
|
||||
},
|
||||
"version": "2.0.13",
|
||||
"source_url": "https://github.com/sous-chefs/gpg",
|
||||
"issues_url": "https://github.com/sous-chefs/gpg/issues",
|
||||
"privacy": false,
|
||||
"chef_versions": [
|
||||
[
|
||||
">= 15.3"
|
||||
]
|
||||
],
|
||||
"ohai_versions": [
|
||||
|
||||
],
|
||||
"gems": [
|
||||
|
||||
],
|
||||
"eager_load_libraries": true
|
||||
}
|
20
cookbooks/gpg/metadata.rb
Normal file
20
cookbooks/gpg/metadata.rb
Normal file
@ -0,0 +1,20 @@
|
||||
name 'gpg'
|
||||
maintainer 'Sous Chefs'
|
||||
maintainer_email 'help@sous-chefs.org'
|
||||
license 'Apache-2.0'
|
||||
description 'Installs/Configures gpg'
|
||||
source_url 'https://github.com/sous-chefs/gpg'
|
||||
issues_url 'https://github.com/sous-chefs/gpg/issues'
|
||||
version '2.0.13'
|
||||
chef_version '>= 15.3'
|
||||
|
||||
depends 'yum-epel'
|
||||
|
||||
supports 'debian'
|
||||
supports 'ubuntu'
|
||||
supports 'centos'
|
||||
supports 'redhat'
|
||||
supports 'oracle'
|
||||
supports 'amazon'
|
||||
supports 'opensuse'
|
||||
supports 'suse'
|
18
cookbooks/gpg/renovate.json
Normal file
18
cookbooks/gpg/renovate.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["config:base"],
|
||||
"packageRules": [
|
||||
{
|
||||
"groupName": "Actions",
|
||||
"matchUpdateTypes": ["minor", "patch", "pin"],
|
||||
"automerge": true,
|
||||
"addLabels": ["Release: Patch", "Skip: Announcements"]
|
||||
},
|
||||
{
|
||||
"groupName": "Actions",
|
||||
"matchUpdateTypes": ["major"],
|
||||
"automerge": false,
|
||||
"addLabels": ["Release: Patch", "Skip: Announcements"]
|
||||
}
|
||||
]
|
||||
}
|
18
cookbooks/gpg/resources/install.rb
Normal file
18
cookbooks/gpg/resources/install.rb
Normal file
@ -0,0 +1,18 @@
|
||||
unified_mode true
|
||||
|
||||
property :name, String, default: ''
|
||||
|
||||
action :install do
|
||||
include_recipe 'yum-epel' if platform_family?('rhel', 'amazon')
|
||||
|
||||
package gpg2_packages
|
||||
|
||||
service 'haveged' do
|
||||
supports [:status, :restart]
|
||||
action :start
|
||||
end
|
||||
end
|
||||
|
||||
action_class do
|
||||
include Gpg::Helpers
|
||||
end
|
166
cookbooks/gpg/resources/key.rb
Normal file
166
cookbooks/gpg/resources/key.rb
Normal file
@ -0,0 +1,166 @@
|
||||
unified_mode true
|
||||
|
||||
property :batch_name, String,
|
||||
name_property: true,
|
||||
description: 'Name of the key/batch to generate.'
|
||||
|
||||
property :override_default_keyring, [true, false],
|
||||
default: false,
|
||||
description: 'Set to true if you want to override the pubring_file and secring_file locations.'
|
||||
|
||||
property :pubring_file, String,
|
||||
description: 'Public keyring file location (override_default_keyring must be set to true or this option will be ignored)'
|
||||
|
||||
property :secring_file, String,
|
||||
description: 'Secret keyring file location (override_default_keyring must be set to true or this option will be ignored)'
|
||||
|
||||
property :user, String,
|
||||
default: 'root',
|
||||
description: 'User to generate the key for'
|
||||
|
||||
property :group, String,
|
||||
default: lazy { user },
|
||||
description: 'Group to run the generate command as'
|
||||
|
||||
property :key_type, String,
|
||||
default: '1', equal_to: %w(RSA 1 DSA 17 ),
|
||||
description: 'Corresponds to GPG option: Key-Type (RSA or DSA)'
|
||||
|
||||
property :key_length, String,
|
||||
default: '2048', equal_to: %w( 2048 4096 ),
|
||||
description: 'Corresponds to GPG option: Key-Length (2048 or 4096)'
|
||||
|
||||
property :name_real, String,
|
||||
default: lazy { "Chef Generated Default (#{batch_name})" },
|
||||
description: 'Corresponds to GPG option: Name-Real'
|
||||
|
||||
property :name_comment, String,
|
||||
default: 'generated by Chef',
|
||||
description: 'Corresponds to GPG option: Name-Comment'
|
||||
|
||||
property :name_email, String,
|
||||
default: lazy { "#{node.name}@example.com" },
|
||||
description: 'Corresponds to GPG option: Name-Email'
|
||||
|
||||
property :expire_date, String,
|
||||
default: '0',
|
||||
description: 'Corresponds to GPG option: Expire-Date. Defaults to 0 (no expiry)'
|
||||
|
||||
property :home_dir, String,
|
||||
default: lazy { ::File.expand_path("~#{user}/.gnupg") },
|
||||
description: 'Location to store the keyring. Defaults to ~/.gnupg'
|
||||
|
||||
property :batch_config_file, String,
|
||||
default: lazy { ::File.join(home_dir, "gpg_batch_config_#{batch_name}") },
|
||||
description: 'Batch config file name'
|
||||
|
||||
property :passphrase, String,
|
||||
sensitive: true,
|
||||
description: 'Passphrase for key'
|
||||
|
||||
property :key_file, String,
|
||||
description: 'Keyfile name'
|
||||
|
||||
property :key_fingerprint, String,
|
||||
description: 'Key finger print. Used to identify when deleting keys using the :delete action'
|
||||
|
||||
# Only Ubuntu > 16.04 supports the pinetree_mode. And requires it
|
||||
property :pinentry_mode, [String, FalseClass],
|
||||
default: platform?('ubuntu') && node['platform_version'].to_f > 16.04 ? 'loopback' : false,
|
||||
description: 'Pinentry mode. Set to loopback on Ubuntu and False (off) for all other platforms.'
|
||||
|
||||
property :batch, [true, false],
|
||||
default: true,
|
||||
description: 'Turn batch mode on or off when genrating keys'
|
||||
|
||||
action :generate do
|
||||
unless key_exists(new_resource)
|
||||
|
||||
config_dir = ::File.dirname(new_resource.batch_config_file)
|
||||
|
||||
directory config_dir do
|
||||
owner new_resource.user
|
||||
mode '0700'
|
||||
recursive true
|
||||
not_if { ::Dir.exist?(config_dir) }
|
||||
end
|
||||
|
||||
file new_resource.batch_config_file do
|
||||
content <<~EOS
|
||||
Key-Type: #{new_resource.key_type}
|
||||
Key-Length: #{new_resource.key_length}
|
||||
Name-Real: #{new_resource.name_real}
|
||||
Name-Comment: #{new_resource.name_comment}
|
||||
Name-Email: #{new_resource.name_email}
|
||||
Expire-Date: #{new_resource.expire_date}
|
||||
EOS
|
||||
|
||||
if new_resource.override_default_keyring
|
||||
content << "%pubring #{new_resource.pubring_file}\n"
|
||||
content << "%secring #{new_resource.secring_file}\n"
|
||||
end
|
||||
|
||||
content << "Passphrase: #{new_resource.passphrase}" if new_resource.passphrase
|
||||
content << "%commit\n"
|
||||
mode '0600'
|
||||
owner new_resource.user
|
||||
sensitive true
|
||||
end
|
||||
|
||||
cmd = gpg_cmd
|
||||
cmd << gpg_opts(new_resource) if new_resource.override_default_keyring
|
||||
cmd << " --passphrase #{new_resource.passphrase}"
|
||||
cmd << ' --yes'
|
||||
cmd << ' --batch' if new_resource.batch
|
||||
cmd << ' --pinentry-mode loopback' if new_resource.pinentry_mode
|
||||
cmd << " --gen-key #{new_resource.batch_config_file}"
|
||||
|
||||
execute 'gpg2: generate' do
|
||||
command cmd
|
||||
live_stream true
|
||||
user new_resource.user
|
||||
group new_resource.group
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
action :import do
|
||||
execute 'gpg2: import key' do
|
||||
command "#{gpg_cmd} --import #{new_resource.key_file}"
|
||||
user new_resource.user
|
||||
group new_resource.group
|
||||
not_if { key_exists(new_resource) }
|
||||
end
|
||||
end
|
||||
|
||||
action :export do
|
||||
execute 'gpg2: export key' do
|
||||
command "#{gpg_cmd} --export -a \"#{new_resource.name_real}\" > #{new_resource.key_file}"
|
||||
user new_resource.user
|
||||
group new_resource.group
|
||||
not_if { ::File.exist?(new_resource.key_file) }
|
||||
end
|
||||
end
|
||||
|
||||
action :delete_public_key do
|
||||
execute 'gpg2: delete key' do
|
||||
command "#{gpg_cmd} --batch --yes --delete-key \"#{new_resource.key_fingerprint}\""
|
||||
user new_resource.user
|
||||
group new_resource.group
|
||||
only_if { key_exists(new_resource) }
|
||||
end
|
||||
end
|
||||
|
||||
action :delete_secret_keys do
|
||||
execute 'gpg2: delete key' do
|
||||
command "#{gpg_cmd} --batch --yes --delete-secret-keys \"#{new_resource.key_fingerprint}\""
|
||||
user new_resource.user
|
||||
group new_resource.group
|
||||
only_if { key_exists(new_resource) }
|
||||
end
|
||||
end
|
||||
|
||||
action_class do
|
||||
include Gpg::Helpers
|
||||
end
|
@ -1,93 +1,72 @@
|
||||
{
|
||||
"id": "akkounts",
|
||||
"rails_master_key": {
|
||||
"encrypted_data": "q/0BtGuFZJQhw+iG4ZmFG12DPaWQDGTb/nCmRoxOnsACkANqMv/zZ39CoNFe\nLPtZiItY\n",
|
||||
"iv": "JV8R0iu6TrqcZRxL\n",
|
||||
"auth_tag": "YxZIhEUnrd3XrwR6f9wO4A==\n",
|
||||
"postgresql_username": {
|
||||
"encrypted_data": "bDlOkEmhvMgyVzPeTNUzYnzRLf3T9cc0cDxt\n",
|
||||
"iv": "GCCUoqU5pxQ7fGkv\n",
|
||||
"auth_tag": "Q7mrSHIBluMe3CGVmoR86Q==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"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",
|
||||
"postgresql_password": {
|
||||
"encrypted_data": "wD0HtdsNe/hl4ZaOy8hyr2k4z8TXQrrSja3KNVE47w==\n",
|
||||
"iv": "tb5yz8WDer0CsGvJ\n",
|
||||
"auth_tag": "/+K2anuCff/6M7Pu70Smqw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"sentry_dsn": {
|
||||
"encrypted_data": "51cAERaRBCRg/sMb5c13EcnJzsz6VEf7jx6X3ooUSzm9wHoEfC5Hs/qakr/D\nqm9x3s3aGURRzyLUIEoe9jCohGguh6ehrXYVrun0B6pghVU=\n",
|
||||
"iv": "hJsiiW6dFQMEQ+2p\n",
|
||||
"auth_tag": "TOIahNrUhhsdQGlzp6UV5g==\n",
|
||||
"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",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"discourse_connect_secret": {
|
||||
"encrypted_data": "pvKcwuZgUJsAvClQ4V0BwhwEg09EUEWVxoSx+mFlfG1KpvZE4Cu3u3PalPSD\nldyKsw==\n",
|
||||
"iv": "ED85d6PKyaKB3Wlv\n",
|
||||
"auth_tag": "XVCU/WigC97tNe0bUK6okQ==\n",
|
||||
"encrypted_data": "ENtMn+1XTVFmdEZw7LU6WGoMbSZY654ggm3vPACGfFgqo6r0LhG60c5OTdqv\nZvT5/Q==\n",
|
||||
"iv": "bL1BmvRhgxFqSM1P\n",
|
||||
"auth_tag": "sEBZzGWwwYFHn+4B4SsyCA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"lndhub_admin_token": {
|
||||
"encrypted_data": "LvCgahQblsKOxK9iNbwDd31atBfemVppHqV7s3K/sR4j\n",
|
||||
"iv": "zObzh2jEsqXk2vD2\n",
|
||||
"auth_tag": "n9m/sBYBfzggwQLWrGpR2Q==\n",
|
||||
"encrypted_data": "4LPGFoARzI8UYnsJPIk8sax/rAA16pUULEZWn86e2C7L\n",
|
||||
"iv": "nvjXrOwgfgutwEVw\n",
|
||||
"auth_tag": "A89RUf1sdcS3FVscNPWYLg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"btcpay_auth_token": {
|
||||
"encrypted_data": "M4kGd6+jresm90nWrJG25mX6rfhaU+VlJlIVd/IjOAUsDABryyulJul3GZFh\nFPSI4uEhgIWtn56I0bA=\n",
|
||||
"iv": "hvqHm7A/YfUOJwRJ\n",
|
||||
"auth_tag": "DhtT6IeixD1MSRX+D7JxZA==\n",
|
||||
"encrypted_data": "ky5iWYF06os0Ek6vIRzWqMTekqJhCOh/Q9DTDIeKhSyk8TnT3O71lCNEt1F5\nXCNq6ux3V6oyHVLWj0o=\n",
|
||||
"iv": "zk6WnxsY89oNW1F9\n",
|
||||
"auth_tag": "FAIMXKvQ1T7QKezVSNJbwQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_access_key": {
|
||||
"encrypted_data": "FPRpLZoIbLcVWPJhOlX7ZeXGv6TZIWYAD+BKTsJOyOHxDG3eRULqQc89cGWi\n",
|
||||
"iv": "f9WiiGLmDxtygp60\n",
|
||||
"auth_tag": "lGnq4itmByuF/Yp20/6coQ==\n",
|
||||
"encrypted_data": "KfhfEGwPjOonlz6rpnNTinXFPqX/sIbqQn/aby0UDi/G/7cvEcOiNcCkfuSz\n",
|
||||
"iv": "Q3rg06v6K9pUDLDY\n",
|
||||
"auth_tag": "G5ugdlJ896KtYtObKLclJA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_secret_key": {
|
||||
"encrypted_data": "JnnwISbHJ+d7JZB/C0NH0fb8p+bDSwoq5t5knSi+bSTltSxKcq6PRX9K6bov\nEbo0GTdWePbuc5NCsyYxfrkzCtpLXTIxeCROtinRmFIgMFNwaOA=\n",
|
||||
"iv": "pKPCaANDqGtbFV3V\n",
|
||||
"auth_tag": "S//hn2HOhuZH8+UfCNBWDg==\n",
|
||||
"encrypted_data": "N8s1OoDrYXHjqSydQA0kY7dd68Aelq4+/cgmJlYfP92u4YA17V4TR7fsvQZL\nkqjuUSClNYPc0XiCwf/5gxVirE9AO6OmmvSV7lUyu4hcEY6unrU=\n",
|
||||
"iv": "bXzIVWnX6V0P6PRb\n",
|
||||
"auth_tag": "1EOjCfsX9P6ETjUsgBvBsA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"nostr_private_key": {
|
||||
"encrypted_data": "AKfFiLow+veDyEWBwmCDuLerT3l+o2aJUCeHg2mZZIyoH4oeo/9crZwIdjBn\n70reouqnHNG9mBHuO/+IPGfj53mHLo+oGHh+6LkL3ImI4MFBofY=\n",
|
||||
"iv": "bPlOKk2qkJAzdKf+\n",
|
||||
"auth_tag": "VIp1IOjBGatn2MN5LHVymg==\n",
|
||||
"encrypted_data": "Sf8PEyQ0sqcgxddSlIDxLOVzPjOkTFObsYuTgcxkbEV7igrati4e8QVVUEBD\n1yoLJXelp8jlCr28Ectci29jc53gYSMTLSQsw97uYas2R0dGCqQ=\n",
|
||||
"iv": "+1CIUyvIUOveLrY4\n",
|
||||
"auth_tag": "GDqS+IuAIfMBmHIeFXaV7A==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -1,38 +1,27 @@
|
||||
{
|
||||
"id": "backup",
|
||||
"s3_access_key_id": {
|
||||
"encrypted_data": "245TrPvuoBRRTimhbt6qqsFb+JnnD377sPt1pguJy7Q2BXOy/jrX0wyMt+cP\nuA==\n",
|
||||
"iv": "ylmRxSRO3AA4MSJN\n",
|
||||
"auth_tag": "45tBcYZowPLrbv4Zu2P0Fw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
"encrypted_data": "emGNH4v7TTEh05Go/DsI3k7CFnaK4p/4JxodC4BYpyWw47/Z3dsuRMu4vXM3\n3YLH\n",
|
||||
"iv": "Dau+ekb3UTYdl8w3fQKVcA==\n",
|
||||
"version": 1,
|
||||
"cipher": "aes-256-cbc"
|
||||
},
|
||||
"s3_secret_access_key": {
|
||||
"encrypted_data": "jDIOjlBzTkBUzpj243T6KnBuH0qwyW7BUFMcqllljFSzxs7K8wYJOUreNbOP\ny8OpDWAuO0H4O4LuFMJXeM8=\n",
|
||||
"iv": "PzvZr37EkJqz6JtM\n",
|
||||
"auth_tag": "e3XW8oHVgmYibv/IBzj0yA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_endpoint": {
|
||||
"encrypted_data": "ErJIEChxrreW7WKEwRtuP2MyYlsZRtqLdGa/x5QY58qgO036FgR3Hs2Z3yce\n",
|
||||
"iv": "HOSAOgUjO7XGwk50\n",
|
||||
"auth_tag": "XE1bwMIXHHE72V9K2KOLnw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
"encrypted_data": "Mxyly86JxrWUbubbSiqPdRosChzfI1Q8eBEG4n+2B9JJG4yExltO5Wc5kgSs\nX01MPXAc+PGLm+J9MngUtypo/g==\n",
|
||||
"iv": "WRhBJGiuScYYsUsoT5j/UA==\n",
|
||||
"version": 1,
|
||||
"cipher": "aes-256-cbc"
|
||||
},
|
||||
"s3_region": {
|
||||
"encrypted_data": "8cNSaYu7HH95ftG66lFdUIPZD7soz907CPA=\n",
|
||||
"iv": "pU21ulF75y/SIs3x\n",
|
||||
"auth_tag": "7WQQCbSbB2GybjY+C+5IvQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
"encrypted_data": "2ZGxu0tVzKNfx3K1Wleg0SAwGaPkHCi/XfKpJ+J7q40=\n",
|
||||
"iv": "CNTZW2SEIgfw+IyzGI3TzQ==\n",
|
||||
"version": 1,
|
||||
"cipher": "aes-256-cbc"
|
||||
},
|
||||
"encryption_password": {
|
||||
"encrypted_data": "l23CiIO2s1fIRn0NdoWZ+wK+Zhx3hCYDHf4ypjqMRekZ7xqafvXHHuogD5aj\npxYUKloH\n",
|
||||
"iv": "Dzx83eP9L7Jqqidh\n",
|
||||
"auth_tag": "UVn5XA5Tgsikc1GdOt1MUQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
"encrypted_data": "tsBWKBwhQFfEAM0EWMPtljSbqU1c5mOJXPjYJjNT5RUFhPlqa7gsE8aJbs+D\nSPKjAQ62j+iHeqCk9mE9CCkgBA==\n",
|
||||
"iv": "uq5YAXuq2ynRLv9EIWoCFA==\n",
|
||||
"version": 1,
|
||||
"cipher": "aes-256-cbc"
|
||||
}
|
||||
}
|
@ -1,23 +1,23 @@
|
||||
{
|
||||
"id": "gandi_api",
|
||||
"key": {
|
||||
"encrypted_data": "lU7/xYTmP5Sb6SsK5TNNIyegWozzBtUzpg7oDdl6gcz9FEMmG2ft0Ljh5Q==\n",
|
||||
"iv": "EZPQD3C+wsP/mBhF\n",
|
||||
"auth_tag": "vF9E8Pj4Z8quJJdOMg/QTw==\n",
|
||||
"encrypted_data": "d3/rJMX6B9GuzUt0/mIk/lgQ3qGyQdbNXH6UEm3ZX7DeSl+rbW9FPJCRWg==\n",
|
||||
"iv": "15YVAYla7PqqVOab\n",
|
||||
"auth_tag": "xQSq+ld6SDOAER07N4ZkUQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"access_token": {
|
||||
"encrypted_data": "1Uw69JkNrmb8LU/qssuod1SlqxxrWR7TJQZeeivRrNzrMIVTEW/1uwJIYL6b\nM4GeeYl9lIRlMMmLBkc=\n",
|
||||
"iv": "cc1GJKu6Cf4DkIgX\n",
|
||||
"auth_tag": "ERem4S7ozG695kjvWIMghw==\n",
|
||||
"encrypted_data": "geQwcNosiJZmqbbMpD/I+a2yueBzpV6C8Rb7vrCD8kR161ZRjvqLe+g/1XpT\n2/65wKYDMTrdto1I030=\n",
|
||||
"iv": "1sj58eyooOZ8FTYn\n",
|
||||
"auth_tag": "yBNfgWXaToc06VDLly/HUw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"domains": {
|
||||
"encrypted_data": "scZ5blsSjs54DlitR7KZ3enLbyceOR5q0wjHw1golQ==\n",
|
||||
"iv": "oDcHm7shAzW97b4t\n",
|
||||
"auth_tag": "62Zais9yf68SwmZRsmZ3hw==\n",
|
||||
"encrypted_data": "p5rIQTyCE+0d4HIuA4GKEAFekh7qEC4xe9Rm/kP0DyzY83FO0/4uKIvYoZRB\n",
|
||||
"iv": "LWlx98NSS1/ngCH1\n",
|
||||
"auth_tag": "FID+x/LjTZ3cgQV5U2xZLA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"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": "lJsKBTCRzI83xmRHXzpnuRH/4cuMOR+Rd+SBU50G9HdibadIEDhS\n",
|
||||
"iv": "f/SvsWtZIYOVc54X\n",
|
||||
"auth_tag": "YlJ78EuJbcPfjCPc2eH+ug==\n",
|
||||
"encrypted_data": "3T4JYnoISKXCnatCBeLCXyE8wVjzphw5/JU5A0vHfQ2xSDZreIRQ\n",
|
||||
"iv": "bGQZjCk6FtD/hqVj\n",
|
||||
"auth_tag": "CS87+UK1ZIFMiNcNaoyO6w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"postgresql_password": {
|
||||
"encrypted_data": "aT0yNlWjvk/0S4z2kZB4Ye1u/ngk5J6fGPbwZSfdq6cy\n",
|
||||
"iv": "OgUttF4LlSrL/7gH\n",
|
||||
"auth_tag": "pcbbGqbQ2RjU+i9dt8c3OQ==\n",
|
||||
"encrypted_data": "u8kf/6WdSTzyIz2kF+24JgOPLndWH2WmTFZ3CToJsnay\n",
|
||||
"iv": "KqLtV2UuaAzJx7C8\n",
|
||||
"auth_tag": "3aqx45+epb2NFkNfOfG89A==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"admin_token": {
|
||||
"encrypted_data": "I9EsqCCxMIw+fX6sfu6KX8B5fJj9DX5Y4tbX30jdnmxr\n",
|
||||
"iv": "vnERvIWYInO6+Y8q\n",
|
||||
"auth_tag": "gO+MprZUQgPEWJQUmSF1sA==\n",
|
||||
"encrypted_data": "Z737fXqRE9JHfunRhc2GG281dFFN1bvBvTzTDzl/Vb8O\n",
|
||||
"iv": "oKLQJbD67tiz2235\n",
|
||||
"auth_tag": "SlVIqC9d9SRoO78M7cBjTw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"sentry_dsn": {
|
||||
"encrypted_data": "+sUXWgl6dXpA1/0FqjKC3Jnl54aor6gtM+19EM/NsHwg4qu672YnSgxV+c9x\nHM3JZBYxBYvJ+HYGAvMmhlGvaOOEIvLmFUpCCJeVUXR32S8=\n",
|
||||
"iv": "82+DzAnHiptaX7sO\n",
|
||||
"auth_tag": "CDx44iRBVhSIF8DOxb2c+w==\n",
|
||||
"encrypted_data": "gmDHGDWkTIvaXjcWMs1dnKnbqtsADPJ2mLmWw8Idj6RVevU5CabjvviAxEo1\n3hs2LWuObumRSCQt2QKap191uMq3CL2+da53hbsv+JUkxl4=\n",
|
||||
"iv": "Yt0fSsxL4SNicwUY\n",
|
||||
"auth_tag": "j7BWbcNnymHHMNTADWmCNw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -1,114 +1,93 @@
|
||||
{
|
||||
"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": {
|
||||
"encrypted_data": "AlsnNTRF6GEyHjMHnC4VdzF4swMlppz/Gcp1xr0OuMEgQiOcW1oSZjDRZCRV\nmuGqZXZx64wqZyzTsJZ6ayCLsmWlPq6L21odHWyO+P/C5ubenSXnuCjpUn3/\nHs8WLX3kwVmqCRnVgDl2vEZ5H4XedSLr7R7YM7gQkM0UX4muMDWWnOTR8/x/\ni1ecwBY5RjdewwyR\n",
|
||||
"iv": "RWiLePhFyPekYSl9\n",
|
||||
"auth_tag": "sUq4ZX9CFKPbwDyuKQfNLQ==\n",
|
||||
"encrypted_data": "VJn4Yd2N7qFV+nWXPjPA8Y2KEXL/gZs2gK5E3DZZc9ogFXV7RtpDtq+NKGJU\ndpR8ohtEZvkyC+iBkMAlnS1sSVKiLdQ1xXvbzkj04mYgjnLvwsZ19uVpBGwR\nt/DON7Bhe5Fw+OyrBQksqNcZQSpB9sMBfgA1IgCpdVGHQ8PmkMbFTaZZYcoF\n7gg3yUw5/0t3vRdL\n",
|
||||
"iv": "X5atp/KaIurfln/u\n",
|
||||
"auth_tag": "mVnBoUb5HwhXNYUddJbq8Q==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"secret_key_base": {
|
||||
"encrypted_data": "K5CmIXFa9mS4/dODBQAN9Bw0SFpbLiZAB8ewiYpkB8NDXP6X/BX8aDjW2Y4F\ncMvpFyiFldRBhrh1MSKTVYQEoJ3JhlNL9HCdPsAYbBEW70AuEBpHvOtD5OxH\nqgbH4Reuk6JX5AI8SwDD3zGrdT12mTFVNgSujzuZMvpi1Sro2HtRGAkjmnaa\nMGKrBV21O1CREJJg\n",
|
||||
"iv": "/yMMmz1YtKIs5HSd\n",
|
||||
"auth_tag": "WXgIVWjIdbMFlJhTD5J0JQ==\n",
|
||||
"encrypted_data": "d0sNREFhzQEJhkRzielbCNBJOVAdfThv7zcYTZ1vFZ20i/mzB9GWW2nb+1yn\nNFjAq8wCLpLXn9n3FClE+WOqnAw0jwTlyScRM5lzjKI5SxHKkBQHGyFs2AF8\nqFjEvpiqxhjsc4kNOJGO8DdcyHuulXyaO9fJg8HDnU1ov1vSSuTc0ABKgycY\nMq/Xt10UXnhP8cPw\n",
|
||||
"iv": "HFT7fdGQ2KRJ2NFy\n",
|
||||
"auth_tag": "C55JT2msLQCoI+09VKf+Jw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"otp_secret": {
|
||||
"encrypted_data": "OPLnYRySSIDOcVHy2A5V+pCrz9zVIPjdpAGmCdgQkXtJfsS9NzNtxOPwrXo6\nuQlV9iPjr1Y9ljGKYytbF0fPgAa5q6Z1oHMY9vOGs/LGKj8wHDmIvxQ+Gil1\nC+dZEePmqGaySlNSB/gNzcFIvjBH3mDxHJJe9hDxSv5miNS9l9f3UvQeLP2M\nU7/aHKagL9ZHOp/d\n",
|
||||
"iv": "wqJBLdZhJ7M/KRG9\n",
|
||||
"auth_tag": "dv5YyZszZCrRnTleaiGd4A==\n",
|
||||
"encrypted_data": "1iH7mUkaUzyn9dfDwMdiJ8X059qWSUO3DqivsOFfI1f44nMnzllaYPu6nh8O\nNLNCOzvsSAonhhaq1X+foOdyPIG2mGhE/juKveDD57/AdZAayHWsbsQlPC4l\nwdShz/ANrq0YZ/zOhpT2sZj1TZavW+S+JlxJFX2kP24D4dUzwG0vNj7522+Q\n9NAApJdUte1ZYF/b\n",
|
||||
"iv": "00/vs5zTdoC19+pS\n",
|
||||
"auth_tag": "3cjYqebMshnmWkQ3SdRcCQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"aws_access_key_id": {
|
||||
"encrypted_data": "A1/gfcyrwT6i9W6aGTJ8pH4Dm4o8ACDxvooDroA/2N0szOiNyiYX\n",
|
||||
"iv": "JNvf21KhdM3yoLGt\n",
|
||||
"auth_tag": "2xaZql1ymPYuXuvXzT3ymA==\n",
|
||||
"encrypted_data": "krcfpxOrAkwZR2GP4glTaFg2dw/COw8BO8I+KICqyl4bvpL5NrB9\n",
|
||||
"iv": "paoDKp6EIU8bjxzF\n",
|
||||
"auth_tag": "p6Pt/tz5dgGXzW5cO06nBg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"aws_secret_access_key": {
|
||||
"encrypted_data": "T1tc01nACxhDgygKaiAq3LChGYSgmW8LAwr1aSxXmJ5D2NtypJDikiHrJbFZ\nfWFgm1qe4L8iD/k5+ro=\n",
|
||||
"iv": "FDTPQQDLUMKW7TXx\n",
|
||||
"auth_tag": "msY6PFFYhlwQ0X7gekSDiw==\n",
|
||||
"encrypted_data": "aQySCT7gxeNiMMocq81KtIi+YzrZwMBeTd4LrRSN8iNEikWReJrrfagBwozy\n+Gfdw4bMGzY1dhF1Sl4=\n",
|
||||
"iv": "R/hvvOvmqq/uoKbx\n",
|
||||
"auth_tag": "QBJY/3+OprBXO/FSNwv2OQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"ldap_bind_dn": {
|
||||
"encrypted_data": "C/YNROVyOxmR4O2Cy52TX41EKli2bCOMzwYD+6Hz/SiKkgidnKUHlvHlbTDq\nkWwlRDM2o8esOCKaEAGPNWcNc9IHlaSsfwhr4YWnwe0=\n",
|
||||
"iv": "QCQF0+vH+//+nDxr\n",
|
||||
"auth_tag": "a0PbyO/7wjufqH2acDCqmQ==\n",
|
||||
"encrypted_data": "wDPABdL+DlXz2WWV4XwW20kM4EWPSwc/ajBmbdYMnjFau6c76CIBpbFhrFoj\n3mwDbHz8cgOnLNvozXSV4w6N7URCN/mWWTBHNhd3ppw=\n",
|
||||
"iv": "8rQ0M4LT1HbCNpq9\n",
|
||||
"auth_tag": "AuO5R6WCtd75TGJNfgFSCg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"ldap_password": {
|
||||
"encrypted_data": "SqwKeiyzfvvZGqH5gi35BdW3W+Fo/AQQjso1Yfp2XA==\n",
|
||||
"iv": "md2/etFJ1r/BKaYg\n",
|
||||
"auth_tag": "OlCCOoYSD7ukdH2yWCd6KA==\n",
|
||||
"encrypted_data": "y0t8RuptVYiTKmUhaAWsC4c2ZzhQsYeVLeMPiQBn+Q==\n",
|
||||
"iv": "mixYzDKkPSIDQ/l+\n",
|
||||
"auth_tag": "DbLlZG7rlgBmyCdJ3nhSYA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"smtp_user_name": {
|
||||
"encrypted_data": "0kzppmSSUg7lEyYnI5a0nf+xO0vSVx88rbxI+niIdzFOOBKSIL6uVHJ340dw\nMQ==\n",
|
||||
"iv": "lQR77ETTtIIyaG1r\n",
|
||||
"auth_tag": "smF2HRg8WdmD+MWwkT3TqA==\n",
|
||||
"encrypted_data": "Ugc29HUFcirv6jOOlYNs9uvmhfwa2rG41im/MusCx0Vu0AZKcdy0krGi/kCZ\nKg==\n",
|
||||
"iv": "ZlDK854w+vTNmeJe\n",
|
||||
"auth_tag": "Nj95g0JMxrT419OLQIX26g==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"smtp_password": {
|
||||
"encrypted_data": "1i0m9qiZA/8k8fMKo+04uyndl1UhagtHweBFICIorWALkB68edjb8OhUDxv9\nTubiXYRC\n",
|
||||
"iv": "IU2x4ips9HWmKoxi\n",
|
||||
"auth_tag": "BZJTDfPBvt8cf6/MbKzUJQ==\n",
|
||||
"encrypted_data": "D1TGjRfmM1ZeUmzwewlKXfQvvqTSzpzNlK5MKIU8dxbAH175UKn5qiemDEWe\nRYPe1LWT\n",
|
||||
"iv": "D1OVfD5bMcefM5DP\n",
|
||||
"auth_tag": "2E/q2gTbdXiLVnOMDeJv9w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"vapid_private_key": {
|
||||
"encrypted_data": "+LmySMvzrV3z2z7BmJG9hpvkL06mGc87RG20XQhhdAJ2Z/5uMMjev2pUf7du\ntv2qvDJAimhkZajuDGL9R3eq\n",
|
||||
"iv": "Mg7NhPl31O6Z4P+v\n",
|
||||
"auth_tag": "qYWPInhgoWAjg0zQ+XXt5w==\n",
|
||||
"encrypted_data": "+87bVrbd/XvWhZH1IYusc4Hla7ZZmylptAyJf48CMG/F3SMEO33OqW2I+UWh\nSkqbxai5+GaMhvZHB8U2Clod\n",
|
||||
"iv": "HVhNdFQl0TvCcjsa\n",
|
||||
"auth_tag": "EEQXuQ5keOHXmchhBh+Ixw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"vapid_public_key": {
|
||||
"encrypted_data": "NOyc+Cech9qG2HhnhajDaJMWd1OU5Rp6hws6i4xF5mLPePMJ9mJTqzklkuMK\npYSEdtcxA3KmDt1HrFxfezYUc9xO9pvlm0BPA7XAFmF/PU7/AJbFqgPU6pX/\ntSDLSdFuMB3ky+cl4DJi+O4=\n",
|
||||
"iv": "rgUglYiHB/mhqGha\n",
|
||||
"auth_tag": "DEX7hdNsNLi/LIrMkdUe/Q==\n",
|
||||
"encrypted_data": "nBm1lXbn1+Kzol95+QSEjsUI/n7ObhdEqEyfYcVSP/LiLy57KOBQDu6CjSMz\n+PN9yEP4lOjtscqHS29jTC2vi3PSui9XpOFHRxFBnDuyKxczrnID2KlLCNRQ\n228G3VRgFIMAWMYKACgzUk0=\n",
|
||||
"iv": "xHrVl+4JGkQbfUW3\n",
|
||||
"auth_tag": "rfFoBMocq17YiDSlOCvWqw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_key_id": {
|
||||
"encrypted_data": "rPVzrYYIbcM+ssVpdL6wpCTdzLIEKXke1+eMlPLMG2gPuoh+W3eO3nFGb/s2\n",
|
||||
"iv": "/qI8F9cvnfKG7ZXE\n",
|
||||
"auth_tag": "z1+MPdkO/+SCaag2ULelPg==\n",
|
||||
"encrypted_data": "pq0+VZhjoxzLuyY34f23wOmuks9Wevt8Wu6muKZAsZMSuU0iJvlRoK/65Qa0\n",
|
||||
"iv": "QTxO+IfYcpI170ON\n",
|
||||
"auth_tag": "4ZHva2iBYgDv6DyhMRRXzA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"s3_secret_key": {
|
||||
"encrypted_data": "RMnB9kZ+slbQXfpo0udYld6S1QqBxqM1YbszdLfSAdKK9I0J3Kmvh/CQ5Fbx\nyov6LClmsl1rjtH16r7cY32M4Woq+6miERdtecyDrrYkNHz0xkA=\n",
|
||||
"iv": "pO7bm3aOtjuwYjG/\n",
|
||||
"auth_tag": "SRvn4z1+Vd5VAGgjG64s+Q==\n",
|
||||
"encrypted_data": "YMZqKtOXDPAME8IWWC+lO8TsxHMzawlbTju9z/Hcb5DnQAOy82QufTN90m73\n/xikUboAdKcA5YGn0mkm+Rt/ygVR6DFirYV3kwi2M3qyGVJifug=\n",
|
||||
"iv": "9AwabheRFOgC8IKR\n",
|
||||
"auth_tag": "iU2kkA1q8OsblN5jaZrWGQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -105,39 +105,17 @@
|
||||
},
|
||||
"strfry": {
|
||||
"domain": "nostr.kosmos.org",
|
||||
"config": {
|
||||
"events": {
|
||||
"max_event_size": "524288"
|
||||
},
|
||||
"relay": {
|
||||
"bind": "0.0.0.0",
|
||||
"real_ip_header": "x-real-ip",
|
||||
"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"
|
||||
"real_ip_header": "x-real-ip",
|
||||
"policy_path": "/opt/strfry/strfry-policy.ts",
|
||||
"whitelist_pubkeys": [
|
||||
"b3e1b7c1660b7db0ecb93ec55c09e67961171a5c4e9e2602f1b47477ea61c50a"
|
||||
],
|
||||
"info": {
|
||||
"name": "Kosmos Relay",
|
||||
"description": "Members-only nostr relay for kosmos.org users",
|
||||
"pubkey": "1f79058c77a224e5be226c8f024cacdad4d741855d75ed9f11473ba8eb86e1cb",
|
||||
"contact": "ops@kosmos.org"
|
||||
}
|
||||
},
|
||||
"substr": {
|
||||
"relay_urls": [
|
||||
"ws://localhost:7777"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,6 @@
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
|
@ -16,6 +16,7 @@
|
||||
"kvm_guest",
|
||||
"sentry_client",
|
||||
"bitcoind",
|
||||
"cln",
|
||||
"lnd",
|
||||
"lndhub",
|
||||
"postgresql_client",
|
||||
@ -29,8 +30,10 @@
|
||||
"tor-full",
|
||||
"tor-full::default",
|
||||
"kosmos-bitcoin::bitcoind",
|
||||
"kosmos-bitcoin::c-lightning",
|
||||
"kosmos-bitcoin::lnd",
|
||||
"kosmos-bitcoin::lnd-scb-s3",
|
||||
"kosmos-bitcoin::boltz",
|
||||
"kosmos-bitcoin::rtl",
|
||||
"kosmos-bitcoin::peerswap-lnd",
|
||||
"kosmos_postgresql::hostsfile",
|
||||
@ -38,7 +41,6 @@
|
||||
"kosmos-bitcoin::dotnet",
|
||||
"kosmos-bitcoin::nbxplorer",
|
||||
"kosmos-bitcoin::btcpay",
|
||||
"kosmos-bitcoin::price_tracking",
|
||||
"apt::default",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
@ -101,9 +103,9 @@
|
||||
"role[sentry_client]",
|
||||
"recipe[tor-full]",
|
||||
"role[bitcoind]",
|
||||
"role[cln]",
|
||||
"role[lnd]",
|
||||
"role[lndhub]",
|
||||
"role[btcpay]",
|
||||
"recipe[kosmos-bitcoin::price_tracking]"
|
||||
"role[btcpay]"
|
||||
]
|
||||
}
|
@ -20,7 +20,7 @@
|
||||
"automatic": {
|
||||
"fqdn": "draco.kosmos.org",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-187-generic",
|
||||
"os_version": "5.4.0-54-generic",
|
||||
"hostname": "draco",
|
||||
"ipaddress": "148.251.237.73",
|
||||
"roles": [
|
||||
|
@ -8,27 +8,26 @@
|
||||
"automatic": {
|
||||
"fqdn": "drone-1",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1133-kvm",
|
||||
"os_version": "5.4.0-1058-kvm",
|
||||
"hostname": "drone-1",
|
||||
"ipaddress": "192.168.122.200",
|
||||
"roles": [
|
||||
"kvm_guest",
|
||||
"drone",
|
||||
"postgresql_client"
|
||||
"postgresql_client",
|
||||
"kvm_guest"
|
||||
],
|
||||
"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",
|
||||
@ -44,13 +43,13 @@
|
||||
"cloud": null,
|
||||
"chef_packages": {
|
||||
"chef": {
|
||||
"version": "18.7.10",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.7.10/lib",
|
||||
"version": "17.9.52",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.9.52/lib",
|
||||
"chef_effortless": null
|
||||
},
|
||||
"ohai": {
|
||||
"version": "18.2.5",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.5/lib/ohai"
|
||||
"version": "17.9.0",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.9.0/lib/ohai"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -59,4 +58,4 @@
|
||||
"role[kvm_guest]",
|
||||
"role[drone]"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
{
|
||||
"name": "garage-10",
|
||||
"name": "garage-4",
|
||||
"chef_environment": "production",
|
||||
"normal": {
|
||||
"knife_zero": {
|
||||
"host": "10.1.1.27"
|
||||
"host": "10.1.1.104"
|
||||
}
|
||||
},
|
||||
"automatic": {
|
||||
"fqdn": "garage-10",
|
||||
"fqdn": "garage-4",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1090-kvm",
|
||||
"hostname": "garage-10",
|
||||
"ipaddress": "192.168.122.70",
|
||||
"os_version": "5.4.0-132-generic",
|
||||
"hostname": "garage-4",
|
||||
"ipaddress": "192.168.122.123",
|
||||
"roles": [
|
||||
"base",
|
||||
"kvm_guest",
|
||||
@ -23,8 +23,7 @@
|
||||
"kosmos_kvm::guest",
|
||||
"kosmos_garage",
|
||||
"kosmos_garage::default",
|
||||
"kosmos_garage::firewall_rpc",
|
||||
"kosmos_garage::firewall_apis",
|
||||
"kosmos_garage::firewall",
|
||||
"apt::default",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
@ -39,20 +38,21 @@
|
||||
"postfix::_attributes",
|
||||
"postfix::sasl_auth",
|
||||
"hostname::default",
|
||||
"firewall::default"
|
||||
"firewall::default",
|
||||
"chef-sugar::default"
|
||||
],
|
||||
"platform": "ubuntu",
|
||||
"platform_version": "20.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",
|
||||
"version": "17.10.3",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.10.3/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"
|
||||
"version": "17.9.0",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.9.0/lib/ohai"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -61,4 +61,4 @@
|
||||
"role[kvm_guest]",
|
||||
"role[garage_node]"
|
||||
]
|
||||
}
|
||||
}
|
@ -1,17 +1,17 @@
|
||||
{
|
||||
"name": "garage-11",
|
||||
"name": "garage-5",
|
||||
"chef_environment": "production",
|
||||
"normal": {
|
||||
"knife_zero": {
|
||||
"host": "10.1.1.165"
|
||||
"host": "10.1.1.33"
|
||||
}
|
||||
},
|
||||
"automatic": {
|
||||
"fqdn": "garage-11",
|
||||
"fqdn": "garage-5",
|
||||
"os": "linux",
|
||||
"os_version": "5.15.0-1059-kvm",
|
||||
"hostname": "garage-11",
|
||||
"ipaddress": "192.168.122.9",
|
||||
"os_version": "5.15.0-84-generic",
|
||||
"hostname": "garage-5",
|
||||
"ipaddress": "192.168.122.55",
|
||||
"roles": [
|
||||
"base",
|
||||
"kvm_guest",
|
||||
@ -46,13 +46,13 @@
|
||||
"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",
|
||||
"version": "18.3.0",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.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"
|
||||
"version": "18.1.4",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
|
||||
}
|
||||
}
|
||||
},
|
@ -1,17 +1,17 @@
|
||||
{
|
||||
"name": "garage-9",
|
||||
"name": "garage-6",
|
||||
"chef_environment": "production",
|
||||
"normal": {
|
||||
"knife_zero": {
|
||||
"host": "10.1.1.223"
|
||||
"host": "10.1.1.161"
|
||||
}
|
||||
},
|
||||
"automatic": {
|
||||
"fqdn": "garage-9",
|
||||
"fqdn": "garage-6",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1090-kvm",
|
||||
"hostname": "garage-9",
|
||||
"ipaddress": "192.168.122.21",
|
||||
"hostname": "garage-6",
|
||||
"ipaddress": "192.168.122.213",
|
||||
"roles": [
|
||||
"base",
|
||||
"kvm_guest",
|
||||
@ -46,13 +46,13 @@
|
||||
"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",
|
||||
"version": "18.3.0",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.3.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"
|
||||
"version": "18.1.4",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
|
||||
}
|
||||
}
|
||||
},
|
@ -9,7 +9,7 @@
|
||||
"automatic": {
|
||||
"fqdn": "gitea-2",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1123-kvm",
|
||||
"os_version": "5.4.0-1096-kvm",
|
||||
"hostname": "gitea-2",
|
||||
"ipaddress": "192.168.122.189",
|
||||
"roles": [
|
||||
@ -32,14 +32,12 @@
|
||||
"kosmos_postgresql::hostsfile",
|
||||
"kosmos_gitea",
|
||||
"kosmos_gitea::default",
|
||||
"kosmos_gitea::backup",
|
||||
"kosmos_gitea::act_runner",
|
||||
"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",
|
||||
@ -49,16 +47,7 @@
|
||||
"postfix::_attributes",
|
||||
"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"
|
||||
"firewall::default"
|
||||
],
|
||||
"platform": "ubuntu",
|
||||
"platform_version": "20.04",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"fqdn": "mail.kosmos.org",
|
||||
"os": "linux",
|
||||
"os_version": "5.15.0-1048-kvm",
|
||||
"hostname": "mail.kosmos.org",
|
||||
"hostname": "mail",
|
||||
"ipaddress": "192.168.122.131",
|
||||
"roles": [
|
||||
"base",
|
||||
|
@ -37,7 +37,6 @@
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
@ -64,6 +63,8 @@
|
||||
"redisio::disable_os_default",
|
||||
"redisio::configure",
|
||||
"redisio::enable",
|
||||
"nodejs::npm",
|
||||
"nodejs::install",
|
||||
"backup::default",
|
||||
"logrotate::default"
|
||||
],
|
||||
|
@ -1,35 +1,37 @@
|
||||
{
|
||||
"name": "postgres-7",
|
||||
"chef_environment": "production",
|
||||
"name": "postgres-5",
|
||||
"normal": {
|
||||
"knife_zero": {
|
||||
"host": "10.1.1.134"
|
||||
"host": "10.1.1.54"
|
||||
}
|
||||
},
|
||||
"automatic": {
|
||||
"fqdn": "postgres-7",
|
||||
"fqdn": "postgres-5",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-1123-kvm",
|
||||
"hostname": "postgres-7",
|
||||
"ipaddress": "192.168.122.89",
|
||||
"os_version": "5.4.0-153-generic",
|
||||
"hostname": "postgres-5",
|
||||
"ipaddress": "192.168.122.211",
|
||||
"roles": [
|
||||
"base",
|
||||
"kvm_guest",
|
||||
"postgresql_replica"
|
||||
"postgresql_primary"
|
||||
],
|
||||
"recipes": [
|
||||
"kosmos-base",
|
||||
"kosmos-base::default",
|
||||
"kosmos_kvm::guest",
|
||||
"kosmos_postgresql::hostsfile",
|
||||
"kosmos_postgresql::replica",
|
||||
"kosmos_postgresql::primary",
|
||||
"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",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
"ntp::default",
|
||||
"ntp::apparmor",
|
||||
"kosmos-base::journald_conf",
|
||||
"kosmos-base::systemd_emails",
|
||||
"apt::unattended-upgrades",
|
||||
"kosmos-base::firewall",
|
||||
@ -45,19 +47,19 @@
|
||||
"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",
|
||||
"version": "18.2.7",
|
||||
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.2.7/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"
|
||||
"version": "18.1.4",
|
||||
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.1.4/lib/ohai"
|
||||
}
|
||||
}
|
||||
},
|
||||
"run_list": [
|
||||
"role[base]",
|
||||
"role[kvm_guest]",
|
||||
"role[postgresql_replica]"
|
||||
"role[postgresql_primary]"
|
||||
]
|
||||
}
|
@ -13,21 +13,12 @@
|
||||
"ipaddress": "192.168.122.60",
|
||||
"roles": [
|
||||
"base",
|
||||
"kvm_guest",
|
||||
"postgresql_primary"
|
||||
"kvm_guest"
|
||||
],
|
||||
"recipes": [
|
||||
"kosmos-base",
|
||||
"kosmos-base::default",
|
||||
"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",
|
||||
"timezone_iii::default",
|
||||
"timezone_iii::debian",
|
||||
@ -61,6 +52,6 @@
|
||||
"run_list": [
|
||||
"role[base]",
|
||||
"role[kvm_guest]",
|
||||
"role[postgresql_primary]"
|
||||
"role[postgresql_replica]"
|
||||
]
|
||||
}
|
||||
|
@ -1,62 +0,0 @@
|
||||
{
|
||||
"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,13 +27,11 @@
|
||||
"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",
|
||||
|
@ -8,19 +8,16 @@
|
||||
"automatic": {
|
||||
"fqdn": "wiki-1",
|
||||
"os": "linux",
|
||||
"os_version": "5.4.0-167-generic",
|
||||
"os_version": "5.4.0-91-generic",
|
||||
"hostname": "wiki-1",
|
||||
"ipaddress": "192.168.122.26",
|
||||
"roles": [
|
||||
"base",
|
||||
"kvm_guest",
|
||||
"ldap_client"
|
||||
"kvm_guest"
|
||||
],
|
||||
"recipes": [
|
||||
"kosmos-base",
|
||||
"kosmos-base::default",
|
||||
"kosmos_kvm::guest",
|
||||
"kosmos-dirsrv::hostsfile",
|
||||
"kosmos-mediawiki",
|
||||
"kosmos-mediawiki::default",
|
||||
"apt::default",
|
||||
@ -44,6 +41,7 @@
|
||||
"php::package",
|
||||
"php::ini",
|
||||
"composer::global_configs",
|
||||
"kosmos-dirsrv::hostsfile",
|
||||
"mediawiki::default",
|
||||
"mediawiki::database",
|
||||
"kosmos-nginx::default",
|
||||
@ -81,4 +79,4 @@
|
||||
"role[ldap_client]",
|
||||
"recipe[kosmos-mediawiki]"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -3,13 +3,4 @@ name "gitea"
|
||||
run_list %w(
|
||||
role[postgresql_client]
|
||||
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 "lnd"
|
||||
run_list %w(
|
||||
kosmos-bitcoin::lnd
|
||||
kosmos-bitcoin::lnd-scb-s3
|
||||
kosmos-bitcoin::boltz
|
||||
kosmos-bitcoin::rtl
|
||||
kosmos-bitcoin::peerswap-lnd
|
||||
)
|
||||
|
@ -3,7 +3,6 @@ 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,5 +5,4 @@ run_list %w(
|
||||
strfry::default
|
||||
kosmos_strfry::policies
|
||||
kosmos_strfry::firewall
|
||||
kosmos_strfry::substr
|
||||
)
|
||||
|
@ -42,5 +42,5 @@ default['backup']['orbit']['keep'] = 10
|
||||
default['backup']['cron']['hour'] = "05"
|
||||
default['backup']['cron']['minute'] = "7"
|
||||
|
||||
default['backup']['s3']['keep'] = 10
|
||||
default['backup']['s3']['bucket'] = "kosmos-backups"
|
||||
default['backup']['s3']['keep'] = 15
|
||||
default['backup']['s3']['bucket'] = "kosmos-dev-backups"
|
||||
|
@ -28,7 +28,6 @@ template "#{backup_dir}/config.rb" do
|
||||
sensitive true
|
||||
variables s3_access_key_id: backup_data["s3_access_key_id"],
|
||||
s3_secret_access_key: backup_data["s3_secret_access_key"],
|
||||
s3_endpoint: backup_data["s3_endpoint"],
|
||||
s3_region: backup_data["s3_region"],
|
||||
encryption_password: backup_data["encryption_password"],
|
||||
mail_from: "backups@kosmos.org",
|
||||
|
@ -23,10 +23,6 @@ Storage::S3.defaults do |s3|
|
||||
s3.secret_access_key = "<%= @s3_secret_access_key %>"
|
||||
s3.region = "<%= @s3_region %>"
|
||||
s3.bucket = "<%= node['backup']['s3']['bucket'] %>"
|
||||
s3.fog_options = {
|
||||
endpoint: "<%= @s3_endpoint %>",
|
||||
aws_signature_version: 2
|
||||
}
|
||||
end
|
||||
|
||||
Encryptor::OpenSSL.defaults do |encryption|
|
||||
@ -92,6 +88,7 @@ end
|
||||
|
||||
preconfigure 'KosmosBackup' do
|
||||
split_into_chunks_of 250 # megabytes
|
||||
store_with S3
|
||||
compress_with Bzip2
|
||||
encrypt_with OpenSSL
|
||||
notify_by Mail do |mail|
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 92839b20a4c3b0a15b99bd86ea7cae16645570a6
|
||||
Subproject commit 617f7959abda045326c8f06f1c1bcedbaa7c7285
|
@ -24,12 +24,13 @@ 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"
|
||||
|
||||
ruby_version = "3.3.8"
|
||||
npm_package "yarn" do
|
||||
version "1.22.4"
|
||||
end
|
||||
|
||||
ruby_version = "3.3.0"
|
||||
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
||||
bundle_path = "#{ruby_path}/bin/bundle"
|
||||
rails_env = node.chef_environment == "development" ? "development" : "production"
|
||||
@ -47,28 +48,7 @@ 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,
|
||||
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"
|
||||
rails_serve_static_files: true
|
||||
}
|
||||
|
||||
smtp_server, smtp_port = smtp_credentials[:relayhost].split(":")
|
||||
@ -158,9 +138,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
|
||||
|
||||
@ -228,7 +208,7 @@ systemd_unit "akkounts.service" do
|
||||
Type: "simple",
|
||||
User: deploy_user,
|
||||
WorkingDirectory: deploy_path,
|
||||
Environment: "RAILS_ENV=#{rails_env} SOLID_QUEUE_IN_PUMA=true",
|
||||
Environment: "RAILS_ENV=#{rails_env}",
|
||||
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",
|
||||
@ -245,6 +225,36 @@ 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",
|
||||
@ -257,7 +267,15 @@ 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
|
||||
@ -265,7 +283,7 @@ file "#{deploy_path}/config/master.key" do
|
||||
mode '0400'
|
||||
owner deploy_user
|
||||
group deploy_group
|
||||
notifies :restart, "service[#{app_name}]", :delayed
|
||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
||||
end
|
||||
|
||||
template "#{deploy_path}/.env.#{rails_env}" do
|
||||
@ -275,7 +293,7 @@ template "#{deploy_path}/.env.#{rails_env}" do
|
||||
mode 0600
|
||||
sensitive true
|
||||
variables config: env
|
||||
notifies :restart, "service[#{app_name}]", :delayed
|
||||
notifies :run, "execute[restart #{app_name} services]", :delayed
|
||||
end
|
||||
|
||||
execute "bundle install" do
|
||||
@ -285,6 +303,13 @@ 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
|
||||
@ -305,6 +330,10 @@ 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"]
|
||||
|
@ -1,22 +0,0 @@
|
||||
#
|
||||
# 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,10 +14,6 @@ server {
|
||||
listen [::]:443 ssl http2;
|
||||
server_name <%= @domain %>;
|
||||
|
||||
if ($host != $server_name) {
|
||||
return 301 $scheme://$server_name$request_uri;
|
||||
}
|
||||
|
||||
ssl_certificate <%= @ssl_cert %>;
|
||||
ssl_certificate_key <%= @ssl_key %>;
|
||||
|
||||
@ -43,9 +39,6 @@ server {
|
||||
|
||||
location @proxy {
|
||||
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-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
|
@ -1,2 +0,0 @@
|
||||
node.default["kosmos-base"]["journald"]["system_max_use"] = "256M"
|
||||
node.default["kosmos-base"]["journald"]["max_retention_sec"] = "7d"
|
@ -27,7 +27,6 @@
|
||||
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"] = [
|
||||
|
@ -1,14 +0,0 @@
|
||||
#
|
||||
# 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
|
@ -56,6 +56,7 @@ action :create do
|
||||
command <<-CMD
|
||||
certbot certonly --manual -n \
|
||||
--preferred-challenges dns \
|
||||
--manual-public-ip-logging-ok \
|
||||
--agree-tos \
|
||||
--manual-auth-hook '#{hook_auth_command}' \
|
||||
--manual-cleanup-hook '#{hook_cleanup_command}' \
|
||||
|
@ -1,6 +0,0 @@
|
||||
[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'] = '29.0'
|
||||
node.default['bitcoin']['checksum'] = '882c782c34a3bf2eacd1fae5cdc58b35b869883512f197f7d6dc8f195decfdaa'
|
||||
node.default['bitcoin']['version'] = '26.0'
|
||||
node.default['bitcoin']['checksum'] = 'ab1d99276e28db62d1d9f3901e85ac358d7f1ebcb942d348a9c4e46f0fcdc0a1'
|
||||
node.default['bitcoin']['username'] = 'satoshi'
|
||||
node.default['bitcoin']['usergroup'] = 'bitcoin'
|
||||
node.default['bitcoin']['network'] = 'mainnet'
|
||||
@ -24,8 +24,7 @@ node.default['bitcoin']['conf'] = {
|
||||
rpcbind: "127.0.0.1:8332",
|
||||
gen: 0,
|
||||
zmqpubrawblock: 'tcp://127.0.0.1:8337',
|
||||
zmqpubrawtx: 'tcp://127.0.0.1:8338',
|
||||
deprecatedrpc: 'warnings' # TODO remove when upgrading to LND 0.18.4
|
||||
zmqpubrawtx: 'tcp://127.0.0.1:8338'
|
||||
}
|
||||
|
||||
# Also enables Tor for LND
|
||||
@ -41,7 +40,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.5-beta'
|
||||
node.default['lnd']['revision'] = 'v0.17.3-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'
|
||||
@ -59,13 +58,24 @@ node.default['lnd']['tor'] = {
|
||||
'skip-proxy-for-clearnet-targets' => 'true'
|
||||
}
|
||||
|
||||
node.default['boltz']['repo'] = 'https://github.com/BoltzExchange/boltz-lnd.git'
|
||||
node.default['boltz']['revision'] = 'v1.2.7'
|
||||
node.default['boltz']['source_dir'] = '/opt/boltz'
|
||||
node.default['boltz']['boltz_dir'] = "/home/#{node['bitcoin']['username']}/.boltz-lnd"
|
||||
node.default['boltz']['grpc_host'] = '127.0.0.1'
|
||||
node.default['boltz']['grpc_port'] = '9002'
|
||||
node.default['boltz']['rest_disabled'] = 'false'
|
||||
node.default['boltz']['rest_host'] = '127.0.0.1'
|
||||
node.default['boltz']['rest_port'] = '9003'
|
||||
node.default['boltz']['no_macaroons'] = 'false'
|
||||
|
||||
node.default['rtl']['repo'] = 'https://github.com/Ride-The-Lightning/RTL.git'
|
||||
node.default['rtl']['revision'] = 'v0.15.2'
|
||||
node.default['rtl']['revision'] = 'v0.15.0'
|
||||
node.default['rtl']['host'] = '10.1.1.163'
|
||||
node.default['rtl']['port'] = '3000'
|
||||
|
||||
node.default['lndhub-go']['repo'] = 'https://github.com/getAlby/lndhub.go.git'
|
||||
node.default['lndhub-go']['revision'] = '1.0.2'
|
||||
node.default['lndhub-go']['revision'] = '0.14.0'
|
||||
node.default['lndhub-go']['source_dir'] = '/opt/lndhub-go'
|
||||
node.default['lndhub-go']['port'] = 3026
|
||||
node.default['lndhub-go']['domain'] = 'lndhub.kosmos.org'
|
||||
@ -73,10 +83,8 @@ node.default['lndhub-go']['postgres']['database'] = 'lndhub'
|
||||
node.default['lndhub-go']['postgres']['user'] = 'lndhub'
|
||||
node.default['lndhub-go']['postgres']['port'] = 5432
|
||||
node.default['lndhub-go']['default_rate_limit'] = 20
|
||||
node.default['lndhub-go']['strict_rate_limit'] = 1
|
||||
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']['strict_rate_limit'] = 1
|
||||
node.default['lndhub-go']['burst_rate_limit'] = 10
|
||||
node.default['lndhub-go']['branding'] = {
|
||||
'title' => 'LndHub - Kosmos Lightning',
|
||||
'desc' => 'Kosmos accounts for the Lightning Network',
|
||||
@ -90,7 +98,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.26'
|
||||
node.default['nbxplorer']['revision'] = 'v2.5.0'
|
||||
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 +106,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'] = 'v2.1.1'
|
||||
node.default['btcpay']['revision'] = 'v1.12.5'
|
||||
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,5 +119,3 @@ 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"
|
||||
|
@ -11,7 +11,6 @@ credentials = Chef::EncryptedDataBagItem.load('credentials', 'backup')
|
||||
|
||||
file "/root/.aws/config" do
|
||||
mode "600"
|
||||
sensitive true
|
||||
content lazy { <<-EOF
|
||||
[default]
|
||||
region = #{credentials["s3_region"]}
|
||||
|
@ -12,15 +12,8 @@ if node["bitcoin"]["blocksdir_mount_type"]
|
||||
include_recipe "kosmos-bitcoin::blocksdir-mount"
|
||||
end
|
||||
|
||||
apt_repository "ubuntu-toolchain-r" do
|
||||
# provides g++-13, needed for better c++-20 support
|
||||
uri "ppa:ubuntu-toolchain-r/test"
|
||||
end
|
||||
|
||||
%w{
|
||||
gcc-13 g++-13 libtool autotools-dev make automake cmake curl bison
|
||||
binutils-gold pkg-config python3 patch
|
||||
}.each do |pkg|
|
||||
%w{ libtool autotools-dev make automake cmake curl g++-multilib libtool
|
||||
binutils-gold bsdmainutils pkg-config python3 patch }.each do |pkg|
|
||||
apt_package pkg
|
||||
end
|
||||
|
||||
@ -33,21 +26,28 @@ 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 $(($(nproc)/2))"
|
||||
command "make NO_QT=1"
|
||||
action :nothing
|
||||
notifies :run, 'bash[compile_bitcoin-core]', :immediately
|
||||
end
|
||||
|
||||
bash "compile_bitcoin-core" do
|
||||
cwd "/usr/local/bitcoind"
|
||||
environment ({'CC' => 'gcc-13', 'CXX' => 'g++-13', 'NO_QT' => '1'})
|
||||
code <<-EOH
|
||||
cmake -B build --toolchain depends/x86_64-pc-linux-gnu/toolchain.cmake
|
||||
cmake --build build -j $(($(nproc)/2))
|
||||
cmake --install build
|
||||
./autogen.sh
|
||||
./configure --prefix=$PWD/depends/x86_64-pc-linux-gnu
|
||||
make
|
||||
EOH
|
||||
action :nothing
|
||||
notifies :restart, "systemd_unit[bitcoind.service]", :delayed
|
||||
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']
|
||||
|
87
site-cookbooks/kosmos-bitcoin/recipes/boltz.rb
Normal file
87
site-cookbooks/kosmos-bitcoin/recipes/boltz.rb
Normal file
@ -0,0 +1,87 @@
|
||||
#
|
||||
# Cookbook:: kosmos-bitcoin
|
||||
# Recipe:: boltz
|
||||
#
|
||||
|
||||
include_recipe "git"
|
||||
include_recipe "kosmos-bitcoin::golang"
|
||||
|
||||
git node['boltz']['source_dir'] do
|
||||
repository node['boltz']['repo']
|
||||
revision node['boltz']['revision']
|
||||
action :sync
|
||||
notifies :run, 'bash[compile_and_install_boltz]', :immediately
|
||||
end
|
||||
|
||||
bash "compile_and_install_boltz" do
|
||||
cwd node['boltz']['source_dir']
|
||||
code <<-EOH
|
||||
go mod vendor && \
|
||||
make build && \
|
||||
make install
|
||||
EOH
|
||||
action :nothing
|
||||
notifies :restart, "systemd_unit[boltzd.service]", :delayed
|
||||
end
|
||||
|
||||
bitcoin_user = node['bitcoin']['username']
|
||||
bitcoin_group = node['bitcoin']['usergroup']
|
||||
boltz_dir = node['boltz']['boltz_dir']
|
||||
lnd_dir = node['lnd']['lnd_dir']
|
||||
|
||||
directory boltz_dir do
|
||||
owner bitcoin_user
|
||||
group bitcoin_group
|
||||
mode '0750'
|
||||
action :create
|
||||
end
|
||||
|
||||
template "#{boltz_dir}/boltz.toml" do
|
||||
source "boltz.toml.erb"
|
||||
owner bitcoin_user
|
||||
group bitcoin_group
|
||||
mode '0640'
|
||||
variables lnd_grpc_host: '127.0.0.1',
|
||||
lnd_grpc_port: '10009',
|
||||
lnd_macaroon_path: "#{lnd_dir}/data/chain/bitcoin/mainnet/admin.macaroon",
|
||||
lnd_tlscert_path: "#{lnd_dir}/tls.cert",
|
||||
boltz_config: node['boltz']
|
||||
notifies :restart, "systemd_unit[boltzd.service]", :delayed
|
||||
end
|
||||
|
||||
systemd_unit 'boltzd.service' do
|
||||
content({
|
||||
Unit: {
|
||||
Description: 'Boltz Daemon',
|
||||
Documentation: ['https://lnd.docs.boltz.exchange'],
|
||||
Requires: 'lnd.service',
|
||||
After: 'lnd.service'
|
||||
},
|
||||
Service: {
|
||||
User: bitcoin_user,
|
||||
Group: bitcoin_group,
|
||||
Type: 'simple',
|
||||
ExecStart: "/opt/boltz/boltzd",
|
||||
Restart: 'always',
|
||||
RestartSec: '30',
|
||||
TimeoutSec: '240',
|
||||
LimitNOFILE: '128000',
|
||||
PrivateTmp: true,
|
||||
ProtectSystem: 'full',
|
||||
NoNewPrivileges: true,
|
||||
PrivateDevices: true,
|
||||
MemoryDenyWriteExecute: true
|
||||
},
|
||||
Install: {
|
||||
WantedBy: 'multi-user.target'
|
||||
}
|
||||
})
|
||||
verify false
|
||||
triggers_reload true
|
||||
action [:create, :enable, :start]
|
||||
end
|
||||
|
||||
unless node.chef_environment == 'development'
|
||||
node.override['backup']['archives']['boltz'] = [node['boltz']['boltz_dir']]
|
||||
include_recipe 'backup'
|
||||
end
|
@ -5,7 +5,7 @@
|
||||
# Internal recipe for managing the Go installation in one place
|
||||
#
|
||||
|
||||
node.override['golang']['version'] = "1.23.1"
|
||||
node.override['golang']['version'] = "1.20.3"
|
||||
include_recipe "golang"
|
||||
|
||||
link '/usr/local/bin/go' do
|
||||
|
@ -10,14 +10,12 @@ include_recipe "kosmos-bitcoin::aws-client"
|
||||
package "inotify-tools"
|
||||
|
||||
backup_script_path = "/opt/lnd-channel-backup-s3.sh"
|
||||
backup_credentials = Chef::EncryptedDataBagItem.load('credentials', 'backup')
|
||||
|
||||
template backup_script_path do
|
||||
source "lnd-channel-backup-s3.sh.erb"
|
||||
mode '0740'
|
||||
variables lnd_dir: node['lnd']['lnd_dir'],
|
||||
bitcoin_network: node['bitcoin']['network'],
|
||||
s3_endpoint: backup_credentials['s3_endpoint'],
|
||||
s3_bucket: node['backup']['s3']['bucket'],
|
||||
s3_scb_dir: "#{node['name']}/lnd/#{node['bitcoin']['network']}"
|
||||
notifies :restart, "systemd_unit[lnd-channel-backup.service]", :delayed
|
||||
|
@ -66,8 +66,6 @@ template "#{source_dir}/.env" do
|
||||
default_rate_limit: node['lndhub-go']['default_rate_limit'],
|
||||
strict_rate_limit: node['lndhub-go']['strict_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'],
|
||||
webhook_url: node['lndhub-go']['webhook_url'],
|
||||
sentry_dsn: credentials['sentry_dsn']
|
||||
|
@ -58,7 +58,9 @@ 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_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
|
||||
|
@ -1,59 +0,0 @@
|
||||
#
|
||||
# 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
|
@ -46,22 +46,24 @@ rtl_config = {
|
||||
multiPassHashed: credentials["multiPassHashed"]
|
||||
}
|
||||
|
||||
if node['boltz']
|
||||
# TODO adapt for multi-node usage
|
||||
rtl_config[:nodes][0][:Authentication][:boltzMacaroonPath] = "#{node['boltz']['boltz_dir']}/macaroons"
|
||||
rtl_config[:nodes][0][:Settings][:boltzServerUrl] = "https://#{node['boltz']['rest_host']}:#{node['boltz']['rest_port']}"
|
||||
end
|
||||
|
||||
git rtl_dir do
|
||||
user bitcoin_user
|
||||
group bitcoin_group
|
||||
repository node['rtl']['repo']
|
||||
revision node['rtl']['revision']
|
||||
notifies :run, "execute[npm_install]", :immediately
|
||||
notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
|
||||
end
|
||||
|
||||
execute "npm_install" do
|
||||
execute "npm install" do
|
||||
cwd rtl_dir
|
||||
environment "HOME" => rtl_dir
|
||||
user bitcoin_user
|
||||
# TODO remove --force when upstream dependency issues have been resolved
|
||||
command "npm install --force"
|
||||
action :nothing
|
||||
end
|
||||
|
||||
file "#{rtl_dir}/RTL-Config.json" do
|
||||
|
32
site-cookbooks/kosmos-bitcoin/templates/boltz.toml.erb
Normal file
32
site-cookbooks/kosmos-bitcoin/templates/boltz.toml.erb
Normal file
@ -0,0 +1,32 @@
|
||||
[LND]
|
||||
# Host of the gRPC interface of LND
|
||||
host = "<%= @lnd_grpc_host %>"
|
||||
|
||||
# Port of the gRPC interface of LND
|
||||
port = <%= @lnd_grpc_port %>
|
||||
|
||||
# Path to a macaroon file of LND
|
||||
# The daemon needs to have permission to read various endpoints, generate addresses and pay invoices
|
||||
macaroon = "<%= @lnd_macaroon_path %>"
|
||||
|
||||
# Path to the TLS certificate of LND
|
||||
certificate = "<%= @lnd_tlscert_path %>"
|
||||
|
||||
[RPC]
|
||||
# Host of the gRPC interface
|
||||
host = "<%= @boltz_config['grpc_host'] %>"
|
||||
|
||||
# Port of the gRPC interface
|
||||
port = <%= @boltz_config['grpc_port'] %>
|
||||
|
||||
# Whether the REST proxy for the gRPC interface should be disabled
|
||||
restDisabled = <%= @boltz_config['rest_disabled'] %>
|
||||
|
||||
# Host of the REST proxy
|
||||
restHost = "<%= @boltz_config['rest_host'] %>"
|
||||
|
||||
# Port of the REST proxy
|
||||
restPort = <%= @boltz_config['rest_port'] %>
|
||||
|
||||
# Whether the macaroon authentication for the gRPC and REST interface should be disabled
|
||||
noMacaroons = <%= @boltz_config['no_macaroons'] %>
|
@ -1,49 +0,0 @@
|
||||
#!/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
|
@ -3,5 +3,5 @@ set -xe -o pipefail
|
||||
|
||||
while true; do
|
||||
inotifywait <%= @lnd_dir %>/data/chain/bitcoin/<%= @bitcoin_network %>/channel.backup
|
||||
aws --endpoint <%= @s3_endpoint %> s3 cp <%= @lnd_dir %>/data/chain/bitcoin/<%= @bitcoin_network %>/channel.backup "s3://<%= @s3_bucket %>/<%= @s3_scb_dir %>/channel.backup"
|
||||
aws s3 cp <%= @lnd_dir %>/data/chain/bitcoin/<%= @bitcoin_network %>/channel.backup "s3://<%= @s3_bucket %>/<%= @s3_scb_dir %>/channel.backup"
|
||||
done
|
||||
|
@ -12,6 +12,7 @@ minchansize=<%= @lnd_minchansize %>
|
||||
autopilot.active=0
|
||||
|
||||
[Bitcoin]
|
||||
bitcoin.active=1
|
||||
bitcoin.mainnet=1
|
||||
bitcoin.node=bitcoind
|
||||
bitcoin.basefee=<%= @lnd_basefee %>
|
||||
|
@ -84,12 +84,6 @@ hosts = [
|
||||
sql_database: "ejabberd",
|
||||
ldap_enabled: true,
|
||||
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
|
||||
modules:
|
||||
mod_disco:
|
||||
@ -110,7 +104,6 @@ hosts = [
|
||||
access_persistent: muc_create
|
||||
access_register: muc_create
|
||||
max_user_conferences: 1000
|
||||
max_users: 2000
|
||||
default_room_options:
|
||||
mam: true
|
||||
preload_rooms: true
|
||||
@ -121,10 +114,6 @@ hosts = [
|
||||
sql_database: "ejabberd_5apps",
|
||||
ldap_enabled: true,
|
||||
ldap_password: ejabberd_credentials['5apps_ldap_password'],
|
||||
certfiles: [
|
||||
"/opt/ejabberd/conf/5apps.com.crt",
|
||||
"/opt/ejabberd/conf/5apps.com.key"
|
||||
],
|
||||
append_host_config: <<-EOF
|
||||
modules:
|
||||
mod_disco:
|
||||
@ -166,7 +155,7 @@ admin_users = ejabberd_credentials['admins']
|
||||
hosts.each do |host|
|
||||
ldap_rootdn = "uid=service,ou=#{host[:name]},cn=applications,dc=kosmos,dc=org"
|
||||
if host[:name] == "kosmos.org"
|
||||
ldap_filter = "(&(objectClass=person)(serviceEnabled=ejabberd))"
|
||||
ldap_filter = "(&(objectClass=person)(serviceEnabled=xmpp))"
|
||||
else
|
||||
ldap_filter = "(objectClass=person)"
|
||||
end
|
||||
|
@ -15,9 +15,9 @@ set -e
|
||||
# letsencrypt live folder
|
||||
for domain in $RENEWED_DOMAINS; do
|
||||
case $domain in
|
||||
kosmos.org|kosmos.chat|5apps.com)
|
||||
cp "/etc/letsencrypt/live/${domain}/privkey.pem" /opt/ejabberd/conf/$domain.key
|
||||
cp "/etc/letsencrypt/live/${domain}/fullchain.pem" /opt/ejabberd/conf/$domain.crt
|
||||
kosmos.org|5apps.com)
|
||||
cp "${RENEWED_LINEAGE}/privkey.pem" /opt/ejabberd/conf/$domain.key
|
||||
cp "${RENEWED_LINEAGE}/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,29 +38,21 @@ 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\" --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"
|
||||
execute "letsencrypt cert for kosmos 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\" --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"
|
||||
not_if do
|
||||
File.exist?("/etc/letsencrypt/live/kosmos.org/fullchain.pem")
|
||||
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).
|
||||
# The systemd timer will take care of renewing
|
||||
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.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"
|
||||
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"
|
||||
not_if do
|
||||
File.exist?("/etc/letsencrypt/live/5apps.com/fullchain.pem")
|
||||
end
|
||||
|
@ -185,11 +185,8 @@ api_permissions:
|
||||
what:
|
||||
- "add_rosteritem"
|
||||
- "delete_rosteritem"
|
||||
- "get_vcard2"
|
||||
- "muc_register_nick"
|
||||
- "private_set"
|
||||
- "send_message"
|
||||
- "send_stanza"
|
||||
- "private_set"
|
||||
|
||||
language: "en"
|
||||
|
||||
@ -219,7 +216,7 @@ modules:
|
||||
access_createnode: pubsub_createnode
|
||||
ignore_pep_from_offline: false
|
||||
last_item_cache: false
|
||||
max_items_node: 10000
|
||||
max_items_node: 10
|
||||
plugins:
|
||||
- "flat"
|
||||
- "pep" # pep requires mod_caps
|
||||
@ -234,6 +231,7 @@ modules:
|
||||
mod_shared_roster: {}
|
||||
mod_stun_disco:
|
||||
offer_local_services: false
|
||||
credentials_lifetime: 300
|
||||
secret: <%= @stun_secret %>
|
||||
services:
|
||||
-
|
||||
|
@ -1,8 +1,7 @@
|
||||
# Generated by Chef for <%= @host[:name] %>
|
||||
certfiles:
|
||||
<% @host[:certfiles].each do |certfile| %>
|
||||
- <%= certfile %>
|
||||
<% end %>
|
||||
- "/opt/ejabberd/conf/<%= @host[:name] %>.crt"
|
||||
- "/opt/ejabberd/conf/<%= @host[:name] %>.key"
|
||||
host_config:
|
||||
"<%= @host[:name] %>":
|
||||
sql_type: pgsql
|
||||
|
@ -4,7 +4,6 @@ upstream_host = search(:node, "role:hubot").first["knife_zero"]["host"]
|
||||
|
||||
tls_cert_for domain do
|
||||
auth "gandi_dns"
|
||||
acme_domain "letsencrypt.kosmos.org"
|
||||
action :create
|
||||
end
|
||||
|
||||
|
@ -5,7 +5,6 @@ upstream_host = search(:node, "role:hubot").first["knife_zero"]["host"]
|
||||
|
||||
tls_cert_for domain do
|
||||
auth "gandi_dns"
|
||||
acme_domain "letsencrypt.kosmos.org"
|
||||
action :create
|
||||
end
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
node.default["kosmos-mastodon"]["repo"] = "https://gitea.kosmos.org/kosmos/mastodon.git"
|
||||
node.default["kosmos-mastodon"]["revision"] = "production-4.3"
|
||||
node.default["kosmos-mastodon"]["revision"] = "production"
|
||||
node.default["kosmos-mastodon"]["directory"] = "/opt/mastodon"
|
||||
node.default["kosmos-mastodon"]["bind_ip"] = "127.0.0.1"
|
||||
node.default["kosmos-mastodon"]["app_port"] = 3000
|
||||
@ -10,7 +10,7 @@ node.default["kosmos-mastodon"]["redis_url"] = "redis://localhost:6379/0
|
||||
node.default["kosmos-mastodon"]["sidekiq_threads"] = 25
|
||||
node.default["kosmos-mastodon"]["allowed_private_addresses"] = "127.0.0.1"
|
||||
|
||||
node.default["kosmos-mastodon"]["onion_address"] = nil
|
||||
node.default["kosmos-mastodon"]["onion_address"] = nil
|
||||
|
||||
# Allocate this amount of RAM to the Java heap for Elasticsearch
|
||||
node.default["kosmos-mastodon"]["elasticsearch"]["allocated_memory"] = "1536m"
|
||||
@ -20,10 +20,6 @@ node.default["kosmos-mastodon"]["s3_region"] = nil
|
||||
node.default["kosmos-mastodon"]["s3_bucket"] = nil
|
||||
node.default["kosmos-mastodon"]["s3_alias_host"] = nil
|
||||
|
||||
node.default["kosmos-mastodon"]["sso_account_sign_up_url"] = "https://kosmos.org"
|
||||
node.default["kosmos-mastodon"]["sso_account_reset_password_url"] = "https://accounts.kosmos.org/users/password/new"
|
||||
node.default["kosmos-mastodon"]["sso_account_resend_confirmation_url"] = "https://accounts.kosmos.org/users/confirmation/new"
|
||||
|
||||
node.default["kosmos-mastodon"]["default_locale"] = "en"
|
||||
node.default["kosmos-mastodon"]["libre_translate_endpoint"] = nil
|
||||
|
||||
|
@ -6,12 +6,13 @@
|
||||
postgresql_data_bag_item = data_bag_item('credentials', 'postgresql')
|
||||
|
||||
unless node.chef_environment == "development"
|
||||
node.override['backup']['s3']['keep'] = 1
|
||||
node.override["backup"]["postgresql"]["host"] = "pg.kosmos.local"
|
||||
node.override["backup"]["postgresql"]["databases"]["mastodon"] = {
|
||||
username: "mastodon",
|
||||
password: postgresql_data_bag_item['mastodon_user_password']
|
||||
}
|
||||
unless node["backup"]["postgresql"]["databases"].keys.include? 'mastodon'
|
||||
node.override["backup"]["postgresql"]["host"] = "pg.kosmos.local"
|
||||
node.override["backup"]["postgresql"]["databases"]["mastodon"] = {
|
||||
username: "mastodon",
|
||||
password: postgresql_data_bag_item['mastodon_user_password']
|
||||
}
|
||||
end
|
||||
|
||||
include_recipe "backup"
|
||||
end
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Recipe:: default
|
||||
#
|
||||
|
||||
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_18.x"
|
||||
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_16.x"
|
||||
|
||||
include_recipe "kosmos-nodejs"
|
||||
include_recipe "java"
|
||||
@ -71,7 +71,11 @@ package %w(build-essential imagemagick ffmpeg libxml2-dev libxslt1-dev file git
|
||||
curl pkg-config libprotobuf-dev protobuf-compiler libidn11
|
||||
libidn11-dev libjemalloc2 libpq-dev)
|
||||
|
||||
ruby_version = "3.3.5"
|
||||
npm_package "yarn" do
|
||||
version "1.22.4"
|
||||
end
|
||||
|
||||
ruby_version = "3.3.0"
|
||||
|
||||
ruby_path = "/opt/ruby_build/builds/#{ruby_version}"
|
||||
bundle_path = "#{ruby_path}/bin/bundle"
|
||||
@ -186,13 +190,9 @@ template "#{mastodon_path}/.env.#{rails_env}" do
|
||||
mode "0640"
|
||||
owner mastodon_user
|
||||
group mastodon_user
|
||||
sensitive true
|
||||
variables redis_url: node["kosmos-mastodon"]["redis_url"],
|
||||
domain: node["kosmos-mastodon"]["domain"],
|
||||
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'],
|
||||
secret_key_base: credentials['secret_key_base'],
|
||||
otp_secret: credentials['otp_secret'],
|
||||
@ -210,9 +210,6 @@ template "#{mastodon_path}/.env.#{rails_env}" do
|
||||
vapid_public_key: credentials['vapid_public_key'],
|
||||
db_pass: postgresql_credentials['mastodon_user_password'],
|
||||
db_host: "pg.kosmos.local",
|
||||
sso_account_sign_up_url: node["kosmos-mastodon"]["sso_account_sign_up_url"],
|
||||
sso_account_reset_password_url: node["kosmos-mastodon"]["sso_account_reset_password_url"],
|
||||
sso_account_resend_confirmation_url: node["kosmos-mastodon"]["sso_account_resend_confirmation_url"],
|
||||
default_locale: node["kosmos-mastodon"]["default_locale"],
|
||||
allowed_private_addresses: node["kosmos-mastodon"]["allowed_private_addresses"],
|
||||
libre_translate_endpoint: node["kosmos-mastodon"]["libre_translate_endpoint"]
|
||||
@ -230,7 +227,7 @@ execute "yarn install" do
|
||||
environment deploy_env
|
||||
user mastodon_user
|
||||
cwd mastodon_path
|
||||
command "corepack prepare && yarn install --immutable"
|
||||
command "yarn install --frozen-lockfile"
|
||||
end
|
||||
|
||||
execute "rake assets:precompile" do
|
||||
@ -265,44 +262,6 @@ 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,13 +12,6 @@ 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"
|
||||
|
@ -12,9 +12,6 @@ LOCAL_HTTPS=true
|
||||
|
||||
# Application secrets
|
||||
# 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 %>
|
||||
SECRET_KEY_BASE=<%= @secret_key_base %>
|
||||
OTP_SECRET=<%= @otp_secret %>
|
||||
@ -47,9 +44,6 @@ LDAP_SEARCH_FILTER='<%= @ldap[:search_filter] %>'
|
||||
LDAP_UID_CONVERSION_ENABLED=<%= @ldap[:uid_conversion_enabled] %>
|
||||
LDAP_UID_CONVERSION_SEARCH=<%= @ldap[:uid_conversion_search] %>
|
||||
LDAP_UID_CONVERSION_REPLACE=<%= @ldap[:uid_conversion_replace] %>
|
||||
SSO_ACCOUNT_SIGN_UP=<%= @sso_account_sign_up_url %>
|
||||
SSO_ACCOUNT_RESET_PASSWORD=<%= @sso_account_reset_password_url %>
|
||||
SSO_ACCOUNT_RESEND_CONFIRMATION=<%= @sso_account_resend_confirmation_url %>
|
||||
<% end %>
|
||||
|
||||
# Optional asset host for multi-server setups
|
||||
|
@ -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 "0755"
|
||||
mode "0640"
|
||||
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["gitea"]["domain"]}",
|
||||
gitea_server: "https://#{node["kosmos_gitea"]["nginx"]["domain"]}",
|
||||
client_id: credentials['client_id'],
|
||||
client_secret: credentials['client_secret'],
|
||||
rpc_secret: credentials['rpc_secret'],
|
||||
|
@ -1,21 +1,18 @@
|
||||
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"]["version"] = "1.22.0"
|
||||
node.default["gitea"]["checksum"] = "a31086f073cb9592d28611394b2de3655db515d961e4fdcf5b549cb40753ef3d"
|
||||
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"]["commit_signing"] = {
|
||||
"name_real" => "Gitea",
|
||||
"name_comment" => "commit signing",
|
||||
"name_email" => "git@#{node["gitea"]["domain"]}"
|
||||
}
|
||||
|
||||
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"
|
||||
|
@ -8,10 +8,8 @@ version '0.2.0'
|
||||
chef_version '>= 14.0'
|
||||
|
||||
depends "firewall"
|
||||
depends "gpg"
|
||||
depends "kosmos_openresty"
|
||||
depends "kosmos_postgresql"
|
||||
depends "kosmos-dirsrv"
|
||||
depends 'kosmos-nodejs'
|
||||
depends 'git'
|
||||
depends 'golang'
|
||||
depends "backup"
|
||||
depends "kosmos-dirsrv"
|
||||
|
@ -8,6 +8,5 @@
|
||||
unless node.chef_environment == "development"
|
||||
# backup the data dir and the config files
|
||||
node.override["backup"]["archives"]["gitea"] = [node["gitea"]["working_directory"]]
|
||||
node.override['backup']['s3']['keep'] = 2
|
||||
include_recipe "backup"
|
||||
end
|
||||
|
@ -1,42 +0,0 @@
|
||||
#
|
||||
# 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,12 +5,11 @@
|
||||
|
||||
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 = compile_from_source ? "/opt/gitea/gitea" : "/usr/local/bin/gitea"
|
||||
gitea_binary_path = "/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]
|
||||
@ -19,6 +18,7 @@ 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
|
||||
@ -77,6 +77,22 @@ if node.chef_environment == "production"
|
||||
}
|
||||
end
|
||||
|
||||
if node["gitea"]["commit_signing"]
|
||||
gpg_install
|
||||
|
||||
gpg_key "git" do
|
||||
user "git"
|
||||
group "git"
|
||||
name_real node["gitea"]["commit_signing"]["name_real"]
|
||||
name_comment node["gitea"]["commit_signing"]["name_comment"]
|
||||
name_email node["gitea"]["commit_signing"]["name_email"]
|
||||
end
|
||||
|
||||
execute "enable git commit signing for all repositories" do
|
||||
command "su - git -c 'git config --global commit.gpgsign true'"
|
||||
end
|
||||
end
|
||||
|
||||
config_variables = {
|
||||
working_directory: working_directory,
|
||||
git_home_directory: git_home_directory,
|
||||
@ -93,6 +109,7 @@ config_variables = {
|
||||
smtp_user: smtp_credentials["user_name"],
|
||||
smtp_password: smtp_credentials["password"],
|
||||
config: node["gitea"]["config"],
|
||||
commit_signing: node["gitea"]["commit_signing"],
|
||||
s3_key_id: gitea_data_bag_item["s3_key_id"],
|
||||
s3_secret_key: gitea_data_bag_item["s3_secret_key"],
|
||||
s3_bucket: gitea_data_bag_item["s3_bucket"]
|
||||
@ -108,15 +125,11 @@ template "#{config_directory}/app.ini" do
|
||||
notifies :restart, "service[gitea]", :delayed
|
||||
end
|
||||
|
||||
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
|
||||
remote_file gitea_binary_path do
|
||||
source download_url
|
||||
checksum node['gitea']['checksum']
|
||||
mode "0755"
|
||||
notifies :restart, "service[gitea]", :delayed
|
||||
end
|
||||
|
||||
execute "systemctl daemon-reload" do
|
||||
|
@ -24,11 +24,18 @@ NAME = gitea
|
||||
USER = gitea
|
||||
PASSWD = <%= @postgresql_password %>
|
||||
SSL_MODE = disable
|
||||
MAX_OPEN_CONNS = 20
|
||||
|
||||
[repository]
|
||||
ROOT = <%= @repository_root_directory %>
|
||||
DISABLE_DOWNLOAD_SOURCE_ARCHIVES = true
|
||||
|
||||
<% if @commit_signing %>
|
||||
[repository.signing]
|
||||
SIGNING_KEY = default
|
||||
INITIAL_COMMIT = always
|
||||
CRUD_ACTIONS = always
|
||||
MERGES = always
|
||||
WIKI = never
|
||||
<% end %>
|
||||
|
||||
# [indexer]
|
||||
# ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
|
||||
@ -74,11 +81,8 @@ ENABLE_OPENID_SIGNIN = false
|
||||
ENABLE_OPENID_SIGNUP = false
|
||||
|
||||
[log]
|
||||
MODE = console
|
||||
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"] %>
|
||||
MODE = console
|
||||
LEVEL = Debug
|
||||
|
||||
[attachment]
|
||||
ENABLED = true
|
||||
|
@ -16,7 +16,7 @@ server {
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000";
|
||||
|
||||
client_max_body_size 121M;
|
||||
client_max_body_size 20M;
|
||||
|
||||
location ~ ^/(avatars|repo-avatars)/.*$ {
|
||||
proxy_buffers 1024 8k;
|
||||
|
@ -10,6 +10,16 @@ upstream _<%= @app_name %> {
|
||||
# TODO use cookbook attribute when enabling
|
||||
# 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 {
|
||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
|
@ -1,4 +1,4 @@
|
||||
node.default['rskj']['version'] = '7.0.0~jammy'
|
||||
node.default['rskj']['version'] = '5.3.0~jammy'
|
||||
node.default['rskj']['network'] = 'testnet'
|
||||
|
||||
node.default['rskj']['nginx']['domain'] = nil
|
||||
|
@ -19,8 +19,6 @@ 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 '7.0.0~jammy' }
|
||||
its('version') { should eq '5.3.0~jammy' }
|
||||
end
|
||||
|
||||
describe service('rsk') do
|
||||
|
@ -1,10 +1,2 @@
|
||||
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"]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user