RSK
EVM sidechain for Bitcoin
RSK is configured by default to accept only localhost / 127.0.0.1 as the hostname
So when StackOS provides a custom hostname, or you configure your own DNS, RSK will refuse to serve any jsonrpc responses
Solution
Build the basic RSK mainnet image on your local machine
docker build -t mainnet -f Dockerfile.MainNet .
You will end up with a mainnet image
Prepare node.conf
Take the default node.conf and change the hosts the image will recognize
web: {
cors: "*",
http: {
enabled: true,
bind_address = "0.0.0.0",
hosts = ["tagethost.example.com"]
port: 4444,
}
ws: {
enabled: false,
bind_address: "0.0.0.0",
port: 4445,
}
}
}
Make a Dockerfile
FROM mainnet:latest
COPY node.conf /etc/rsk/node.conf
Build & push your image
docker build -t dockerhubuser/myrsk:v123
docker push dockerhubuser/myrsk:v123
Configure your pod
Download your own image that you just uploaded

If you want to use custom DNS, set that up ahead of time
Custom DNSTest your connection
Run curl against your host
curl https://rsk.mydomain.com/mainnet --header 'Content-Type: application/json' -XPOST -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
Expect a response like
{"jsonrpc":"2.0","id":1,"result":"0x0"}
Debug your pod
Edit /etc/rsk/logback.xml and increase verbosity for jsonrpc
Wait 1 hour for rsk to read your new log config (or rebuild your docker image and force the change)
Watch for error messages
tail -f /var/log/rsk/rsk.log | grep rpc
Persistent Storage
If you wish to use persistent storage with rsk, be aware you must update the permissions of the storage directory
Here is an example configuraton

After your pod boots, locate your pod name and shell into your pod:
WebTTY, Logs, Shell AccessThen run the following command
chown -R rsk:rsk /var/lib/rsk
Then your process will run normally.
Last updated