-
-
Save jancel/bd26b984f56069ffdf5eda09d18d75c8 to your computer and use it in GitHub Desktop.
Revisions
-
tannerdsilva revised this gist
Jan 12, 2021 . 1 changed file with 8 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -100,6 +100,14 @@ $ echo "public-node=1" >> /etc/monerod.conf $ echo "restricted-rpc=1" >> /etc/monerod.conf ``` If your system owns its public IP, you may bind `monerod` directly to the interface with the following three commands. ``` $ myIP="$(curl ifconfig.me)" $ echo "rpc-restricted-bind-ip=${myIP}" >> /etc/monerod.conf $ echo "rpc-bind-ip=${myIP}" >> /etc/monerod.conf ``` If you would like to host a pruned blockchain, run this command to add such specification to your configuration file. ``` -
tannerdsilva revised this gist
Jan 3, 2021 . No changes.There are no files selected for viewing
-
tannerdsilva revised this gist
Jan 3, 2021 . 1 changed file with 6 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -21,7 +21,7 @@ Here are some useful links for reaching this prerequisite if you do not currentl - **Storage**: > 50 GB free space (internal or external) # 1. Getting Started Now that you have access to the terminal of your Debian-based system, you can begin. Lets start by confirming that you are currently the root user. **THIS TUTORIAL ASSUMES THAT YOU WILL REMAIN THE ROOT USER FOR THE ENTIRETY OF THE SETUP PROCESS** @@ -155,10 +155,10 @@ Now, configure your fstab file to mount this device automatically We will be using `nftables` to secure the network traffic on this system. `nftables` a new [kernel-based packet filtering framework that replaces `iptables`](https://ral-arturo.org/2017/05/05/debian-stretch-stable-nftables.html). Amongst it's many superlatives to common firewalls, `nftables` has a very human friendly configuration syntax. ``` $ apt-get purge iptables $ apt-get autoremove $ apt-get install -y nftables $ systemctl enable nftables ``` Now, using your favorite text editor (`nano` recommended)... @@ -243,7 +243,7 @@ Build the source code and change the current directory to the directory containi Congratulations, you have now built the latest release of the Monero source code. Three simple steps remain. First, stop the `monerod` service so that the binaries can be installed. `$ systemctl stop monerod` -
tannerdsilva revised this gist
Jan 2, 2021 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -14,7 +14,7 @@ Here are some useful links for reaching this prerequisite if you do not currentl ### System Requirements - **OS**: Debian-based Linux - **RAM**: 3 GB minimum (for building Monero source code) - **CPU**: 1 core @@ -80,7 +80,7 @@ These configuration files specify that your Monero node will log to `/var/log/mo Now it is time to build the Monero source code. The following command will build Monero binaries and install them on your system by way of `/usr/bin`. It will take a while to run. **[NOTICE]** This command will fail if you have less than 3GB of RAM. `$ cp "$(make release | tail -1 | grep -oP '(?<='"'"').*(?<!'"'"')')/bin/"* /usr/bin` -
tannerdsilva revised this gist
Jan 2, 2021 . 1 changed file with 5 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -221,7 +221,7 @@ You can monitor the progress of the blockchain sync by checking the logs. `$ cat /var/log/monero/monero.log` # 6. [REQUIRED][IMPORTANT] Updating your node It's a well known fact that the Monero community executes biannual network upgrades that require participants (including node operators) upgrade their software. Since you have built and installed Monero from its source code, you can deploy these updates as soon as they are tagged in the GitHub repository. @@ -241,16 +241,16 @@ Build the source code and change the current directory to the directory containi `$ cd "$(make release | tail -1 | grep -oP '(?<='"'"').*(?<!'"'"')')/bin/"` Congratulations, you have now built the latest release of the Monero source code. Three simple steps remain. First, Stop the `monerod` service so that the binaries can be installed. `$ systemctl stop monerod` Next, copy the new binaries to `/usr/bin/`. `$ cp ./* /usr/bin/` Lastly, start `monerod` once again. `$ systemctl start monerod` -
tannerdsilva revised this gist
Jan 2, 2021 . 1 changed file with 3 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -243,14 +243,14 @@ Build the source code and change the current directory to the directory containi Congratulations, you have now built the latest release of the Monero source code. Three simple steps remain... Stop the `monerod` service so that the binaries can be installed. `$ systemctl stop monerod` Copy the new binaries to `/usr/bin/`. `$ cp ./* /usr/bin/` Start `monerod` once again. `$ systemctl start monerod` -
tannerdsilva revised this gist
Jan 2, 2021 . 1 changed file with 34 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -220,3 +220,37 @@ When your system comes back online, it will automatically launch the `monerod` n You can monitor the progress of the blockchain sync by checking the logs. `$ cat /var/log/monero/monero.log` # [REQUIRED][IMPORTANT] 6. Updating your node It's a well known fact that the Monero community executes biannual network upgrades that require participants (including node operators) upgrade their software. Since you have built and installed Monero from its source code, you can deploy these updates as soon as they are tagged in the GitHub repository. After a new release has been tagged, updating your node is a fairly straightforward process. The following steps assume `root` access. First, change to the root directory of the Monero source code. `$ cd /root/monero` Download GitHub commits and change to the latest release of the source code. `$ git fetch && git reset --hard $(git describe --tags $(git rev-list --tags --max-count=1))` Confirm that you have all package dependencies by viewing the **Compiling Monero from source -> Dependencies** section the [Monero Project's README file](https://github.com/monero-project/monero/blob/master/README.md). Build the source code and change the current directory to the directory containing the built products. `$ cd "$(make release | tail -1 | grep -oP '(?<='"'"').*(?<!'"'"')')/bin/"` Congratulations, you have now built the latest release of the Monero source code. Three simple steps remain... 1. Stop the `monerod` service so that the binaries can be installed. `$ systemctl stop monerod` 2. Copy the new binaries to `/usr/bin/`. `$ cp ./* /usr/bin/` 3. Start `monerod` once again. `$ systemctl start monerod` -
tannerdsilva revised this gist
Jan 1, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -164,7 +164,7 @@ systemctl enable nftables Now, using your favorite text editor (`nano` recommended)... ``` $ nano /etc/nftables.conf ``` ...modify the contents of the file to reflect this template: -
tannerdsilva revised this gist
Jan 1, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,7 +1,7 @@ # How to Build and Install a Monero Node on a Debian-based System 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 include Raspbian, Debian (9 and above), and Ubuntu (18.04 and above). 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. Alternatively, this setup procedure can also accomodate users looking to host a pruned blockchain with restricted storage space. 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. -
tannerdsilva revised this gist
Jan 1, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -18,7 +18,7 @@ Here are some useful links for reaching this prerequisite if you do not currentl - **CPU**: 1 core - **Storage**: > 50 GB free space (internal or external) # 1. Getting Started Now that you have access to the terminal of your Debian-based system, you can begin. Lets start by confirming that your are currently the root user. -
tannerdsilva revised this gist
Jan 1, 2021 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ # How to Build and Install a Monero Node on a Debian-based System 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 include Raspbian, Debian (9 and above), and Ubuntu (18.04 and above). 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. Alternatively, this setup procedure can also acomodate users looking to host a pruned blockchain with restricted storage space. 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. @@ -103,7 +103,7 @@ $ echo "restricted-rpc=1" >> /etc/monerod.conf If you would like to host a pruned blockchain, run this command to add such specification to your configuration file. ``` $ echo "prune-blockchain=1" >> /etc/monerod.conf ``` ## 3. [OPTIONAL] Attaching External Storage -
tannerdsilva renamed this gist
Jan 1, 2021 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
tannerdsilva revised this gist
Jan 1, 2021 . 1 changed file with 3 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -18,7 +18,7 @@ Here are some useful links for reaching this prerequisite if you do not currentl - **CPU**: 1 core - **Storage**: > 50 GB (internal or external) # 1. Getting Started Now that you have access to the terminal of your Debian-based system, you can begin. Lets start by confirming that your are currently the root user. @@ -92,15 +92,15 @@ Lastly, we must create a Monero user on the system. `$ adduser --disabled-password --system --group --home /var/lib/monero monero` If you would like to elevate your node's configuration to be a "full public node", add additional parameters to `monerod.conf` by running the following commands. ``` $ echo "confirm-external-bind=1" >> /etc/monerod.conf $ echo "public-node=1" >> /etc/monerod.conf $ echo "restricted-rpc=1" >> /etc/monerod.conf ``` If you would like to host a pruned blockchain, run this command to add such specification to your configuration file. ``` echo "prune-blockchain=1" >> /etc/monerod.conf -
tannerdsilva revised this gist
Jan 1, 2021 . 1 changed file with 160 additions and 29 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,58 +1,57 @@ # How to Build and Install a Monero Node on a Debian-based System 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. Alternatively, this setup procedure can also acomodate users looking to host a pruned blockchain with restricted storage space. 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. - [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) ### System Requirements - **OS**: Debian-based Linux - **RAM**: 4 GB minimum (for building Monero source code) - **CPU**: 1 core - **Storage**: > 100 GB (internal or external) # 1. Getting Started Now that you have access to the terminal of your Debian-based system, you can begin. 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 should confirm the connectivity of your device by checking your external IP address. `$ curl ifconfig.me` # 2. Downloading, Building & Installing Monero Lets install the necessary packages that we will need to acquire Monero's source. ``` $ 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 initialize the source code to the latest release. ``` $ git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) @@ -62,30 +61,162 @@ $ 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... **[NOTICE]** 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 [Monero Project's README file](https://github.com/monero-project/monero/blob/master/README.md). ``` $ 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 ``` Next we will install the systemd service and the correlating configuration file for the process. ``` $ cp utils/conf/monerod.conf /etc $ cp utils/systemd/monerod.service /etc/systemd/system $ systemctl daemon-reload $ systemctl enable monerod ``` These configuration files specify that your Monero node will log to `/var/log/monero/monero.log` and the blockchain will be stored in `/var/lib/monero`. Now it is time to build the Monero source code. The following command will build Monero binaries and install them on your system by way of `/usr/bin`. It will take a while to run. **[NOTICE]** This command will fail if you have less than 4GB of RAM. `$ cp "$(make release | tail -1 | grep -oP '(?<='"'"').*(?<!'"'"')')/bin/"* /usr/bin` Verify a successful installation by checking the version of your binaries. `$ monerod --version` Lastly, we must create a Monero user on the system. `$ adduser --disabled-password --system --group --home /var/lib/monero monero` Optionally, you would like to elevate your node's configuration to be a public node, add additional parameters to `monerod.conf` by running the following commands. ``` $ echo "confirm-external-bind=1" >> /etc/monerod.conf $ echo "public-node=1" >> /etc/monerod.conf $ echo "restricted-rpc=1" >> /etc/monerod.conf ``` Optionally, if you would like to host a pruned blockchain, run this command to add such specification to your configuration file. ``` echo "prune-blockchain=1" >> /etc/monerod.conf ``` ## 3. [OPTIONAL] Attaching External Storage If you have an external storage volume that you would like to use for your blockchain data, **attach it to your Linux system now**. List the available storage volumes on your system with the following command. From the output, identify the volume that you are going to use. `$ fdisk -l` You will see output that looks roughly like this: ``` Disk /dev/sda: 49.5 GiB, 53154414592 bytes, 103817216 sectors Disk model: QEMU HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdb: 516 MiB, 541065216 bytes, 1056768 sectors Disk model: QEMU HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdc: 256 GiB, 274877906944 bytes, 536870912 sectors Disk model: Volume Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ``` In this case, I am picking `/dev/sdc`, since this is the storage volume with enough space to store the blockchain (256 GB). I will run this command to specify `/dev/sdc` as my current device. `$ curDev=/dev/sdc` Now that you have identified the storage device on your system, you may now format it. **[WARNING]** The following command is dangerous and will erase all data on the specified storage volume. `$ mkfs.ext4 -F $curDev` Now, configure your fstab file to mount this device automatically `$ echo "$curDev /var/lib/monero ext4 defaults 0 2" >> /etc/fstab` ## 4. [RECOMMENDED][OPTIONAL] Firewall Setup We will be using `nftables` to secure the network traffic on this system. `nftables` a new [kernel-based packet filtering framework that replaces `iptables`](https://ral-arturo.org/2017/05/05/debian-stretch-stable-nftables.html). Amongst it's many superlatives to common firewalls, `nftables` has a very human friendly configuration syntax. ``` apt-get purge iptables apt-get autoremove apt-get install -y nftables systemctl enable nftables ``` Now, using your favorite text editor (`nano` recommended)... ``` $ nano /etc/nftables ``` ...modify the contents of the file to reflect this template: ``` #!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; # allow Monero RPC and P2P ports inbound tcp dport { 18080, 18081 } accept # allow SSH connections tcp dport { 22 } accept # accept any traffic bound for the loopback interface meta iifname lo accept # allow established or related network traffic inbound ct state { established, related } accept # drop remaining traffic drop } chain forward { type filter hook forward priority 0; } chain output { type filter hook output priority 0; # allow all outbound traffic accept } } ``` After saving your changes, confirm that your syntax is correct with this command: `$ nft -cf /etc/nftables.conf` If errors are found, they should be corrected before proceeding. # 5. Restart your node `$ reboot` When your system comes back online, it will automatically launch the `monerod` node and begin synchronizing the blockchain. You can monitor the progress of the blockchain sync by checking the logs. `$ cat /var/log/monero/monero.log` -
tannerdsilva revised this gist
Dec 31, 2020 . 1 changed file with 13 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,9 +5,11 @@ This tutorial assumes that you are capable of accessing the ROOT terminal of you 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 @@ -73,12 +75,17 @@ $ 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. `$ cd "$(make -j $(nproc) release | tail -1 | grep -oP '(?<='"'"').*(?<!'"'"')')"` Verify that the build worked by running the following command and verifying that the output is **ZERO**. `$ echo $?` Congratulations! You have successfully built Monero from its source code! We must now copy the binaries in a more appropriate location. ``` $ mkdir /opt/monero $ cp ./bin/* /opt/monero ``` -
tannerdsilva renamed this gist
Dec 31, 2020 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
tannerdsilva created this gist
Dec 31, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,84 @@ # 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 '(?<='"'"').*(?<!'"'"')')"` Verify that the build worked by running the following command and verifying that the output is ZERO. `$ echo $?` Congratulations! You have successfully built your first Linux