How to change RPC port for bitcoind? (rpcport=xxx in bitcoin.conf doesn't work)

0

I'm running a testnet bitcoind node and I have been doing RPC calls on the default port 18332.

I have added this line to ~/.bitcoin/bitcoin.conf:

rpcport=19832

And restarted the bitcoind service. I even restarted the whole machine.

But for some reason it is still accepting RPC calls on port 18332, and trying the same on port 19832 gives "connection refused".

It is definitely using the settings in bitcoin.conf, for example if I change rpcuser or rpcpassword (and restart again) I have to use the new user+password in RPC calls, the old ones don't work anymore.

But somehow the port does change.

Am I doing something wrong? Is the setting called something else than rpcport=xxx ?

I know I can probably also define the port manually on the cmd line (using bitcoind -rpcport=xxx or something) when starting bitcoind, but I want to have everything configured in bitcoin.conf (where it belongs) and have it all started automatically.

P.S. I am connecting on localhost, i.e. on the machine itself. I am also running the ufw firewall, and it is configured to accept connections on both 19832 as well as 18832 (so it's definitely not the firewall that's blocking things here).

(edit) FYI here's the complete bitcoin.conf file:

testnet=1
server=1
daemon=1
txindex=1
rpcuser=XXXXXXXXXXXXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
rpcport=19832
onlynet=ipv4
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333

And here is how I perform RPC commands:

curl http://XXXXXXXXX:XXXXXXXXX@localhost:18332 -H 'content-type:text/plain;' --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getwalletinfo","params":[]}'

This works OK although note it connects to 18332. If I change localhost:18332 into localhost:19832 it doesn't work anymore (Connection refused).

In case my version is relevant, the result of getwalletinfo contains "walletversion": 169900.

RocketNuts

Posted 2019-02-08T12:11:28.670

Reputation: 714

Could you add the full bitcoin.conf file?Зелёный 2019-02-08T12:14:28.910

@Зелёный addedRocketNuts 2019-02-08T12:17:51.640

Also add the full command line you're using to start itAlistair Mann 2019-02-08T12:20:36.383

@RocketNuts add this command rpcbind=127.0.0.1:19832Зелёный 2019-02-08T12:26:23.910

@Зелёный Thanks but unfortunately it doesn't seem to help. After adding that line and restarting the service, it still accepts RPC commands on 18332 and not on 19832. I also tried removing rpcallowip=127.0.0.1 (so instead of two separate rpcallowip= and rpcport= lines there was now just one rpcbind=127.0.0.1:19832 line) but again, still the same.RocketNuts 2019-02-08T12:32:13.750

Provide full command, how you're running and testing the RPC, all things please.Зелёный 2019-02-08T12:35:00.500

@Зелёный added aboveRocketNuts 2019-02-08T12:41:52.593

How you're running the bitcoind itself? Could you also try to run just this conf file ? https://pastebin.com/mKWmKs00, also try with 127.0.0.1 instead of localhost in the curl command.

Зелёный 2019-02-08T12:45:17.130

@Зелёный I start bitcoind with sudo systemctl start bitcoind or sudo systemctl restart bitcoind. Tried your bitcoin.conf file (and changed the username and password to something new, so I'm sure this .conf file is used) and restarted the service, but unfortunately same result: it allows connection on 18332 (using new user&pasw) but not on 19832. Also tried 127.0.0.1 instead of localhost with curl but again no difference. Strange huh?RocketNuts 2019-02-08T13:04:16.710

I cant reproduce your problem, because on the same configuration is working for me. Maybe something wrong with your systemctl service, run command and show the result systemctl cat bitcoind.service.Зелёный 2019-02-08T13:08:26.887

@Зелёный Result of systemctl cat bitcoind.service: https://pastebin.com/raw/JQS0yuJH Thanks a lot for your attempts to help. Just to be sure, you are also testing with testnet? (not mainnet?)

RocketNuts 2019-02-08T13:14:51.460

Yes, I tested it with testnet and mainnet. To be honest IDK, why it's not working for you. Here is my service https://pastebin.com/raw/r4hrPkvt also my bitcoin config exactly like this https://pastebin.com/raw/mKWmKs00.

Зелёный 2019-02-08T13:28:59.757

@Зелёный Hmm very weird. And your walletversion from getwalletinfo is also 169900 ?RocketNuts 2019-02-08T13:34:38.553

Yes, it is. Try my service and bitcoin configuration.Зелёный 2019-02-08T13:41:20.560

@Зелёный Have done that, but unfortunately no difference. Very weird :( Well, thanks for all the help attempts. Much appreciated. I will just keep using the regular port for now, and maybe reinstall my entire machine at some later time.RocketNuts 2019-02-08T13:57:31.747

Could you: print the result of running "sudo lsof -i | grep bitcoind | grep LISTEN" (you'll need to be give the root password) And can you also give us the result of running manually: "sudo systemctl start bitcoind; " then "/path/to/bitcoind -conf=/home/[your homedir]/.bitcoin/bitcoin.conf". Does it honour the correct port when run manually?Alistair Mann 2019-02-08T14:41:31.287

Oops - that should be "sudo systemctl stop bitcoind"Alistair Mann 2019-02-08T16:40:59.950

@AlistairMann Here's the result: https://pastebin.com/raw/MVcuVnWd When stopping the service (and checking with sudo systemctl status bitcoind to be 100% sure it stopped) and then starting manually, the lsof output is the same (well, other processIDs, but the three listen ports are the same.

RocketNuts 2019-02-08T20:26:00.183

I've deleted my last request because I've managed to replicate your problem on my own machine. Will report back shortly.Alistair Mann 2019-02-08T20:41:42.850

Answers

3

Found the solution: rpcport needs to be in the [test] section

Please update your original config file to read:

testnet=1
server=1
daemon=1
txindex=1
rpcuser=XXXXXXXXXXXXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
onlynet=ipv4
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
[test]
rpcport=19832

And restart the daemon. Also take a look at Can't specify rpcport for testnet for related changes to other options. We were being warned what to do in the log file. ~/.bitcoin/testnet3/debug.log includes the line Warning: Config setting for -rpcport only applied on test network when in [test] section.

We could have picked this up faster had (we read the log file! And if) the example bitcoin.conf made a mention of now requiring sections.

Would be great if you could make this the ticked solution instead!

Alistair Mann

Posted 2019-02-08T12:11:28.670

Reputation: 522

1

It looks like a bug: I've also replicated the same behaviour on my machine using the current version, Bitcoin Core Daemon version v0.17.99.0-g2945492424934fa360f86b116184ee8e34f19d0a freshly downloaded from github. However I notice @Зелёный above was unable to replicate it, so perhaps the bug is in a library you and I share and he doesn't, rather than in bitcoind. Certainly there are no outstanding issues there that seem relevant.

I'm going to pick through the source to see if I can spot what's happening. Depending on what I find I might open an issue with them. Let me know here and I'll update you.

In the meantime I would suggest adding -rpcport=19832 to your command line - it was always honoured here!

Alistair Mann

Posted 2019-02-08T12:11:28.670

Reputation: 522

Thanks! Got it to work with the -rpcport=19832 on the command line (I added it in /etc/systemd/system/bitcoind.service)RocketNuts 2019-02-08T22:27:49.093