Bitcoin-related software upgrades #573
@ -33,7 +33,6 @@
 | 
				
			|||||||
      "kosmos-bitcoin::c-lightning",
 | 
					      "kosmos-bitcoin::c-lightning",
 | 
				
			||||||
      "kosmos-bitcoin::lnd",
 | 
					      "kosmos-bitcoin::lnd",
 | 
				
			||||||
      "kosmos-bitcoin::lnd-scb-s3",
 | 
					      "kosmos-bitcoin::lnd-scb-s3",
 | 
				
			||||||
      "kosmos-bitcoin::boltz",
 | 
					 | 
				
			||||||
      "kosmos-bitcoin::rtl",
 | 
					      "kosmos-bitcoin::rtl",
 | 
				
			||||||
      "kosmos-bitcoin::peerswap-lnd",
 | 
					      "kosmos-bitcoin::peerswap-lnd",
 | 
				
			||||||
      "kosmos_postgresql::hostsfile",
 | 
					      "kosmos_postgresql::hostsfile",
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,6 @@ name "lnd"
 | 
				
			|||||||
run_list %w(
 | 
					run_list %w(
 | 
				
			||||||
  kosmos-bitcoin::lnd
 | 
					  kosmos-bitcoin::lnd
 | 
				
			||||||
  kosmos-bitcoin::lnd-scb-s3
 | 
					  kosmos-bitcoin::lnd-scb-s3
 | 
				
			||||||
  kosmos-bitcoin::boltz
 | 
					 | 
				
			||||||
  kosmos-bitcoin::rtl
 | 
					  kosmos-bitcoin::rtl
 | 
				
			||||||
  kosmos-bitcoin::peerswap-lnd
 | 
					  kosmos-bitcoin::peerswap-lnd
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
node.default['bitcoin']['version']   = '26.0'
 | 
					node.default['bitcoin']['version']   = '28.0'
 | 
				
			||||||
node.default['bitcoin']['checksum']  = 'ab1d99276e28db62d1d9f3901e85ac358d7f1ebcb942d348a9c4e46f0fcdc0a1'
 | 
					node.default['bitcoin']['checksum']  = '700ae2d1e204602eb07f2779a6e6669893bc96c0dca290593f80ff8e102ff37f'
 | 
				
			||||||
node.default['bitcoin']['username']  = 'satoshi'
 | 
					node.default['bitcoin']['username']  = 'satoshi'
 | 
				
			||||||
node.default['bitcoin']['usergroup'] = 'bitcoin'
 | 
					node.default['bitcoin']['usergroup'] = 'bitcoin'
 | 
				
			||||||
node.default['bitcoin']['network']   = 'mainnet'
 | 
					node.default['bitcoin']['network']   = 'mainnet'
 | 
				
			||||||
@ -24,7 +24,8 @@ node.default['bitcoin']['conf'] = {
 | 
				
			|||||||
  rpcbind: "127.0.0.1:8332",
 | 
					  rpcbind: "127.0.0.1:8332",
 | 
				
			||||||
  gen: 0,
 | 
					  gen: 0,
 | 
				
			||||||
  zmqpubrawblock: 'tcp://127.0.0.1:8337',
 | 
					  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
 | 
					# 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['c-lightning']['public_ip'] = '148.251.237.73'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
node.default['lnd']['repo'] = 'https://github.com/lightningnetwork/lnd'
 | 
					node.default['lnd']['repo'] = 'https://github.com/lightningnetwork/lnd'
 | 
				
			||||||
node.default['lnd']['revision'] = 'v0.17.3-beta'
 | 
					node.default['lnd']['revision'] = 'v0.18.3-beta'
 | 
				
			||||||
node.default['lnd']['source_dir'] = '/opt/lnd'
 | 
					node.default['lnd']['source_dir'] = '/opt/lnd'
 | 
				
			||||||
node.default['lnd']['lnd_dir'] = "/home/#{node['bitcoin']['username']}/.lnd"
 | 
					node.default['lnd']['lnd_dir'] = "/home/#{node['bitcoin']['username']}/.lnd"
 | 
				
			||||||
node.default['lnd']['alias'] = 'ln2.kosmos.org'
 | 
					node.default['lnd']['alias'] = 'ln2.kosmos.org'
 | 
				
			||||||
@ -58,19 +59,8 @@ node.default['lnd']['tor'] = {
 | 
				
			|||||||
  'skip-proxy-for-clearnet-targets' => 'true'
 | 
					  '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']['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']['host'] = '10.1.1.163'
 | 
				
			||||||
node.default['rtl']['port'] = '3000'
 | 
					node.default['rtl']['port'] = '3000'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@ credentials = Chef::EncryptedDataBagItem.load('credentials', 'backup')
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
file "/root/.aws/config" do
 | 
					file "/root/.aws/config" do
 | 
				
			||||||
  mode "600"
 | 
					  mode "600"
 | 
				
			||||||
 | 
					  sensitive true
 | 
				
			||||||
  content lazy { <<-EOF
 | 
					  content lazy { <<-EOF
 | 
				
			||||||
[default]
 | 
					[default]
 | 
				
			||||||
region = #{credentials["s3_region"]}
 | 
					region = #{credentials["s3_region"]}
 | 
				
			||||||
 | 
				
			|||||||
@ -12,8 +12,15 @@ if node["bitcoin"]["blocksdir_mount_type"]
 | 
				
			|||||||
  include_recipe "kosmos-bitcoin::blocksdir-mount"
 | 
					  include_recipe "kosmos-bitcoin::blocksdir-mount"
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%w{ libtool autotools-dev make automake cmake curl g++-multilib libtool
 | 
					apt_repository "ubuntu-toolchain-r" do
 | 
				
			||||||
    binutils-gold bsdmainutils pkg-config python3 patch }.each do |pkg|
 | 
					  # 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
 | 
					  apt_package pkg
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -26,20 +33,21 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
execute "compile_bitcoin-core_dependencies" do
 | 
					execute "compile_bitcoin-core_dependencies" do
 | 
				
			||||||
  cwd "/usr/local/bitcoind/depends"
 | 
					  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
 | 
					  action :nothing
 | 
				
			||||||
  notifies :run, 'bash[compile_bitcoin-core]', :immediately
 | 
					  notifies :run, 'bash[compile_bitcoin-core]', :immediately
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bash "compile_bitcoin-core" do
 | 
					bash "compile_bitcoin-core" do
 | 
				
			||||||
  cwd "/usr/local/bitcoind"
 | 
					  cwd "/usr/local/bitcoind"
 | 
				
			||||||
 | 
					  environment ({'CC' => 'gcc-13', 'CXX' => 'g++-13', 'NO_QT' => '1'})
 | 
				
			||||||
  code <<-EOH
 | 
					  code <<-EOH
 | 
				
			||||||
    ./autogen.sh
 | 
					    ./autogen.sh
 | 
				
			||||||
    ./configure --prefix=$PWD/depends/x86_64-pc-linux-gnu
 | 
					    ./configure --prefix=$PWD/depends/x86_64-pc-linux-gnu
 | 
				
			||||||
    make
 | 
					    make
 | 
				
			||||||
  EOH
 | 
					  EOH
 | 
				
			||||||
  action :nothing
 | 
					  action :nothing
 | 
				
			||||||
  notifies :restart, "systemd_unit[bitcoind.service]", :delayed
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
link "/usr/local/bin/bitcoind" do
 | 
					link "/usr/local/bin/bitcoind" do
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
					 | 
				
			||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
# Internal recipe for managing the Go installation in one place
 | 
					# 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"
 | 
					include_recipe "golang"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
link '/usr/local/bin/go' do
 | 
					link '/usr/local/bin/go' do
 | 
				
			||||||
 | 
				
			|||||||
@ -46,24 +46,22 @@ rtl_config = {
 | 
				
			|||||||
  multiPassHashed: credentials["multiPassHashed"]
 | 
					  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
 | 
					git rtl_dir do
 | 
				
			||||||
  user bitcoin_user
 | 
					  user bitcoin_user
 | 
				
			||||||
  group bitcoin_group
 | 
					  group bitcoin_group
 | 
				
			||||||
  repository node['rtl']['repo']
 | 
					  repository node['rtl']['repo']
 | 
				
			||||||
  revision node['rtl']['revision']
 | 
					  revision node['rtl']['revision']
 | 
				
			||||||
 | 
					  notifies :run, "execute[npm_install]", :immediately
 | 
				
			||||||
  notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
 | 
					  notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
execute "npm install" do
 | 
					execute "npm_install" do
 | 
				
			||||||
  cwd rtl_dir
 | 
					  cwd rtl_dir
 | 
				
			||||||
  environment "HOME" => rtl_dir
 | 
					  environment "HOME" => rtl_dir
 | 
				
			||||||
  user bitcoin_user
 | 
					  user bitcoin_user
 | 
				
			||||||
 | 
					  # TODO remove --force when upstream dependency issues have been resolved
 | 
				
			||||||
 | 
					  command "npm install --force"
 | 
				
			||||||
 | 
					  action :nothing
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
file "#{rtl_dir}/RTL-Config.json" do
 | 
					file "#{rtl_dir}/RTL-Config.json" do
 | 
				
			||||||
 | 
				
			|||||||
@ -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'] %>
 | 
					 | 
				
			||||||
@ -12,7 +12,6 @@ minchansize=<%= @lnd_minchansize %>
 | 
				
			|||||||
autopilot.active=0
 | 
					autopilot.active=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Bitcoin]
 | 
					[Bitcoin]
 | 
				
			||||||
bitcoin.active=1
 | 
					 | 
				
			||||||
bitcoin.mainnet=1
 | 
					bitcoin.mainnet=1
 | 
				
			||||||
bitcoin.node=bitcoind
 | 
					bitcoin.node=bitcoind
 | 
				
			||||||
bitcoin.basefee=<%= @lnd_basefee %>
 | 
					bitcoin.basefee=<%= @lnd_basefee %>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user