117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#
 | 
						|
# Cookbook:: kosmos-bitcoin
 | 
						|
# Recipe:: rtl
 | 
						|
#
 | 
						|
 | 
						|
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"]
 | 
						|
}
 | 
						|
 | 
						|
if node['boltz']
 | 
						|
  # TODO adapt for multi-node usage
 | 
						|
  rtl_config[:nodes][0][:Authentication][:boltzMacaroonPath] = "#{node['boltz']['boltz_dir']}/macaroons"
 | 
						|
  rtl_config[:nodes][0][:Settings][:boltzServerUrl] = "https://#{node['boltz']['rest_host']}:#{node['boltz']['rest_port']}"
 | 
						|
end
 | 
						|
 | 
						|
application rtl_dir do
 | 
						|
  owner bitcoin_user
 | 
						|
  group bitcoin_group
 | 
						|
 | 
						|
  git do
 | 
						|
    user  bitcoin_user
 | 
						|
    group bitcoin_group
 | 
						|
    repository node['rtl']['repo']
 | 
						|
    revision node['rtl']['revision']
 | 
						|
    notifies :restart, "systemd_unit[rtl.service]", :delayed
 | 
						|
  end
 | 
						|
 | 
						|
  npm_install do
 | 
						|
    user bitcoin_user
 | 
						|
  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[rtl.service]", :delayed
 | 
						|
  end
 | 
						|
 | 
						|
  systemd_unit 'rtl.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
 | 
						|
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
 |