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
 |