403 禁止来自 bitcoind -server 运行 docker
403 Forbidden from bitcoind -server run on docker
我正在使用新的 Docker-for-Mac 到 运行 守护程序,如下所示:
$docker run -d --name bitcoind -e BITCOIN_DATA=/data \
-v ${PWD}/bitcoind:/data -p 8332:8332 seegno/bitcoind:latest \
-server -rpcuser=test -rpcpassword=nopass -rpcallowip=192.168.1.67 \
-printtoconsole -debug=rpc
我允许的 IP 地址是我的默认地址:
$ ifconfig |grep inet |grep -v inet6
inet 127.0.0.1 nitmask 0xff000000
inet 192.168.1.67 netmask 0xffffff00 broadcast 192.168.1.255
然后我 运行 我的应用程序:
var BTC = require('bitcoin-core');
var opts = {
host: 'localhost',
port: 8332,
username: 'test',
password: 'nopass'
};
btc = new BTC(opts);
btc.getNewAddress().then(function(s) {
console.log(s);
});
并得到:
Unhandled rejection RpcError: 403 Forbidden
at get (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:34:11)
at Client.rpc (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:81:14)
at Request.self.callback (/Users/ekkis/Development/Test/www/node_modules/request/request.js:200:22)
at emitTwo (events.js:87:13)
at Request.emit (events.js:172:7)
at Request. (/Users/ekkis/Development/Test/www/node_modules/request/request.js:1067:10)
at emitOne (events.js:82:20)
at Request.emit (events.js:169:7)
at IncomingMessage. (/Users/ekkis/Development/Test/www/node_modules/request/request.js:988:12)
From previous event:
at /Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:163:21
From previous event:
at Client.command (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:152:34)
at apply (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:409:27)
at Client.wrapper [as getNewAddress] (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:4837:16)
at Object. (/Users/ekkis/Development/Test/www/t:12:5)
at Module._compile (module.js:425:26)
at Object.Module._extensions..js (module.js:432:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:457:10)
at startup (node.js:136:18)
at node.js:972:3
虽然我似乎可以连接到服务器:
$ telnet localhost 8332
Trying ::1...
Connected to localhost.
Escape character is '^]'.
它不会因连接错误挂断我...我错过了什么?
* 编辑我 *
好吧...如果我 运行 使用 -logips
的守护程序并进行尝试,我会看到:
2016-07-09 18:32:26 Received a POST request for / from 172.17.0.1:50262
而不是我期望的 IP 地址。我收集到它是 Docker 运行s 的 VM 的 IP 地址,它以某种方式被路由到容器。所以现在的问题是:如何从我的节点应用程序中发现该 IP 地址,以便将其列入白名单?
和...(鼓声)答案似乎是我可以从 docker inspect
NetworkSettings.Gateway
键中拾取它。但是...事实上,我可以将它烘焙到 CLI 中,因为对于此图像,网关始终相同
我正在使用新的 Docker-for-Mac 到 运行 守护程序,如下所示:
$docker run -d --name bitcoind -e BITCOIN_DATA=/data \
-v ${PWD}/bitcoind:/data -p 8332:8332 seegno/bitcoind:latest \
-server -rpcuser=test -rpcpassword=nopass -rpcallowip=192.168.1.67 \
-printtoconsole -debug=rpc
我允许的 IP 地址是我的默认地址:
$ ifconfig |grep inet |grep -v inet6
inet 127.0.0.1 nitmask 0xff000000
inet 192.168.1.67 netmask 0xffffff00 broadcast 192.168.1.255
然后我 运行 我的应用程序:
var BTC = require('bitcoin-core');
var opts = {
host: 'localhost',
port: 8332,
username: 'test',
password: 'nopass'
};
btc = new BTC(opts);
btc.getNewAddress().then(function(s) {
console.log(s);
});
并得到:
Unhandled rejection RpcError: 403 Forbidden at get (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:34:11) at Client.rpc (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:81:14) at Request.self.callback (/Users/ekkis/Development/Test/www/node_modules/request/request.js:200:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (/Users/ekkis/Development/Test/www/node_modules/request/request.js:1067:10) at emitOne (events.js:82:20) at Request.emit (events.js:169:7) at IncomingMessage. (/Users/ekkis/Development/Test/www/node_modules/request/request.js:988:12) From previous event: at /Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:163:21 From previous event: at Client.command (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:152:34) at apply (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:409:27) at Client.wrapper [as getNewAddress] (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:4837:16) at Object. (/Users/ekkis/Development/Test/www/t:12:5) at Module._compile (module.js:425:26) at Object.Module._extensions..js (module.js:432:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Function.Module.runMain (module.js:457:10) at startup (node.js:136:18) at node.js:972:3
虽然我似乎可以连接到服务器:
$ telnet localhost 8332
Trying ::1...
Connected to localhost.
Escape character is '^]'.
它不会因连接错误挂断我...我错过了什么?
* 编辑我 *
好吧...如果我 运行 使用 -logips
的守护程序并进行尝试,我会看到:
2016-07-09 18:32:26 Received a POST request for / from 172.17.0.1:50262
而不是我期望的 IP 地址。我收集到它是 Docker 运行s 的 VM 的 IP 地址,它以某种方式被路由到容器。所以现在的问题是:如何从我的节点应用程序中发现该 IP 地址,以便将其列入白名单?
和...(鼓声)答案似乎是我可以从 docker inspect
NetworkSettings.Gateway
键中拾取它。但是...事实上,我可以将它烘焙到 CLI 中,因为对于此图像,网关始终相同