Set up PeerSwap
Allows to swap sats in and out of Lightning channels without a 3rd party (and their fees). Instead, swaps can be initiated directly with the channel peer. https://www.peerswap.dev/
This commit is contained in:
parent
b3465e186f
commit
4f1b1aff30
@ -27,12 +27,13 @@
|
|||||||
"kosmos_kvm::guest",
|
"kosmos_kvm::guest",
|
||||||
"tor-full",
|
"tor-full",
|
||||||
"tor-full::default",
|
"tor-full::default",
|
||||||
"kosmos-bitcoin::source",
|
"kosmos-bitcoin::bitcoind",
|
||||||
"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::boltz",
|
||||||
"kosmos-bitcoin::rtl",
|
"kosmos-bitcoin::rtl",
|
||||||
|
"kosmos-bitcoin::peerswap-lnd",
|
||||||
"kosmos_postgresql::hostsfile",
|
"kosmos_postgresql::hostsfile",
|
||||||
"kosmos-bitcoin::lndhub",
|
"kosmos-bitcoin::lndhub",
|
||||||
"kosmos-bitcoin::lndhub-go",
|
"kosmos-bitcoin::lndhub-go",
|
||||||
|
@ -5,4 +5,5 @@ run_list %w(
|
|||||||
kosmos-bitcoin::lnd-scb-s3
|
kosmos-bitcoin::lnd-scb-s3
|
||||||
kosmos-bitcoin::boltz
|
kosmos-bitcoin::boltz
|
||||||
kosmos-bitcoin::rtl
|
kosmos-bitcoin::rtl
|
||||||
|
kosmos-bitcoin::peerswap-lnd
|
||||||
)
|
)
|
||||||
|
@ -118,3 +118,7 @@ node.default["btcpay"]["domain"] = 'btcpay.kosmos.org'
|
|||||||
node.default['btcpay']['postgres']['port'] = 5432
|
node.default['btcpay']['postgres']['port'] = 5432
|
||||||
node.default['btcpay']['postgres']['database'] = 'btcpayserver'
|
node.default['btcpay']['postgres']['database'] = 'btcpayserver'
|
||||||
node.default['btcpay']['postgres']['user'] = 'satoshi'
|
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'
|
||||||
|
94
site-cookbooks/kosmos-bitcoin/recipes/peerswap-lnd.rb
Normal file
94
site-cookbooks/kosmos-bitcoin/recipes/peerswap-lnd.rb
Normal file
@ -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
|
@ -0,0 +1,3 @@
|
|||||||
|
<% @config.each do |k, v| %>
|
||||||
|
<%= "lnd.#{k}=#{v}" %>
|
||||||
|
<% end %>
|
Loading…
x
Reference in New Issue
Block a user