# # 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