diff --git a/nodes/bitcoin-2.json b/nodes/bitcoin-2.json index a6dbc46..5b6faf1 100644 --- a/nodes/bitcoin-2.json +++ b/nodes/bitcoin-2.json @@ -27,12 +27,13 @@ "kosmos_kvm::guest", "tor-full", "tor-full::default", - "kosmos-bitcoin::source", + "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", "kosmos-bitcoin::lndhub", "kosmos-bitcoin::lndhub-go", diff --git a/roles/lnd.rb b/roles/lnd.rb index 85f5f9e..982f9a7 100644 --- a/roles/lnd.rb +++ b/roles/lnd.rb @@ -5,4 +5,5 @@ run_list %w( 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 84ff448..f82d5a2 100644 --- a/site-cookbooks/kosmos-bitcoin/attributes/default.rb +++ b/site-cookbooks/kosmos-bitcoin/attributes/default.rb @@ -118,3 +118,7 @@ node.default["btcpay"]["domain"] = 'btcpay.kosmos.org' node.default['btcpay']['postgres']['port'] = 5432 node.default['btcpay']['postgres']['database'] = 'btcpayserver' 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' diff --git a/site-cookbooks/kosmos-bitcoin/recipes/peerswap-lnd.rb b/site-cookbooks/kosmos-bitcoin/recipes/peerswap-lnd.rb new file mode 100644 index 0000000..076daea --- /dev/null +++ b/site-cookbooks/kosmos-bitcoin/recipes/peerswap-lnd.rb @@ -0,0 +1,94 @@ +# +# Cookbook:: kosmos-bitcoin +# Recipe:: peerswap-lnd +# + +include_recipe 'git' +include_recipe 'kosmos-bitcoin::golang' +include_recipe 'kosmos-bitcoin::user' + +bitcoin_user = node['bitcoin']['username'] +bitcoin_group = node['bitcoin']['usergroup'] +lnd_dir = node['lnd']['lnd_dir'] +macaroon_path = "#{lnd_dir}/data/chain/bitcoin/#{node['bitcoin']['network']}/admin.macaroon" +source_dir = node['peerswap-lnd']['source_dir'] +config_dir = "/home/#{bitcoin_user}/.peerswap" + +directory config_dir do + owner bitcoin_user + group bitcoin_group + mode '0700' + action :create +end + +git source_dir do + repository node['peerswap']['repo'] + revision node['peerswap']['revision'] + action :sync + notifies :run, 'bash[compile_peerswap]', :immediately +end + +bash 'compile_peerswap' do + cwd source_dir + environment 'GOPATH' => '/opt/go' + code 'make lnd-release' + action :run + notifies :restart, 'service[peerswap]', :delayed +end + +template "#{config_dir}/peerswap.conf" do + source 'peerswap-lnd.conf.erb' + owner bitcoin_user + group bitcoin_group + mode 0600 + sensitive true + variables config: { + tlscertpath: "#{lnd_dir}/tls.cert", + macaroonpath: macaroon_path + } + notifies :restart, 'service[peerswap]', :delayed +end + +file "#{config_dir}/policy.conf" do + owner bitcoin_user + group bitcoin_group + mode 0600 + content 'accept_all_peers=true' + notifies :restart, 'service[peerswap]', :delayed +end + +systemd_unit 'peerswap.service' do + content({ + Unit: { + Description: 'PeerSwap Lightning channel balancing', + Documentation: ['https://github.com/ElementsProject/peerswap'], + Requires: 'lnd.service', + After: 'lnd.service' + }, + Service: { + User: bitcoin_user, + Group: bitcoin_group, + Type: 'simple', + WorkingDirectory: source_dir, + ExecStart: "/opt/go/bin/peerswapd", + Restart: 'always', + RestartSec: '10', + TimeoutSec: '60', + 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 + +service 'peerswap' do + action :nothing +end diff --git a/site-cookbooks/kosmos-bitcoin/templates/peerswap-lnd.conf.erb b/site-cookbooks/kosmos-bitcoin/templates/peerswap-lnd.conf.erb new file mode 100644 index 0000000..dfce355 --- /dev/null +++ b/site-cookbooks/kosmos-bitcoin/templates/peerswap-lnd.conf.erb @@ -0,0 +1,3 @@ +<% @config.each do |k, v| %> +<%= "lnd.#{k}=#{v}" %> +<% end %>