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