We use peerswap these days, and the build process for boltz was made much more complicated at some point. Not worth upgrading for us.
		
			
				
	
	
		
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#
 | 
						|
# Cookbook:: kosmos-bitcoin
 | 
						|
# Recipe:: rtl
 | 
						|
#
 | 
						|
 | 
						|
node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_18.x"
 | 
						|
include_recipe 'kosmos-nodejs'
 | 
						|
 | 
						|
app_name      = "rtl"
 | 
						|
rtl_dir       = "/opt/#{app_name}"
 | 
						|
lnd_dir       = node['lnd']['lnd_dir']
 | 
						|
bitcoin_user  = node['bitcoin']['username']
 | 
						|
bitcoin_group = node['bitcoin']['usergroup']
 | 
						|
credentials   = Chef::EncryptedDataBagItem.load('credentials', 'rtl')
 | 
						|
 | 
						|
rtl_config = {
 | 
						|
  host: node['rtl']['host'],
 | 
						|
  port: node['rtl']['port'],
 | 
						|
  defaultNodeIndex: 1,
 | 
						|
  SSO: {
 | 
						|
    rtlSSO: 0,
 | 
						|
    rtlCookiePath: "",
 | 
						|
    logoutRedirectLink: ""
 | 
						|
  },
 | 
						|
  nodes: [
 | 
						|
    {
 | 
						|
      index: 1,
 | 
						|
      lnNode: node['lnd']['alias'],
 | 
						|
      lnImplementation: "LND",
 | 
						|
      Authentication: {
 | 
						|
        macaroonPath: "#{lnd_dir}/data/chain/bitcoin/mainnet",
 | 
						|
        configPath: "#{lnd_dir}/lnd.conf"
 | 
						|
      },
 | 
						|
      Settings: {
 | 
						|
        userPersona: "MERCHANT",
 | 
						|
        themeMode: "NIGHT",
 | 
						|
        themeColor: "TEAL",
 | 
						|
        channelBackupPath: "",
 | 
						|
        enableLogging: true,
 | 
						|
        lnServerUrl: "https://localhost:8080",
 | 
						|
        fiatConversion: true,
 | 
						|
        currencyUnit: "EUR"
 | 
						|
      }
 | 
						|
    }
 | 
						|
  ],
 | 
						|
  multiPassHashed: credentials["multiPassHashed"]
 | 
						|
}
 | 
						|
 | 
						|
git rtl_dir do
 | 
						|
  user bitcoin_user
 | 
						|
  group bitcoin_group
 | 
						|
  repository node['rtl']['repo']
 | 
						|
  revision node['rtl']['revision']
 | 
						|
  notifies :run, "execute[npm_install]", :immediately
 | 
						|
  notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
 | 
						|
end
 | 
						|
 | 
						|
execute "npm_install" do
 | 
						|
  cwd rtl_dir
 | 
						|
  environment "HOME" => rtl_dir
 | 
						|
  user bitcoin_user
 | 
						|
  # TODO remove --force when upstream dependency issues have been resolved
 | 
						|
  command "npm install --force"
 | 
						|
  action :nothing
 | 
						|
end
 | 
						|
 | 
						|
file "#{rtl_dir}/RTL-Config.json" do
 | 
						|
  owner bitcoin_user
 | 
						|
  group bitcoin_group
 | 
						|
  mode '0640'
 | 
						|
  content rtl_config.to_json
 | 
						|
  notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
 | 
						|
end
 | 
						|
 | 
						|
systemd_unit "#{app_name}.service" do
 | 
						|
  content({
 | 
						|
    Unit: {
 | 
						|
      Description: 'Ride The Lightning',
 | 
						|
      Documentation: ['https://github.com/Ride-The-Lightning/RTL'],
 | 
						|
      Requires: 'lnd.service',
 | 
						|
      After: 'lnd.service'
 | 
						|
    },
 | 
						|
    Service: {
 | 
						|
      User: bitcoin_user,
 | 
						|
      Group: bitcoin_group,
 | 
						|
      Type: 'simple',
 | 
						|
      # ExecStartPre: '/bin/sleep 120',
 | 
						|
      ExecStart: "/usr/bin/node #{rtl_dir}/rtl.js",
 | 
						|
      Restart: 'always',
 | 
						|
      RestartSec: '30',
 | 
						|
      TimeoutSec: '120',
 | 
						|
      PrivateTmp: true,
 | 
						|
      ProtectSystem: 'full',
 | 
						|
      NoNewPrivileges: true,
 | 
						|
      PrivateDevices: true,
 | 
						|
    },
 | 
						|
    Install: {
 | 
						|
      WantedBy: 'multi-user.target'
 | 
						|
    }
 | 
						|
  })
 | 
						|
  verify false
 | 
						|
  triggers_reload true
 | 
						|
  action [:create, :enable, :start]
 | 
						|
end
 | 
						|
 | 
						|
include_recipe 'firewall'
 | 
						|
firewall_rule 'rtl_private' do
 | 
						|
  port     node['rtl']['port'].to_i
 | 
						|
  source   "10.1.1.0/24"
 | 
						|
  protocol :tcp
 | 
						|
  command  :allow
 | 
						|
end
 |