I’ve come to love the Ravencoin project, the community and all it stands for. I wanted to help out by running a full node to support the network.

I didn’t want to set up a Raspberry Pi, or run it on one of my desktops though. I tend to run software like this in docker running on my Synology NAS. Searching around, I couldn’t seem to find any images on dockerhub that I would feel comfortable running.

I inquired on Reddit, and Jeroz_ pointed me to a dockerfile that already existed on Ravencoin core’s github, so this naturally made me screw around and get this working on my own.

The easiest path to building an image (at least for me) is as follows:

Creating the Docker Image

If you’re doing this on a Synology NAS, you’ll need to install Docker, and Enable SSH on your NAS. (Temporarily at least, I would not leave this enabled)

This can be found in Control Panel -> Terminal & SNMP -> Enable SSH Service

  1. Download the entire source from https://github.com/RavenProject/Ravencoin
  2. Extract it. If you’re doing this on a Synology NAS like I was, copy the contents into a file share.
  3. Move the Dockerfile from /contrib to the root of the Ravencoin directory (one level up), since the Dockerfile references autogen.sh. It will fail otherwise, and i’m too stupid and inexperienced with docker to find out what allows it to build without moving the file πŸ˜‰
  4. SSH to your NAS, cd to the directory you uploaded the Ravencoin source to on your NAS, and run “sudo docker build -t ravencore .” (don’t forget the period at the end) to create the image.
  5. You should see the image compile. This may take a while.

The build process should start with this:

And finish like this:

Still with me? Cool. We have an image now that we can launch.

If you made this image on another machine, you can gzip it up and transfer to another machine by using sudo docker save ravencore:latest | gzip > ravencore.tar.gz. You can Import the tar.gz file in Docker -> Images->Add By File.

But if you did all this on your Synology CLI, the image will show up in Docker, under Images:

Click this Image, click Launch, and then click Advanced Settings:

Click Auto-Restart (If something crashes, it will auto restart the image)

Click the “Network” Tab, and then click “Use the same network as Docker Host”. (This works in my scenario – you may have a separate network you want to use)

Apply all these settings, and Launch this puppy!

OK, how do I know what its doing?

The logs outputting to the console aren’t very helpful, though you can see it’s discovering peers and such.

If you’d like to see the status of the blockchain syncing, we’ll have to break into the image’s CLI and run raven-cli to get some more info. For the first hour or so you may only be syncing headers. you can see this by running sudo docker exec -it Ravencore raven-cli getblockchaininfo

The result will look like this:

You can continue to run this command to ensure the headers are increasing. When they’re done syncing you should see the blocks increase.

What about Networking and Port forwarding?

You may have noticed your node doesn’t show up on https://www.ravennodes.com/nodes/. You’ll likely need to forward TCP/8767 from your WAN interface to the internal IP if your docker host. Since there are many types of routers out there, google your router model and look up how to forward ports.

After you’ve completed this, you can test the port is open by using https://www.yougetsignal.com/tools/open-ports/ and it should automatically detect your external IP. Put in port 8767 in the Port textbox and click Check.

If everything went well, you should see it open, and your IP show up on RavenNodes.

That’s it!!! Holy shit, we did it everyone. Good job.

Disclaimer: What works for me may not work for you. I’m also no expert on docker but enough to make me dangerous, so take my my advice with a grain of salt. If something screws up your machine, not my fault! be warned.

Did I help? If you’re feeling generous, buy me a coffee by sending RVN to RHEH92NguBjaxXQPsM1bedkqqTXKr9EZcM

Follow me on social media: