paso_a_paso.sh (7382B)
1 # NO USAR ESTE SCRIPT PARA PRODUCCION 2 3 # Este script fue utilizado para la demostracion en la charla: 4 # Como armar un sistema de pagos desde el patio de tu casa 5 # para Nerdearla 2021 en Octubre 20 6 # https://twitter.com/sebasjm/status/1450874753615552527 7 8 ##### 9 # Setup 10 ##### 11 12 # instalamos algunas herramientas 13 apt update 14 apt install -y gnupg less vim procps curl inetutils-ping jq net-tools 15 16 # agregarmos el repositorio debian de taler.net 17 echo deb https://deb.taler.net/apt/debian bullseye main > /etc/apt/sources.list.d/taler.list 18 curl https://taler.net/taler-systems.gpg.key | apt-key add - 19 apt update 20 21 # configuramos nuestra red ad-hoc 22 echo 127.0.0.1 auditor.taler exchange.taler merchant-backend.taler >> /etc/hosts 23 24 # el banco es un servicio externo 25 # agregar aqui la IP donde este el banco a usar 26 echo 172.17.0.3 bank.taler >> /etc/hosts 27 28 # instalamos el software Taler 29 apt install -y postgresql \ 30 taler-exchange \ 31 taler-auditor \ 32 taler-merchant \ 33 taler-wallet-cli 34 35 ##### 36 # Database 37 ##### 38 39 # para nuestro setup vamos a usar 3 bases de datos 40 service postgresql start 41 su - postgres -c 'createuser -s -i -d -r -l -w root' 42 createdb auditor_db 43 createdb exchange_db 44 createdb merchant_db 45 46 ##### 47 # Exchange 48 ##### 49 50 # le damos nombre a nuestra moneda 51 # el nombre de la moneda esta definido por el sistema bancario al cual 52 # se conecta este exchange 53 taler-config -s taler -o currency -V NERDS 54 55 # unidad minima de valor nominal 56 taler-config -s taler -o currency_round_unit -V $(taler-config -s taler -o currency):0.1 57 58 # id publico 59 taler-config -s exchange -o MASTER_PUBLIC_KEY -V $(taler-exchange-offline setup) 60 61 # ubicacion en la red 62 taler-config -s exchange -o base_url -V http://exchange.taler:8081/ 63 64 # ubicacion de la base de datos 65 taler-config -s exchangedb-postgres -o config -V postgres:///exchange_db 66 67 # donde el exchange espera recibir fondos 68 taler-config -s exchange-account-1 -o payto_uri -V payto://x-taler-bank/bank.taler:5882/sebasjm 69 70 71 72 # la siguiente configuracion es usada por 73 # * taler-exchange-wirewatch 74 # * taler-exchange-transfer 75 76 # conexion via REST API con el banco y sus credenciales 77 taler-config -s exchange-accountcredentials-1 -o wire_gateway_url -V http://bank.taler:5882/taler-wire-gateway/sebasjm/ 78 taler-config -s exchange-accountcredentials-1 -o username -V sebasjm 79 taler-config -s exchange-accountcredentials-1 -o password -V asd 80 81 # inicializacion de la base de datos del exchange 82 taler-exchange-dbinit 83 84 # usamos la herramienta de la wallet para generar una configuracion standard inicial 85 # que vamos a guardar en el archivo coins.conf 86 taler-wallet-cli deployment gen-coin-config \ 87 --min-amount $(taler-config -s taler -o currency):0.1 \ 88 --max-amount $(taler-config -s taler -o currency):10 \ 89 > coins.conf 90 91 #revisar y editar coins.conf para configurar: 92 # * duracion 93 # * tamaño 94 # * honorarios 95 96 #luego agregamos los valores a la configuracion 97 cat coins.conf >> /etc/taler/taler.conf 98 99 100 #tenemos un servicio de exchange casi listo 101 taler-exchange-httpd -l log.exchange -L debug & 102 103 # en condiciones normales taler-exchange-offline debe usarser desde otra computadora 104 # desconectada de internet 105 106 # generamos una aprobacion de la cuenta bancaria donde el exchange recibe fondos 107 # y una aprobacion de los honorarios para un año 108 taler-exchange-offline \ 109 enable-account $(taler-config -s exchange-account-1 -o payto_uri) \ 110 wire-fee 2021 x-taler-bank $(taler-config -s taler -o currency):0.1 $(taler-config -s taler -o currency):0.1 \ 111 upload; 112 113 # en condiciones normales los procesos *-secmod-* son los unicos que tienen 114 # acceso a las claves privadas RSA y Eddsa 115 116 # iniciamos los procesos de firma digital 117 # este proceso puede demorar y es importante esperar a que finalice antes de seguir 118 taler-exchange-secmod-eddsa -l log.secmod.eddsa -L debug & 119 taler-exchange-secmod-rsa -l log.secmod.rsa -L debug & 120 121 # normalmente este es un paso de revision de configuracion 122 # primero se descarga el material en formato json para revisar que todo este en orden 123 # si no hay differencias con lo esperado se firma el contenido 124 # finalmente se envia el contenido firmado como aprobacion para que el exchange pueda emitir monedas 125 126 # en este caso lo hacemos en un solo paso 127 taler-exchange-offline download sign upload 128 129 # si todo funciono correctamente el exchange responde con las configuracion correcta 130 curl exchange.taler:8081/keys | jq . 131 132 # el servicio wirewatch estara preguntando al banco por transacciones entrantes y salientes 133 taler-exchange-wirewatch -l log.wirewatch -L debug & 134 135 # el servicio transfer ejecutara movimientos en su cuenta bancaria 136 taler-exchange-transfer -l log.transfer -L debug & 137 138 # el servicio aggregator simplificara transacciones a un mismo destinatario 139 taler-exchange-aggregator -l log.aggregator -L debug & 140 141 # el servicio closer vigilara transacciones que pueden ser cerradas 142 taler-exchange-closer -l log.closer -L debug & 143 144 145 ##### 146 # Auditor 147 ##### 148 149 #ubicacion en la red 150 taler-config -s auditor -o port -V 8083 151 taler-config -s auditor -o serve -V tcp 152 taler-config -s auditor -o base_url -V http://auditor.taler:8083/ 153 154 #ubicacion de la base de datos 155 taler-config -s auditordb-postgres -o config -V postgres:///auditor_db 156 157 # en condiciones normales el exchange y auditor no estan en la misma computadora 158 159 # agregamos el exchange a la lista de servicios para auditar 160 taler-auditor-exchange -m $(taler-config -s exchange -o master_public_key) -u $(taler-config -s exchange -o base_url) 161 162 # notificamos al exchange de que va a ser auditado 163 taler-exchange-offline enable-auditor $(taler-auditor-offline setup) $(taler-config -s auditor -o base_url) the_auditor upload 164 165 # inicializamos la base de datos 166 taler-auditor-dbinit 167 168 # el exchange ahora informa sobre su condicion 169 curl exchange.taler:8081/keys | jq .auditors 170 171 # iniciamos el servicio auditor 172 taler-auditor-httpd -l log.auditor -L debug & 173 174 ##### 175 # Merchant 176 ##### 177 178 # ubicacion en la red 179 taler-config -s merchant -o port -V 9966 180 taler-config -s merchant -o serve -V tcp 181 182 # ubicacion de la base de datos 183 taler-config -s merchantdb-postgres -o config -V postgres:///merchant_db 184 185 # agregamos una referencia al exchange 186 # de esta manera confiamos en la pagos con monedas emitidas por dicho exchange 187 taler-config -s merchant-exchange-nerds -o exchange_base_url -V $(taler-config -s exchange -o base_url) 188 taler-config -s merchant-exchange-nerds -o master_key -V $(taler-config -s exchange -o MASTER_PUBLIC_KEY) 189 taler-config -s merchant-exchange-nerds -o currency -V $(taler-config -s taler -o currency) 190 191 # alternativamente, agregamos una referencia al auditor 192 # de esta manera confiamos en pagos con monedas emitidas por cualquier exchange auditado por dicho auditor 193 taler-config -s merchant-auditor-nerds -o AUDITOR_BASE_URL -V $(taler-config -s auditor -o base_url) 194 taler-config -s merchant-auditor-nerds -o AUDITOR_KEY -V $(taler-auditor-offline setup) 195 taler-config -s merchant-auditor-nerds -o currency -V $(taler-config -s taler -o currency) 196 197 # inicializamos la base de datos 198 taler-merchant-dbinit 199 200 # iniciamos el servico auditor 201 taler-merchant-httpd -l log.merchant -L debug & 202 203 # El sistema esta completo 204 # Los proximos pasos son: 205 # * obtener una billetera GNU Taler en https://wallet.taler.net 206 # * extraer dinero desde el banco usando el exchange 207 # * generar una orden de compra en el backoffice del comerciante 208 # * utilizar la billetera para pagar la orden de compra 209 210