diff --git a/nodes/bitcoin-2.json b/nodes/bitcoin-2.json index 38c758f..35ecb9d 100644 --- a/nodes/bitcoin-2.json +++ b/nodes/bitcoin-2.json @@ -33,7 +33,6 @@ "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", diff --git a/roles/lnd.rb b/roles/lnd.rb index 982f9a7..c9e18ad 100644 --- a/roles/lnd.rb +++ b/roles/lnd.rb @@ -3,7 +3,6 @@ name "lnd" run_list %w( kosmos-bitcoin::lnd kosmos-bitcoin::lnd-scb-s3 - kosmos-bitcoin::boltz kosmos-bitcoin::rtl kosmos-bitcoin::peerswap-lnd ) diff --git a/site-cookbooks/kosmos-bitcoin/attributes/default.rb b/site-cookbooks/kosmos-bitcoin/attributes/default.rb index 8883d71..e89b401 100644 --- a/site-cookbooks/kosmos-bitcoin/attributes/default.rb +++ b/site-cookbooks/kosmos-bitcoin/attributes/default.rb @@ -1,5 +1,5 @@ -node.default['bitcoin']['version'] = '26.0' -node.default['bitcoin']['checksum'] = 'ab1d99276e28db62d1d9f3901e85ac358d7f1ebcb942d348a9c4e46f0fcdc0a1' +node.default['bitcoin']['version'] = '28.0' +node.default['bitcoin']['checksum'] = '700ae2d1e204602eb07f2779a6e6669893bc96c0dca290593f80ff8e102ff37f' node.default['bitcoin']['username'] = 'satoshi' node.default['bitcoin']['usergroup'] = 'bitcoin' node.default['bitcoin']['network'] = 'mainnet' @@ -24,7 +24,8 @@ 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' + zmqpubrawtx: 'tcp://127.0.0.1:8338', + deprecatedrpc: 'warnings' # TODO remove when upgrading to LND 0.18.4 } # Also enables Tor for LND @@ -40,7 +41,7 @@ node.default['c-lightning']['log_level'] = 'info' node.default['c-lightning']['public_ip'] = '148.251.237.73' node.default['lnd']['repo'] = 'https://github.com/lightningnetwork/lnd' -node.default['lnd']['revision'] = 'v0.17.3-beta' +node.default['lnd']['revision'] = 'v0.18.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' @@ -58,19 +59,8 @@ 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.0' +node.default['rtl']['revision'] = 'v0.15.2' node.default['rtl']['host'] = '10.1.1.163' node.default['rtl']['port'] = '3000' diff --git a/site-cookbooks/kosmos-bitcoin/recipes/aws-client.rb b/site-cookbooks/kosmos-bitcoin/recipes/aws-client.rb index 04e6d84..8debd9b 100644 --- a/site-cookbooks/kosmos-bitcoin/recipes/aws-client.rb +++ b/site-cookbooks/kosmos-bitcoin/recipes/aws-client.rb @@ -11,6 +11,7 @@ credentials = Chef::EncryptedDataBagItem.load('credentials', 'backup') file "/root/.aws/config" do mode "600" + sensitive true content lazy { <<-EOF [default] region = #{credentials["s3_region"]} diff --git a/site-cookbooks/kosmos-bitcoin/recipes/bitcoind.rb b/site-cookbooks/kosmos-bitcoin/recipes/bitcoind.rb index a4991ff..ba76f8b 100644 --- a/site-cookbooks/kosmos-bitcoin/recipes/bitcoind.rb +++ b/site-cookbooks/kosmos-bitcoin/recipes/bitcoind.rb @@ -12,8 +12,15 @@ if node["bitcoin"]["blocksdir_mount_type"] include_recipe "kosmos-bitcoin::blocksdir-mount" end -%w{ libtool autotools-dev make automake cmake curl g++-multilib libtool - binutils-gold bsdmainutils pkg-config python3 patch }.each do |pkg| +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| apt_package pkg end @@ -26,20 +33,21 @@ end execute "compile_bitcoin-core_dependencies" do cwd "/usr/local/bitcoind/depends" - command "make NO_QT=1" + environment ({'CC' => 'gcc-13', 'CXX' => 'g++-13', 'NO_QT' => '1'}) + command "make -j 2" 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 ./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 diff --git a/site-cookbooks/kosmos-bitcoin/recipes/boltz.rb b/site-cookbooks/kosmos-bitcoin/recipes/boltz.rb deleted file mode 100644 index e090703..0000000 --- a/site-cookbooks/kosmos-bitcoin/recipes/boltz.rb +++ /dev/null @@ -1,87 +0,0 @@ -# -# 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 diff --git a/site-cookbooks/kosmos-bitcoin/recipes/golang.rb b/site-cookbooks/kosmos-bitcoin/recipes/golang.rb index 3ac886b..23158fe 100644 --- a/site-cookbooks/kosmos-bitcoin/recipes/golang.rb +++ b/site-cookbooks/kosmos-bitcoin/recipes/golang.rb @@ -5,7 +5,7 @@ # Internal recipe for managing the Go installation in one place # -node.override['golang']['version'] = "1.20.3" +node.override['golang']['version'] = "1.23.1" include_recipe "golang" link '/usr/local/bin/go' do diff --git a/site-cookbooks/kosmos-bitcoin/recipes/rtl.rb b/site-cookbooks/kosmos-bitcoin/recipes/rtl.rb index 42103d3..1321bb2 100644 --- a/site-cookbooks/kosmos-bitcoin/recipes/rtl.rb +++ b/site-cookbooks/kosmos-bitcoin/recipes/rtl.rb @@ -46,24 +46,22 @@ 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 diff --git a/site-cookbooks/kosmos-bitcoin/templates/boltz.toml.erb b/site-cookbooks/kosmos-bitcoin/templates/boltz.toml.erb deleted file mode 100644 index 33a8fa7..0000000 --- a/site-cookbooks/kosmos-bitcoin/templates/boltz.toml.erb +++ /dev/null @@ -1,32 +0,0 @@ -[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'] %> diff --git a/site-cookbooks/kosmos-bitcoin/templates/lnd.conf.erb b/site-cookbooks/kosmos-bitcoin/templates/lnd.conf.erb index 3e43d01..f68473b 100644 --- a/site-cookbooks/kosmos-bitcoin/templates/lnd.conf.erb +++ b/site-cookbooks/kosmos-bitcoin/templates/lnd.conf.erb @@ -12,7 +12,6 @@ minchansize=<%= @lnd_minchansize %> autopilot.active=0 [Bitcoin] -bitcoin.active=1 bitcoin.mainnet=1 bitcoin.node=bitcoind bitcoin.basefee=<%= @lnd_basefee %>