How to Set Up a Cardano Node at Home and Turn It Into a Lower-Cost, Income-Ready Machine
Episode by Peter Bui on May 27th, 2026
Now, recently I purchased one of these mini desktop PCs, and in this post, I’ll take you through how I set up a Cardano node at home, the tutorials I followed, and what I am actually trying to do with this little machine.
The idea here wasn’t just to set up another box for the sake of it. I initially bought this to run as an additional relay for my Cardano stake pool, ADAOZ, and to reduce costs there. But in doing so, I can also use this node for a whole lot of other things too, like a submit API and other services that might earn some rewards over time.
So if you watched the video and wanted the written version to follow along with, this is it. I’m pulling together the same guides I used in the video: CoinCashew’s Cardano stake pool guide for the hardening and security side of things, and Guild Operators for the node tooling, binaries, and service scripts.
I’m not trying to replace those guides here. I’m just putting the whole flow in one place so you can follow the same path I did: install Ubuntu, lock the machine down properly, deploy Guild Operators, bring up the relay, optionally add the submit API, use Mithril to speed things up, and hopefully turn this into a machine that becomes useful enough to pay for itself over time.
What I was trying to build
The machine I used was a second-hand HP Elite mini desktop with 32 GB RAM, a 500 GB drive, and an 8-core i7. Definitely not a gaming machine or anything like that, but it is a really good little machine to run a Cardano relay node. I bought it to run as an additional home relay for my stake pool and to see if I could reduce some of that recurring cloud spend.
I paid roughly A$350 for the machine, and when you compare that with what a similar relay can cost you in the cloud every month, it starts to make a lot of sense. If this one works out really well, I can always set up more relays around Australia as well and build out a better relay network for a lower cost.
So this post is really about that setup path. It is not a complete stake pool registration guide and it is not a cold-key guide. For those parts, keep CoinCashew open in another tab.
Why the sustainability angle matters
The part I really wanted to explore here was not just whether I could run a relay from home. It was whether I could make this thing useful across a few different roles at once.
- It can reduce the monthly cost of running stake pool infrastructure.
- It can give me a private transaction path through a submit API when public wallet infrastructure is congested.
- It can become a base machine for additional services that reward operators for useful work.
Now that doesn’t mean it magically prints money or anything like that. You still need to maintain it properly, monitor it, keep the internet stable, keep the power on, and actually design the relay setup properly. But if I can reduce costs and maybe run some useful services on top of it as well, then this little machine becomes a lot more interesting.
The tutorials I used in the video
- Security hardening: CoinCashew’s Hardening an Ubuntu Server and Setting Up chrony.
- Node install and service scripts: Guild Operators Basics and Node & CLI.
- Topology and relay design: CoinCashew’s Configuring Topology.
Step 1: Install Ubuntu and make the box remotely manageable
I started with the most practical approach possible: install Ubuntu, confirm the machine worked properly, then move to a command-line-first workflow so the box could live beside the router instead of on my desk. If you are more comfortable using Ubuntu Desktop for the first install, that is a perfectly reasonable on-ramp.
One of the first commands I explicitly call out in the video is installing SSH so the machine can be managed remotely:
sudo apt install openssh-server -y
After that, test remote access from another machine:
ssh <your-user>@<your-node-ip>
Once I had that working, I knew I had proper remote access to the machine and I could move it out of the way and just manage it over SSH.
Step 2: Harden the server before exposing relay traffic
This is where I lean pretty heavily on CoinCashew, and I recommend you do the same. Once you’ve got the server up and running, you should go through these stages properly to strengthen the server’s security.
Create a non-root sudo user
useradd -m -s /bin/bash cardano
passwd cardano
usermod -aG sudo cardano
Move to SSH keys and disable password-based login
Generate a key on your local machine, then copy the public key to the node:
ssh-keygen -t ed25519
ssh-copy-id -i $HOME/.ssh/<keyname>.pub cardano@<server-ip>
Then edit the SSH daemon config on the node:
sudo nano /etc/ssh/sshd_config
Update or uncomment these lines:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
PermitEmptyPasswords no
# Optional
Port <custom-port>
Validate the config before restarting SSH:
sudo sshd -t
sudo systemctl restart sshd
In the video I kept port 22 just to keep the walkthrough simple, but I also say pretty clearly that changing it is the better habit for a machine you intend to leave online.
Patch the system and enable unattended security updates
sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Install fail2ban
sudo apt-get install fail2ban -y
sudo nano /etc/fail2ban/jail.local
A minimal SSH jail from the CoinCashew guide looks like this:
[sshd]
enabled = true
port = <22 or your random port number>
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
ignoreip = <trusted IPs>
sudo systemctl restart fail2ban
Configure UFW
I specifically call out opening the node port so other Cardano relays can actually talk to the machine. The CoinCashew defaults line up with that:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 6000/tcp
sudo ufw enable
sudo ufw status numbered
If you are using a custom SSH port, update the rule accordingly. If this relay is sitting behind a router at home, you will also need to enable the matching port forwarding on the router side, not just in UFW.
Keep time correct with chrony
Both Guild Operators and CoinCashew stress that accurate system time matters. CoinCashew’s chrony page gives a clean starting point:
sudo apt-get install chrony -y
Then create a config like:
cat > $HOME/chrony.conf << EOF
pool time.google.com iburst minpoll 1 maxpoll 2 maxdelay 0.3 maxsources 3
pool ntp.ubuntu.com iburst minpoll 1 maxpoll 2 maxdelay 0.3 maxsources 3
pool us.pool.ntp.org iburst minpoll 1 maxpoll 2 maxdelay 0.3 maxsources 3
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
EOF
Don’t skip this one. Time sync is one of those things you don’t really think about until it goes wrong.
Step 3: Pull down Guild Operators and install the node toolchain
This is the main tutorial I followed for the Cardano-specific setup. Huge thanks to the Guild Operators guys for putting all of this together, because it makes the whole process so much easier. You don’t need to worry about every little dependency manually if you follow their install flow properly.
Start exactly where the Guild docs start:
mkdir "$HOME/tmp"
cd "$HOME/tmp"
sudo apt -y install curl
curl -sS -o guild-deploy.sh https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/guild-deploy.sh
chmod 755 guild-deploy.sh
./guild-deploy.sh -h
The Guild docs show this sample install for preview:
./guild-deploy.sh -b master -n preview -t cnode -s pdlcowx
. "${HOME}/.bashrc"
For a home relay on mainnet, just adjust the network flag to match what you’re actually building, and install only the bits you need. In my case, the main ones were the common prerequisites, the downloadable binaries, the Mithril client, the CLI tooling, and the monitoring scripts.
The selective install flags documented by Guild Operators are worth understanding before you mash enter:
pinstalls common OS-level prerequisites.lbuilds the libsodium fork.mdownloads Mithril binaries.ddownloads released Cardano binaries includingcardano-node,cardano-cli, andcardano-submit-api.cdownloads CNCLI.odownloads Ogmios.xdownloads Cardano Signer.
Step 4: Verify the node binaries and set your basic env values
Once Guild Operators finishes, I like to check the installed versions before going any further.
cardano-cli version
cardano-node version
The Guild Operators Node & CLI page also shows the main values you will usually want to confirm in the environment file:
CNODEBIN="${HOME}/.local/bin/cardano-node"
CCLI="${HOME}/.local/bin/cardano-cli"
CNODE_PORT=6000
POOL_NAME="GUILD"
If this is a relay-only box, the absence of pool hot keys means it will simply run in relay mode, which is exactly what you want for a home relay.
Step 5: Start the node, then move it under systemd
Guild Operators gives you scripts for both interactive testing and proper service management.
Interactive start
cd $CNODE_HOME/scripts
./cnode.sh
If you also want the submit API I talk about in the video:
cd $CNODE_HOME/scripts
./submitapi.sh
That lets a wallet submit transactions through infrastructure you control, rather than relying entirely on shared wallet-provider relays.
Deploy as services
cd $CNODE_HOME/scripts
./cnode.sh -d
./submitapi.sh -d
sudo systemctl start cnode.service
sudo systemctl start cnode-submit-api.service
sudo systemctl status cnode.service
sudo systemctl status cnode-submit-api.service
This is the better long-term setup, and it’s the one I use in the video once I know the box is actually working properly.
Step 6: Tune the node and add visibility
I make a couple of practical edits after the node is online.
- I adjust CPU usage in the node startup script to better fit the local hardware.
- I rename gLiveView so it is obvious which node I am looking at.
- I enable mempool tracing so transaction activity is visible.
One of the simple quality-of-life packages I install is:
sudo apt install htop -y
htop
For node monitoring, Guild Operators gives you gLiveView out of the box:
cd $CNODE_HOME/scripts
./gLiveView.sh
This is where I can quickly check uptime, peers, sync progress, and whether the node is actually behaving the way it should.
Step 7: Use Mithril so you are not waiting forever on sync
I say this pretty clearly in the video: Mithril is a godsend. Instead of waiting forever for a full sync from scratch, you can pull down a Cardano DB snapshot and speed up the whole process.
The exact menu flow can evolve over time, but my working sequence was:
cd $CNODE_HOME/scripts
./mithril-client.sh environment setup
./mithril-client.sh cardano-db download
If you want to inspect what is available first, the Guild Operators Mithril docs also describe listing snapshots before downloading. If you already started the node and it created a database directory, you may need to clean that state before downloading the snapshot, which is exactly the snag I hit during the video.
This is the bit that makes the whole setup feel a lot less painful, because you can get the node usable much faster.
Step 8: Update topology for your real relay layout
Once the node is healthy, you still need to make it fit your actual network design. CoinCashew’s topology guide and my walkthrough agree on the key idea: your block producer should only talk to relays you control, and your relay should expose the node port other peers need.
I keep the backbone peers intact, then edit the local routes and valency to match my own relay estate. If you have multiple relays, increase valency to match the number of relays you want this node to hold open consistently.
Do not forget the router side of this. Opening 6000/tcp in UFW is necessary, but not sufficient, if the machine sits behind home NAT.
What to copy from this setup and what not to copy blindly
The main thing here is that I do keep some of the flow simple in the video so people don’t get lost, but I also point back to the proper guides whenever the security or network details really matter.
That means the smart way to use this article is:
- Use my video for the big-picture flow and for seeing where each tool fits.
- Use CoinCashew for hardening, firewalling, and operational discipline.
- Use Guild Operators for the actual node deployment, service scripts, and monitoring workflow.
Key Takeaways
- A cheap mini PC can be enough for a useful home relay if you treat it like real infrastructure, not a toy box.
- CoinCashew is the right place to copy your hardening steps from: SSH keys, fail2ban, UFW, unattended upgrades, and chrony.
- Guild Operators is the main install path I used for Cardano binaries, service scripts, submit API, and monitoring.
- Mithril snapshots dramatically reduce the pain of bringing a fresh relay online.
- The bigger goal is not just to run a relay, but to build a sustainable machine that can lower costs and potentially help pay for itself over time.
Source tutorials referenced in the video
- CoinCashew: Guide – How to Set Up a Cardano Stake Pool
- CoinCashew: Hardening an Ubuntu Server
- CoinCashew: Setting Up chrony
- CoinCashew: Configuring Topology
- Guild Operators: Basics
- Guild Operators: Node & CLI
Disclaimer: This article is for educational purposes only. Commands and package names can change across Ubuntu and Cardano node releases, so always verify against the latest upstream documentation before exposing a machine to the public internet.
Text Transcript
Now, recently I just purchased one of these mini desktop PCs. This is a HP Elite desktop. It’s got 32 gig of RAM, 500 gig of hard drive space. It’s a Core i7 with eight cores in it. So it’s definitely not a gaming machine. It’s not gonna play Far Cry or anything like that on there, but it’s a really good machine to run a Cardano Node Relay. You don’t need that many resources out there.
I purchased this for 350 Australian dollars with delivery. I’m gonna turn this one into a profitable machine running some decentralized batching software, some services that you can do, and earn some crypto rewards for it. So this is gonna be an interesting experiment. I’m gonna run all these batches and all these decentralized systems to see if I can make this thing profitable. All right, let’s get into it. Hey everyone, I’m Peter Beauty. If this is your first time here,
Thumbs up, like, subscribe, notification bell, and I’ll keep you guys up to date with everything that’s happening in the Cardano space, especially these tutorials. Tutorials on how to actually earn cryptocurrency in the space. I absolutely love earning crypto. I don’t usually use my fiat and buy crypto assets. I like to earn it by working on various projects or mining or operating software like this so that I can actually earn that cryptocurrency. Participate in crypto, not just be on the sidelines buying it.
Now, the idea here is I bought this initially to just run as an additional relay for my Cardano stake pool Ada Oz. Go check it out. And I wanted to reduce the cost there. If you have a look at the operating cost for a similar node with similar specs, it costs anywhere around 90 US to 120 US a month to actually operate one of these nodes in the cloud. And to have one of these bare metal machines within my own home and operated here.
For only 350 Australian, it really reduces that cost down. So it makes my stake pool a lot more profitable. So this is one of the main things that I’m trying to do here. So if this one works out really well, I’ll start setting up other relay nodes around Australia, maybe at my parents’ house or wherever it is. And that way I can have a better relay network for a lower cost. So that would increase my profitability of my stake pool. So that’s the main goal here that I was trying to achieve. But in doing so,
You can also use this Cardano node for many other things. You can use it as a submit API. Now, what the hell is that, you might ask? A submit API allows you to connect one of your Cardano wallets such as NAMI, Lace, or Eternal, and submit your transactions to your own private relay node, such as the one I’m setting up here. And that would then propagate all the all your transactions out to the rest of the Cardano network. Now, why would this be a good thing?
Well, you see, all the wallet providers out there, they usually have their own infrastructure. And during peak times, their infrastructure gets filled up with transactions as more and more people use their wallets and there might be a big mint or a big thing that’s happening in the Cardano space. All those transactions will fill up what’s called their mempools. And the mempools of these relays get filled. The first ones that go in usually are the first ones that go out.
So if that gets overfilled, the buckets will get extremely full and it’ll take a little while for those transactions to get processed. Having your own relay node lets you bypass those. It lets you still use those particular wallets that you really like to use, but lets you bypass those mempools that are really full from the wallet provider’s infrastructure. And then you can just get hopefully get your transaction out there quicker. And I’m gonna set up that Submit API.
So that if I’m ever in these situations, I can use my own Submit API and get my transactions out there and hopefully beat other people to large mints or these token sales or anything else that might be happening in the Cardano space. So having your own Submit API and your own node is really advantageous for these types of situations. The last thing I’ll do on here is also set up some software from various decentralized protocols out there.
And they allow you to run this software and to be part of their ecosystem and earn some rewards for it. Things such as running a trading bot for Genius Yield or even a Batcher for Spectrum Finance or some of these other projects out there that provide this type of software to run on these nodes. And then if your node actually processes those transactions, you get a share of some of the profit.
So hopefully over time we’ll see a good return on investment on this little machine here and see what we can actually do with it and what we can participate in across the Cardano ecosystem and start making some profit off this. All right, let’s go into the first thing here of setting up the Cardano node itself. So the first thing I had to do on the machine was test out if it was working properly. So I booted it up in Windows. That all seemed to be working. I got to the Windows installer and that was all good. So you don’t want Windows on this one. I wanted
Ubuntu. I’m very used to Ubuntu and Linux and those type of operating systems. So I want to install a desktop version of Ubuntu and then run it by command line. So I had that flexibility there. Now it’s really easy to do. All you have to do is go to the Ubuntu website, follow the instructions there, download an image, and then they’ve got this little program called Etcher. And you just need to follow the instructions here. And you can do a bootable installation file from a USB stick. So I just plugged in my USB stick.
Followed the instructions here on this Etcher program and then managed to get a bootable, bootable version of Ubuntu that I can install from. Really easy to do. I’ll put links down below for all of this. So if you want to follow along with those instructions, go ahead. It’s it’s probably the easiest part of this whole process. Now going through the installation process of Ubuntu is super easy as well. Just follow the prompts. Because I’m using the graphical interface here for the installation, all I had to do is step through the process, make sure everything’s set up correctly.
The Wi-Fi device like picked up straight away, installed all the drivers for me, and it was pretty much good to go. So I highly recommend this process, especially if you’re a novice at installing operating systems. It’s a fairly uncommon thing for a lot of people to know how to do. So now that I’ve got Ubuntu installed, I wanted to reconfigure it so that it would load up by command line. But I wanted this flexibility so I could switch between the two because there are certainly times where I do want the a browser and I want to be able to
view things within the machine itself. So it was easy for me to do that. But then I had to go through the steps of changing this over so it would boot by command line. And it’s pretty easy to do. These are the commands here that I had to follow. All I had to do here was edit the Grub file within Ubuntu. There’s a couple lines that you had to change and then you just had to uncomment another one here that allowed for the command line prompt to load up. After that you just needed to update Grub.
And then one more command here, because this is a later version of Ubuntu was to allow the multi-user target. So just enter in that command there for multi-user target. Again, I’ll put this all down below, but you can enter that in and then away you go. You start having access by command line. So to test this out, I had the machine up and running. I went to my MacBook and I just ran the command here, the username of the particular account and then the IP address locally. Enter in the password and I’m in. So
That ensured that I had full remote access to the computer. Now there was one last thing I had to install here to make sure it would all work, and that was SSH itself. And then this will allow you to remotely connect to the machine and use command prompt. So I had to run the command sudo app install ssh. This installed SSH along with all its dependencies that it needed, and away it goes. Simple as that. So now from my MacBook, all I had to do was type in SSH, the username of my
account that I set up within the installation process and the IP address of the machine which I got in the installation process as well. So that’s my IP there for this machine at the moment and that’s the username. Hit enter, parser it, and I’m in. So this was the overall tedious little bit of the setup. Everything else is little bit more automated after this. So great so now I have full remote access to this. Now I can store this away in the spare room next to the router and it’s not in the way. I’m not going to trip over or anything.
Like
So that’s the overview stage over. So I’m gonna jump over to my computer now and talk you through the rest of the setup for the Cardano node. Gets a little bit more technical here, running more command lines, but just follow along, it’s pretty easy to do.
Okay, so for this part of the tutorial, I’ll take you through this guide on CoinCashew, links down below. But this is around security hardening. So once you’ve got the server up and running, you could you should go through all these stages here so you can strengthen the security of your actual server itself. So the first bit here is to use SSH or secure shell. And you’ll need to set this up. I’ll put links down below so you can follow the tutorials on how to set up SSH key.
But here I’m just logging into the server, looking at the authorized keys, and then putting in my private, no, the public key onto the server there. So that way anytime I log on to the system itself, it will recognise my key and I don’t need to use passwords for logging in. Now I’m just doing a little bit of a test here at the moment, just typing in the password and the SSH key isn’t being accepted.
That’s because I have to use an agent on my computer, but this terminal isn’t accepting the agent. I have to set up a different way. So I’m using another program called PuTTY, the brilliant program there, and that allows me to manage my SSH key locally, my private key, and that recognizes it. I’m just gonna configure the username here as well on putty, and then I can click on OK and then connect with that, and there we go. So I didn’t need to use a password there to
Connect to the terminal via PuTTY. So that’s what I want. So I know that SH SSH key works properly. Alright, cool. Next step. Configuring the SSH. So you have the options to change the port number. Now in this tutorial here, I’m just going to keep it as 22. But all the commands there are in CoinCashew. So I’m just going to open up the SSH config, type in the password as you normally do.
And here you can configure all the options. I recommend following the CoinCashew guide exactly as it is and just replicate the steps there. I did keep my port as 22 just for this tutorial because it’s just easier this way I’m just going through it. But I highly recommend changing that because port 22 is the first one that hackers go for. So change it to something else random that is a little bit harder for port scanners to sniff out.
But something that you’ll remember. And like I said, just follow the other prompts here that you can see in the CoinCashew guide and just remove the comment, the hash, the comment, and that will enable those parts of the SSH config.
So I’m just checking here, everything else looks good. Control X, Y to save, enter, and then we can test that with that command. And if there’s any problems, it will show up there. And then we can restart the service typo there, SSH. Now it’s probably good to note there’s some parts of the config here, the guide and CoinCashew are a little bit off, so you might have to adjust things. So as you can see, SSHD, it’s actually SSH for me.
So now I can try that again. Just logging in via putty just to make sure it’s all working in the background. Yep. All good. I’m happy with that. All right, let’s move on to the next step.
So now I’m just going to go through update the system. These are the general commands, just to update all the software on Ubuntu. So it’s good to run it. I’ve actually got a little script that does it for me as well, so that’s kind of nice. And then these commands here automatically update unattended upgrades and does some automated stuff for you. So it’s a nice way of just making sure that the small upgrades are always done in the background for you.
Now the next one here, you can configure disabling the password for root. So I highly recommend you do that as well. And this step here is setting up two-factor authentication for your account. I don’t go through the full setup here, I just find it annoying setting up. And I’m not going to show you my code for my two-factor authentication. So do follow these steps here. It’s fairly self-explanatory if you read over the instructions.
But it’s a really good idea to set up 2FA on any of your accounts, especially on a node. If you’re going to take this to a full stake pool, highly recommend that you do as well. It just adds in that extra layer of security for you. Now, this step here of securing the shared memory, we don’t need to do. We’re not on a cloud server, so we can ignore that. But these next steps here, this is installing fail to ban. This is like an automated
banning firewall that you can use on your platform. Just gotta run this command again. It’s not working right for me. I can see it’s failing to fetch some updates. So just running the command slightly differently. App install fail to ban. There we go. Yes, there we go. That’s a little bit better. Just using the old install command. the new one seems to get it from different repositories or something. I’m not too sure what’s going on there. All right, let’s clear that and move on to the next step. Next one is to do the config for that. And you’re pretty much okay just to copy the example config from what they have here.
just paste that in. You have to change your port number there. And then the ignore IPs. So if you do have a static IP address, you can put it in there and it will ignore those IP addresses if anything happens. So if you log in incorrectly it won’t ban you. It’s kind of useful. So make sure you set that one up. Now it will just reset fail to ban to make sure it all works. Now this is the UFW firewall this is
really needed because it blocks any of the unwanted traffic that goes into your node. So there’s a couple of things that we need to do here. And by default, we deny all incoming traffic. And then we start opening up the ports that we need traffic to come in from. The first one being SSH. So I’ve I’m on port 22 at the moment. So just copy the right commands. This is a different tutorial here. I’ll put links to it.
Down below, but the it’s needs to be updated on CoinCashew. But this is the right ones, these are type of commands that you need to use. So I’ve opened up port 22 and now I’m opening up port six thousand, and that is for the actual nodes, so other nodes to be able to talk to me because my nodes can be operating on port six thousand. So if it’s not open, other Cardano nodes won’t be able to send transactions and whatever to my actual node itself. So
Important to open that up. So now we’ve got the commands in. Let’s enable this firewall. That looks okay. Yep, we let’s go yes this time. There we go. That’s better. Okay. So now the firewall’s all set up. They’re my ports that are open and what’s allowed in. Now while I’m here, I’ll also open up port one two three on the UDP.
now I did this incorrectly in this tutorial here. I opened up as TCP port. you’re supposed to open up as a UDP. so just I’ll follow my show notes that I have here and it will correct that particular command. But we need to open up that chrony port one two three for the time synchronization clock, and I’ll show you that in the next step as well, because that’s fairly important to get the system time as close to global standard as possible.
Now here is where I’m setting up the port for the chrony clock, the port 123, and I forgot to change TCP there. So don’t copy exactly what I did there, but I’m just testing it and you can see the port one two three is open, but on TCP. That’s a mistake. So please don’t copy that. Make sure it’s UDP. All right, so to the next page, this is setting up chrony itself. So again, we just need to follow the commands here. So that’s the command for installing chrony.
just download all the things it needs and set up all the configs. And now we can actually copy this config here. So this is a config template that they have. And it’s pretty straightforward. So just copy everything that you see here in this output.
There we go.
And that will create that chrony.conf file there. So now we just need to open that one up.
And then we need to modify and then move it to its correct position afterwards. So there’s a trick here with this. Now everything down below can be left as default and they’re pretty good. But the time servers that you want, you want them to be time servers that are as close to you as possible. And this website here, NTP Pool Project, this gives you all the time servers closest to your location. So I’m in the Oceania region.
So I’m going to use these time servers here. So I’m just going to copy that first line and then replace it with the time servers that are set up as default, the Google, Ubuntu, and NTP server there. So let me just copy that and I’ll just replace those lines there. There we go. That’s the first one. There we go. Just copied those lines and then I’ll just replace the server numbers there, and that’s good. Okay. Everything’s good there, and I’ll just
Press Ctrl X and save that as well. Great. Okay, so now that’s all saved. I have to move this now to the correct position, the correct path where it’s supposed to be. So I can just copy this command line here. And there we go, that’s done. Cool. Now we need to just restart that particular service, and that’s it. So now our server is synchronizing with global time servers.
So this is some extra things that you can do. So this is checking those particular sources and I can see some local Australian domain names there. So the Telstra is a telco here in Australia. So I know it’s connecting to fast connections here locally in Australia. So the with the minimum ping time and response time. So that’s good. And chrony tracking, this is making sure I’m not too my clocks on my computer isn’t too far off the main
Internet time. So that’s all good. This last one here is just setting my own time zone so that I don’t go crazy when looking at logs and those time zones look good now. So that’s UTC and then my local time here in Brisbane, Australia. Alright, so let’s get on with setting up the node. Now I’m using guild tools, the guild operators.
This is by far the easiest way of setting up a Cardano node. It pretty much has everything you need to go in a couple of script files. So it’s really nice. All we have to do is copy these commands here. So that’s setting up a temporary folder. The next one here is downloading the main installation script, the guild deploy. Now we just need to set the permissions on it so we can actually run it. And now we can actually choose how and what we want to install.
with this particular script. So this lets you choose the network that you want to install on, whether you want to download all the binaries or if you want to compile them locally, and we’ll also install all the prerequisites and dependencies on an operating system level. This is a godsend because there’s so many things you need to install, such as Libsodium, Cabal, and all sorts of things.
That you may not know about until you come up with an error and go, okay, well, I need to install that. This does it all for you. So guild tools, absolute amazing stuff. So let me just clear that. And these are the commands I’m going to run. So this is the installation, selective install. Now I’m going to install P, the common prerequisites for everything. So that’s a given. Then B for installing OS level dependencies. L
For build and install Libsodium fork. And then for the Mithril signer. I will be using Mithril to set up this particular server. So that is absolutely crucial. And then D here for downloading the latest binaries, the Cardano address, all those things that we need. C for the Cardano CLI. I might use it. Why not? Yep. Let’s let’s download that one too. O for Osmios. I don’t think I’ll use it, but let’s download it. Hey, why not?
Then W for the Cardano hardware CLI could be useful. you may want to use it on your Cardano node for CLI commands for your hardware wallet. So why not? Let’s download that one. And then we’ve got some other ones here with the Cardano signer binary. I’m sure I could download that for one and then force with F and S. You don’t need those at the moment, so let’s not worry about those because we’re not overriding an installation. So that’s it. Press enter.
and password to get this all going and that’s it. It will now churn away, download all the bits and pieces that you need, configure your operating system, and away it goes. So while this does its thing, I’ve sped it up immensely. just like to thank the team and the people and the pioneers from the ITN days, the in
Was it incentivized testnet? Those days, those stake pool operators put all of this together to make it so easy for us now, many years after the fact, to be able to set up a node like this with a couple of command lines. So if you know how to set up your operating system with security hardening, this part here becomes so much easier. You don’t need to worry and wonder what dependencies there are, all these things you need to install.
That one command line is doing it all for you. This is a godsend. So huge thank you for all of those operators out there that have put in the time and effort to make this all happen. There we go. All done. Thank you for all that. And with the magic of video editing, it’s sped it up a lot quicker. That usually takes about maybe 20 minutes to do. So it’s it’s takes a bit of time, it’s a good time to get some coffee or something.
So now I’m just going to change directory to where it’s all been installed, OPT Cardano, CNODE slash scripts. You see all these scripts that have been installed. And we do need to configure some of these, but let’s go CNODE. And that’s actually the Cardano node. Now I’m loading. So I can see that command there, that listening on port localhost port one two seven nine eight. That means it works.
So now let’s deploy this as a service. And this means to just always run in the background and always run on load. So that way you don’t need to turn this on every time you boot the server. Automate some things. Make it easy for yourself. Again, thank you for the guys that wrote the scripts for this. So all I need to do now is run that command. So dot slash deploy as systemd.sh. Press enter.
And it gives me a couple of command prompts. So command Submit to Cardano Submit API. Yes, I want that. Mithril signer. Yes, I want that too. I can use this relay as a signer relay. Topology updater. Yeah, yep. I think I deployed this one. Leader log for pool tool sending slots. We don’t need this. Pull tool send tip, we don’t need this either. Block prefs, no, we don’t need this either at the moment. So no, no, no for the last three. And
Then it will just restart these services afterwards and we’re good to go. This is essentially it. You could start running your node and wait for it to sync and it’d be all done. But a little bit more config here just to make things a little bit better. So let’s go nanoc node.sh. Now this is where I can set how many CPU cores the Cardano node’s going to use. Now I’ve got an eight core CPU here on this HP
Computer thing. So I’m just gonna change this to six. So I’m gonna use dedicate six cores out of the eight to the Cardano node. And that should be plenty. That should be plenty at this point in time of creating this video. So I’m just gonna now save this. And if you’re wondering how many cores you have, there’s some tools that you can use. There’s one command I like to use Htop, which is like a system monitoring tool, and it will show you visually how many cores you have and
what the system loads at as well. Leave it at that. Control X save. There we go. Now I was just talking about that Htop command and I don’t have it installed by default. So sudo app install htop. That installs everything for me. Then I can run Htop and there you can see the system load at the moment. That 0, 1, 2, 3, 4, 5, 6, 7, they’re the cores. So I’ve got a total eight cores there. So it’s a nice way to check.
And this also gives you a good overview of what’s running on the system and how much memory is left and everything else. So really good command to know. So now I’m going to configure the GLiveView view. This is probably the main interface that you use to have a look if your Cardano node is working or not, how many connections it has and all sorts of things. So I’m going to change the name of this one. I’m going to change it to home, just so I know if I’m logged into it.
or the nodes that I have, which one is it? So let’s configure the node now. There’s a couple more things that I just need to check here. And I’ll go to the files folder, nanoconfig.json. And this is just checking if peer to peer is enabled. True. And the other thing I want to enable down here, let me just go a little bit further, is trace mempool. It’s just nice to visually see that transactions are going through and I can see that the mempool is actually being filled.
With transactions because that means transactions actually coming to the pool. So I’ll just change that to true and I can exit, save, all done. So now I need to download the node itself. I can run the node and let it sync, and that takes forever. But mithril is a godsend. So let’s run mithril. So this is the default view that you’ll see. This comes with all of the commands there.
So first off, I will download a snapshot of every no, first off, I need to set up the actual environment here. So let me just clear this. And this little command here on the right under the guild deploy, you can just see it there. The home slash dat bash rc. I forgot to run that, so I’m just gonna make sure I run that in this demonstration. I actually did run it, but you didn’t see me run it. That just makes sure a lot of the commands are still working.
So now I’ll just run Cardano version, make sure the nodes are all good, and I’ll do the Cardano CLI version. That’s all good as well. I can see the latest versions that were installed on this demonstration. Okay, so that’s good. So now if I run guild deploy, okay, so back to the mithril side of things. So I’ll change the directory to the scripts directory. So C D opschardano, CNODE scripts.
And then I can run mithril client and that’s the help screen. But the first thing I want to do is set up the environment for this so that all the config is all there. So I’ll go mithril client environment setup, and this will now configure this mithril client ready to download everything that I need and operate in the right way as a client. So now I can run
The Mithril Cardano DB snapshot. And this will interact with the Mithril snapshots and give me a list of all the latest snapshots that have been stored and uploaded via the other mithril signers out there. So there we go. So I’ll just go up mithril client CardanoDB space snapshot.
list and this gives me all of the latest Cardano nodes. Now this was done recorded back in October 2024. So it’s a little bit old. So they’re the latest epochs I’ve got in this demonstration 516. I think we’re at like 540 now or something. I can’t remember that I lose track of epochs. But that means it’s all there and I can ready I’m ready to download it. So now I’ll run the next command mithril
Cardano DB download. And now that will download the latest snapshot for me. And instead of syncing it manually via the Cardano node, I’m downloading that full database snapshot so that way I can speed up this entire process. So there we go. Mithril, Cardano Node, DB, download. And now it is just downloading a snapshot for me. hang on. I can’t. That’s right. So because I started the node before.
It set up the particular folders for me. So now I have to go back one level, go to the Cardano DB, and then delete that particular folder. So remove minus RF DB. That removes that folder there. So now I can run this command again and now it will download the snapshot for me into that folder. Because something was there, it stopped itself from downloading and said, hey Pete, no, you can’t do this. There’s something there already. I can’t override it.
So it’s a little bit of safety stop gap measure. So I’ll just let this download and with the magic of internet editing it’s gonna be sped up really quickly. But now’s probably a good time to go out and get a coffee. Another coffee. You probably will need it at this point.
And we’re done. Back to the video. So now we’ve got our node downloaded. So now I’m just going to do a system status, system start of the CNODE, Cardano node. There we go, just doing a status check and everything is good there too. Active and running. So now let’s just run GLiveView and see it all operating.
Alright, my screen’s a little bit small, so just increase that column size, shrink it down. Voila! We have our relay node up and running. You can see the uptime ticking away. What it’s doing now is just syncing its last bit with the Cardano blockchain, and we’re good to go. So while that happens, I’m going to now set up the topology for this. So this is the network that it can connect to.
So here we can see how it’s all configured by default. And you will need to change some things here. And I can’t do it because I don’t want expose my other relays. But here the bootstrapping peers, leave that alone. They’re the core backbone stuff that you need. The local routes here, these are your other relays. So you can change the IP address there to your other relays, the ports, whatever it may be, descriptions, very useful. Make sure you put a description in there as well. And the hot
Valency. That’s a this is a bit of a tip here. If you have four relays, change that to four. So that way it always connects to those particular four relays. The access points here, these ones, these are the core contributors that have set up these this topology. Use their nodes as well as access points. You know, they’re really good stake pool operators, you might as well use their nodes too. So they’re really good guys out there. So that’s it. This is the topology.
You can configure this and alter it however you want. You can connect with your friends, but it’s a nice way, really easy way to set up your nodes now. So run in GLiveView again. It’s been a few minutes since it’s been running. And you can see it now is all up and running and operating. You can see the epoch number, you can see how much time is left there, you can see the connections, incoming connection. I’ve got one at the moment, so one other person is connecting to this particular relay.
Outgoing. I’ve got 28 connections going out, cold peers, blah. So all those all the all the indicators there show that it is operating and working correctly. Brilliant. So thank you guys for watching all the way to the end. Hopefully you did get your node set up. Make sure you check out the show notes for this one here because I really glazed over some of the parts and you need to follow all those steps in different tutorials. And I actually referenced all these other different tutorials as well, which made it a lot easier for me. So if you followed all those other guides along the way, it should really help you set up your node exactly like how I have set mine up. I’ve also been wondering if I should actually set these relay nodes up as a turnkey service.
So I can purchase these particular hard drive, not hard drives, these computers, set them up to a point where they’re ready to go, and then send them off to you guys, whoever wants to purchase them. So I’ll set up I’ll purchase the hardware, do the initial setup, and then send out buy orders. So you know if that’s appealing to anyone, let me know. But I really need to know what tutorials to do next. So please leave a comment down below.
on which direction I should go now. Now if you really enjoyed the video, if you got something out of it, if you want to see more content like this, you know what to do. Hit that thumbs up, like, subscribe, notification bell. And I’ll see you guys in the next video.
Comments