mirror of
https://github.com/ditatompel/insights.git
synced 2025-01-08 03:12:06 +07:00
142 lines
4.4 KiB
Markdown
142 lines
4.4 KiB
Markdown
|
---
|
||
|
title: "Guide to Run Monero Node on VPS"
|
||
|
description: "Supporting Monero by building new public nodes on VPS or virtual machine."
|
||
|
# linkTitle:
|
||
|
date: 2021-03-30T21:29:45+07:00
|
||
|
lastmod:
|
||
|
draft: false
|
||
|
noindex: false
|
||
|
# comments: false
|
||
|
nav_weight: 1000
|
||
|
# nav_icon:
|
||
|
# vendor: bootstrap
|
||
|
# name: toggles
|
||
|
# color: '#e24d0e'
|
||
|
series:
|
||
|
# - Tutorial
|
||
|
categories:
|
||
|
- Self-Hosted
|
||
|
- Privacy
|
||
|
tags:
|
||
|
- Monero
|
||
|
images:
|
||
|
# menu:
|
||
|
# main:
|
||
|
# weight: 100
|
||
|
# params:
|
||
|
# icon:
|
||
|
# vendor: bs
|
||
|
# name: book
|
||
|
# color: '#e24d0e'
|
||
|
authors:
|
||
|
- ditatompel
|
||
|
---
|
||
|
|
||
|
About a month ago, [I host Monero node that is free to use for everyone]({{< ref "/blog/indonesia-public-monero-node/index.md" >}}) as a remote RPC. Until this article was written, there were only 2 public nodes from Indonesia and both nodes were run by me.
|
||
|
|
||
|
<!--more-->
|
||
|
|
||
|
Hopefully this article can help those of you who want to support Monero by building new public nodes, especially if only a few nodes available in your area or country.
|
||
|
|
||
|
## Requirements
|
||
|
As a prerequisite to using this guide, I assume that you already have at least:
|
||
|
|
||
|
- 1 Virtual Machine (off course) with **public IP address**.
|
||
|
- **1GB** of **RAM** (minimum)
|
||
|
- **160GB** of **Storage**
|
||
|
- Ubuntu `18.04` (this guide)
|
||
|
|
||
|
> _I suggest that your VPS use **SSD storage**, because **downloading and verifying the entire blockchains to the spinning hard disk can take 4 - 8 days**._
|
||
|
|
||
|
## Installation
|
||
|
We need to compile Monero from source.
|
||
|
|
||
|
### Dependencies
|
||
|
Build `ibgtest-dev` binary manually because on Debian/Ubuntu `libgtest-dev` only includes sources and headers.
|
||
|
|
||
|
```bash
|
||
|
sudo apt-get install libgtest-dev && cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv libg* /usr/lib/
|
||
|
```
|
||
|
Install remaining dependencies :
|
||
|
```bash
|
||
|
sudo apt update && sudo apt install 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
|
||
|
```
|
||
|
|
||
|
### Clone the repository and build
|
||
|
Clone recursively to pull-in needed submodule(s):
|
||
|
```bash
|
||
|
git clone --recursive https://github.com/monero-project/monero
|
||
|
```
|
||
|
Initialize and update:
|
||
|
```bash
|
||
|
cd monero && git submodule init && git submodule update
|
||
|
```
|
||
|
|
||
|
change to the most recent release branch (`v0.17` when this article is written), and build:
|
||
|
```bash
|
||
|
git checkout release-v0.17
|
||
|
make
|
||
|
```
|
||
|
|
||
|
> _Tips: If your machine has several cores and enough memory, enable parallel build by running `make -j<number of threads>` or `make -j$(nproc)` instead of `make`. For this to be worthwhile, the machine should have one core and about 2GB of RAM available per thread._
|
||
|
|
||
|
The resulting executables can be found in `build/Linux/release-v0.17/release/bin`.
|
||
|
|
||
|
Copy compiled binary to `/opt/monero/bin` and change binary files permission:
|
||
|
```bash
|
||
|
mkdir -p /opt/monero
|
||
|
cp -rv build/Linux/release-v0.17/release/bin /opt/monero/
|
||
|
chmod -R 775 /opt/monero/bin
|
||
|
```
|
||
|
|
||
|
### Create user and systemd for Monero daemon
|
||
|
Create new user who should run Monero daemon:
|
||
|
|
||
|
```bash
|
||
|
useradd -s /bin/sh -m monerodaemon
|
||
|
```
|
||
|
|
||
|
Create Monero systemd service file `/etc/systemd/system/monero.service` and add these following config:
|
||
|
|
||
|
```systemd
|
||
|
[Unit]
|
||
|
Description=Monero Daemon
|
||
|
After=network.target
|
||
|
|
||
|
[Service]
|
||
|
Type=forking
|
||
|
GuessMainPID=no
|
||
|
ExecStart=/opt/monero/bin/monerod \
|
||
|
--rpc-bind-ip 127.0.0.1 \
|
||
|
--rpc-restricted-bind-ip [SERVER_PUBLIC_IP_ADDRESS] \
|
||
|
--rpc-restricted-bind-port [RPC_RESTRICTED_PORT] \
|
||
|
--confirm-external-bind \
|
||
|
--public-node \
|
||
|
--detach
|
||
|
Restart=always
|
||
|
User=monerodaemon
|
||
|
|
||
|
[Install]
|
||
|
WantedBy=multi-user.target
|
||
|
```
|
||
|
|
||
|
Change `[SERVER_PUBLIC_IP_ADDRESS]` above with your server public IP address and `[RPC_RESTRICTED_PORT]` with your desired port (recommended `18089`).
|
||
|
|
||
|
Reload, start and enable daemon on startup:
|
||
|
```bash
|
||
|
systemctl daemon-reload
|
||
|
systemctl enable --now monero.service
|
||
|
```
|
||
|
Make sure monero daemon is running: `systemctl status monero.service`.
|
||
|
|
||
|
### Firewall
|
||
|
Make sure your firewall for port `18080` and `18089` (`[RPC_RESTRICTED_PORT]` from systemd config above) is open, if not:
|
||
|
```bash
|
||
|
ufw allow 18080
|
||
|
ufw allow 18089
|
||
|
```
|
||
|
|
||
|
## Link and Resources
|
||
|
- [https://github.com/monero-project/monero](https://github.com/monero-project/monero)
|
||
|
- [https://www.getmonero.org/get-started/contributing/](https://www.getmonero.org/get-started/contributing/)
|
||
|
- [https://community.xmr.to/network/](https://community.xmr.to/network/)
|