88 lines
2.1 KiB
Ruby
88 lines
2.1 KiB
Ruby
#
|
|
# 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
|