# How To Built And Host a Monero Node from Source Hello. In this document, we will walk through the steps of building and hosting your own Monero node from source on a Debian-based Linux system. These systems including Raspbian, Debian, and Ubuntu. This tutorial assumes that you are capable of accessing the ROOT terminal of your Debian-based system, and are capable of getting your system online if necessary. You may plan on using an external storage device to store the blockchain, this tutorial will include the optional steps to support external storage if necessary. Here are some useful links for reaching this prerequisite if you do not currently have access to a Debian-based system that meets the recommended system requirements for `monerod`. [How to spawn a VPS in the Linode Cloud Platform](https://www.youtube.com/watch?v=Kf6VrypLsZE) [How to spawn a VPS in the Digital Ocean Cloud Platform](https://www.youtube.com/watch?v=vqZ7eKM0WS8) [Getting started with the Rhaspberry Pi](https://www.youtube.com/watch?v=juHoJYX86Dg) ### Recommended System Requirements - **OS**: Debian-based Linux - **RAM**: 1GB - **CPU**: 1 CORE - **Storage**: > 150 GB (internal or external) # 1. Getting Started Now that you have access to the terminal of your Debian-based system, we can begin setting up the monerod node. Lets start by confirming that your are currently the root user. **THIS TUTORIAL ASSUMES THAT YOU WILL REMAIN THE ROOT USER FOR THE ENTIRETY OF THE SETUP PROCESS** `$ whoami` If the result of this command is **root**, you may proceed with the tutorial. If you are not the root user, it is highly recommended you log in as root using either `su` or `sudo su` before proceeding with the tutorial. Additionally, you may confirm the connectivity of your device by checking your external IP address. `$ curl ifconfig.me` The result of this command should be your external IPv4 address. # 2. Downloading Software Lets install the necessary packages that we will need to operate and set up monerod. First, we will update our package manager and install a few basic utilites such as `nano` and `git` ``` $ apt-get update $ apt-get install -y nano git ``` Next, lets download the Monero source code and enter the root directory of the source code ``` $ cd /root $ git clone 'https://github.com/monero-project/monero.git' $ cd monero ``` ...and change to the latest release of the source code... ``` $ git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) $ git submodule init $ git submodule update ``` Now, we will install the required packages to build the Monero source code. As of `v0.17.1.8`, Monero requires the following packages... ``` $ apt-get install -y build-essential cmake pkg-config libboost-all-dev libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libldns-dev libexpat1-dev doxygen graphviz libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev ``` These dependencies may change with future updates. You can confirm that you have all package dependencies by viewing the **Compiling Monero from source -> Dependencies** section the `README.md` file. ``` $ cat ./README.md ``` Alternatively, you can view the README file [on a web browser](https://github.com/monero-project/monero/blob/master/README.md). # 3. Building Now it is time to build the Monero source code. This command will use the full capacity of your systems CPU so you wont wait as long. `$ cd "$(make -j $(nproc) release | tail -1 | grep -oP '(?<='"'"').*(?