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
 |