{"id":17979037,"url":"https://github.com/lykhonis/lukso-node-guide","last_synced_at":"2025-07-16T02:38:39.538Z","repository":{"id":37847877,"uuid":"430772265","full_name":"lykhonis/lukso-node-guide","owner":"lykhonis","description":"A guide to setup a node and validators on Lukso blockchain","archived":false,"fork":false,"pushed_at":"2022-06-17T12:00:34.000Z","size":31,"stargazers_count":14,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-09T12:29:34.769Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lykhonis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-22T15:56:49.000Z","updated_at":"2025-01-22T12:25:02.000Z","dependencies_parsed_at":"2022-08-19T22:10:25.181Z","dependency_job_id":null,"html_url":"https://github.com/lykhonis/lukso-node-guide","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lykhonis%2Flukso-node-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lykhonis%2Flukso-node-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lykhonis%2Flukso-node-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lykhonis%2Flukso-node-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lykhonis","download_url":"https://codeload.github.com/lykhonis/lukso-node-guide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247103301,"owners_count":20884023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-29T17:36:01.697Z","updated_at":"2025-04-04T00:40:40.173Z","avatar_url":"https://github.com/lykhonis.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lukso Validator Node\n\nThis is a guide to setup a Lukso validator node in home environment. The guide suggests a use of a dedicated machine to run a node with validators, separate from a personal working machine.\n\n\u003e **_NOTE:_** Most of the steps require working in a terminal\n\n- [Prerequisites](#prerequisites)\n  - [My Setup](#my-setup)\n    - [Auto Start](#auto-start)\n- [System Setup](#system-setup)\n  - [Update](#update)\n  - [Remote Access](#remote-access)\n    - [Install SSH](#install-ssh)\n    - [Configure SSH](#configure-ssh)\n    - [Configure Firewall](#configure-firewall)\n    - [Enable SSH](#enable-ssh)\n    - [Resolve Hostname](#resolve-hostname)\n    - [Disable Password Authentication](#disable-password-authentication)\n    - [Disable Non-Key Remote Access](#disable-non-key-remote-access)\n    - [Verify Remote Access](#verify-remote-access)\n  - [Keep System Up to Date](#keep-system-up-to-date)\n  - [Disable Root Access](#disable-root-access)\n  - [Block Unathorised Access](#block-unathorised-access)\n  - [Configure Firewall](#configure-firewall)\n  - [Improve SSH Connection](#improve-ssh-connection)\n- [Node Setup](#node-setup)\n- [Monitoring](#monitoring)\n  - [Prometheus](#prometheus)\n    - [Configure](#configure)\n    - [Configure Service](#configure-service)\n  - [Grafana](#grafana)\n    - [Configure Service](#configure-service-1)\n    - [Configure Dashboard](#configure-dashboard)\n      - [Data Source](#data-source)\n      - [Install Dashboard](#install-dashboard)\n      - [Enable Alerts](#enable-alerts)\n  - [Node Exporter](#node-exporter)\n    - [Configure Service](#configure-service-2)\n  - [Json Exporter](#json-exporter)\n    - [Prerequisites](#prerequisites-1)\n    - [Build and Install](#build-and-install)\n    - [Configure](#configure-1)\n    - [Configure Service](#configure-service-3)\n  - [Ping](#ping)\n    - [Configure](#configure-2)\n    - [Configure Service](#configure-service-4)\n- [Credits](#credits)\n\n## Prerequisites\n\n- [Ubuntu](https://ubuntu.com/)\n- Dedicated PC\n\n### My Setup\n\n- Ubuntu 20.04.4 LTS\n- [Intel NUC 10 Performance Kit – Intel Core i5](https://www.amazon.com/dp/B083GH1SSN/ref=cm_sw_r_cp_api_glt_i_PAVWC2JD4QTRSVHFFX10?_encoding=UTF8\u0026psc=1)\n- [Memory Kit 16GB (8GBx2)](https://www.amazon.com/dp/B083VWCZLQ/ref=cm_sw_r_cp_api_glt_i_1YV0G8K4GAH0NYP6BN00?_encoding=UTF8\u0026psc=1)\n- [Samsung 970 EVO Plus SSD 1TB](https://www.amazon.com/dp/B07MFZY2F2/ref=cm_sw_r_cp_api_glt_i_XF7ZS3XYJCQM5PH05P7V?_encoding=UTF8\u0026psc=1)\n\nI've spent around $850. Current price seem to be less around $700. I connected my NUC with ethernet cable directly into my router.\n\n#### Auto Start\n\nI had to manually change BIOS settings of NUC to ensure if power gets reset, NUC auto starts. A simple test is unplug and plug power cord back in.\n\nFor NUC I followed following steps:\n1. Press F2 during boot to enter BIOS setup\n2. Go to `Power` -\u003e `Secondary Power Settings` menu\n3. Set the option for `After Power Failure` to `Power One`\n4. Press F10 to save changes and exit BIOS\n\n## System Setup\n\n\u003e **_NOTE:_** Following steps are performed directly on a node machine.\n\nIn order to remotelly access a machine running a node, it needs to be configured.\n\n### Update\n\n```shell=\nsudo apt update\nsudo apt upgrade -y\nsudo apt install -y nano wget make git\n```\n\n### Remote Access\n\nSSH is used to enable remote access from other machine using localy network through WiFi or broadband connections. This is a common practice and can be quite useful if a node machine does not have input (keyboard/mouse) nor a display. Once setup, a node machine can be placed elsewhere and only personal computer could be used to control and maintain it.\n\n#### Install SSH\n\n```shell=\nsudo apt install --assume-yes openssh-server\n```\n\n#### Confiugre SSH\n\nChoose a port number larger than `50000`. This will be used later.\n\n```shell=\nsudo nano /etc/ssh/sshd_config\n```\n\nChange and enable a port by uncommenting (removing `#`) and changing `22` to new chosen port number:\n```shell=\nPort 50000\n```\n\nClose editor by pressing `ctrl` + `X`, then save.\n\n#### Configure Firewall\n\nEnable ssh in firewall by replacing *replace-port* with new port:\n\n```shell=\nsudo ufw allow replace-port\n```\n\n#### Enable SSH\n\n```shell=\nsudo systemctl start ssh\nsudo systemctl enable ssh\n```\n\n#### Resolve Hostname\n\nIn order to locate a node machine in local network, it requires IP. Execute following command to resolve a node machine's IP:\n\n```shell=\nifconfig\n```\n\nLocate IP  address (`inet`) in `eno1` section, e.g. `192.168.86.29`.\n\n```\neno1: flags=4163\u003cUP,BROADCAST,RUNNING,MULTICAST\u003e  mtu 1500\n      inet 192.168.86.29  netmask 255.255.255.0  broadcast 192.168.86.255\n```\n\nClose ssh session by executing `exit`.\n\n\u003e **_NOTE:_** Following steps are performed a personal computer.\n\nVerify basic access to a node machine by using ssh. SSH requires user name of a node machine, its hostname and previously chosen ssh port.\n\n```shell=\nnano ~/.ssh/config \n```\n\nType in the following and replace *replace-user*, *replace-ip*, and *replace-port*:\n\n```shell=\nHost lukso\n  User replace-user\n  HostName replace-ip\n  Port replace-port\n```\n\nAttempt to connect to verify the configuration:\n\n```shell=\nssh lukso\n```\n\nOnce connected, enter a password of user on a node machine. If a connection was okay, a shell should be presented in a terminal. At this point, it could closed.\n\n#### Disable Password Authentication\n\nOn a personal computer, create new key pair for ssh authentication if needed.\n\n```shell=\nssh-keygen -t rsa -b 4096\n```\n\nCopy a generated public key **keyname.pub** to a node machine. Replace **keyname.pub** with a key in home directory.\n\n```shell=\nssh-copy-id -i ~/.ssh/keyname.pub lukso\n```\n\n#### Disable Non-Key Remote Access\n\nOn a personal computer, try to ssh again. This time it should not prompt for a password.\n\n```shell=\nssh lukso\n```\n\nConfigure SSH by opening a configuration file and modifying several options:\n\n```shell=\nsudo nano /etc/ssh/sshd_config\n```\n\nOptions:\n\n```shell=\nChallengeResponseAuthentication no\nPasswordAuthentication no\nPermitRootLogin prohibit-password\nPermitEmptyPasswords no\n```\n\nClose editor by pressing `ctrl` + `X`, then save. Validate SSH configuration and restart ssh service.\n\n```shell=\nsudo sshd -t\nsudo systemctl restart sshd\n```\n\nClose ssh session by executing `exit`.\n\n#### Verify Remote Access\n\n```shell=\nssh lukso\n```\n    \nStay connected to a remote node machine to perform next steps.\n\n### Keep System Up to Date\n    \nUpdate a system manually:\n    \n```shell=\nsudo apt-get update -y\nsudo apt dist-upgrade -y\nsudo apt-get autoremove\nsudo apt-get autoclean\n```\n\nKeep a system up to date automatically:\n\n```shell=\nsudo apt-get install unattended-upgrades\nsudo dpkg-reconfigure -plow unattended-upgrades\n```\n\n### Disable Root Access\n    \nA root access should not be used. Instead, a user should be using `sudo` to perform privilged operations on a system.\n\n```shell=\nsudo passwd -l root\n```\n\n### Block Unathorised Access\n\nInstall `fail2ban` to block IP addresses that exceed failed ssh login attempts.\n\n```shell=\nsudo apt-get install fail2ban -y\n```\n\nEdit a config to monitor ssh logins\n\n```shell=\nsudo nano /etc/fail2ban/jail.local\n```\n\nReplace *replace-port* to match the ssh port number.\n\n```shell=\n[sshd]\nenabled=true\nport=replace-port\nfilter=sshd\nlogpath=/var/log/auth.log\nmaxretry=3\nignoreip=\n```\n\nClose editor by pressing `ctrl` + `X`, then save. Restart `fail2ban` service:\n\n```shell=\nsudo systemctl restart fail2ban\n```\n\n### Configure Firewall\n\nBy default deny all traffic:\n\n```shell=\nsudo ufw default deny incoming\nsudo ufw default allow outgoing\n```\n\nAllow P2P ports for Lukso clients:\n\n```shell=\nsudo ufw allow 30303/tcp\nsudo ufw allow 13000/tcp\nsudo ufw allow 12000/udp\nsudo ufw allow 30303/udp\n```\n\n\u003e **_NOTE:_** make sure to open same ports on your home router\n\nEnable Firewall:\n\n```shell=\nsudo ufw enable\n```\n\nVerify firewall configuration:\n\n```shell=\nsudo ufw status\n```\n\nIt should look something like this (may be missing some ports):\n\n```shell=\nStatus: active\n\nTo                         Action      From\n--                         ------      ----\n13000/tcp                  ALLOW       Anywhere\n12000/udp                  ALLOW       Anywhere\n30303/tcp                  ALLOW       Anywhere\nssh-port/tcp               ALLOW       Anywhere\n30303/udp                  ALLOW       Anywhere\n13000/tcp (v6)             ALLOW       Anywhere (v6)\n12000/udp (v6)             ALLOW       Anywhere (v6)\n30303/tcp (v6)             ALLOW       Anywhere (v6)\nssh-port/tcp (v6)          ALLOW       Anywhere (v6)\n30303/udp (v6)             ALLOW       Anywhere (v6)\n```\n\n### Improve SSH Connection\n\nWhile setting up a system, ssh terminal may seem to be slow due wifi power management settings on a node machine. To disable it, modify a config.\n\n```shell=\nsudo nano /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf\n```\n\nConfig:\n```shell=\n[connection]\nwifi.powersave = 2\n```\n\nClose editor by pressing `ctrl` + `X`, then save. Restart `NetworkManager` service:\n\n```shell=\nsudo systemctl restart NetworkManager\n```\n\n## Node Setup\n\n\u003e **_NOTE:_** Following steps are performed on personal machine.\n\nAccess a remote node machine\n\n```shell=\nssh lukso\n```\n\n**TBD AS LUKSO IS PREPEARING FOR L16 TESTNET**.\nIn the meantime follow developments and instructions of [L16 beta](https://docs.lukso.tech/networks/l16-testnet).\n\n## Monitoring\n\nSets up a dashboard to monitor state of a node machine, node, and validators.\n\n\u003e **_NOTE:_** Following steps are performed on personal machine.\n\nAccess a remote node machine\n\n```shell=\nssh lukso\n```\n\n### Prometheus\n\n```shell=\nsudo adduser --system prometheus --group --no-create-home\n```\n\nIdentify latest version for `linux-amd64` [here](https://prometheus.io/download/), e.g. `2.34.0`. Install prometheus by replacing `{VERSION}` in the following:\n\n```shell=\ncd\nwget https://github.com/prometheus/prometheus/releases/download/v{VERSION}/prometheus-{VERSION}.linux-amd64.tar.gz\ntar xzvf prometheus-{VERSION}.linux-amd64.tar.gz\ncd prometheus-{VERSION}.linux-amd64\nsudo cp promtool /usr/local/bin/\nsudo cp prometheus /usr/local/bin/\nsudo chown root:root /usr/local/bin/promtool /usr/local/bin/prometheus\nsudo chmod 755 /usr/local/bin/promtool /usr/local/bin/prometheus\ncd\nrm prometheus-{VERSION}.linux-amd64.tar.gz\nrm -rf prometheus-{VERSION}.linux-amd64\n```\n\n#### Configure\n\n```shell=\nsudo mkdir -p /etc/prometheus/console_libraries /etc/prometheus/consoles /etc/prometheus/files_sd /etc/prometheus/rules /etc/prometheus/rules.d\n```\n\nEdit configuration file:\n\n```shell=\nsudo nano /etc/prometheus/prometheus.yml\n```\n\nThe content of configuration file:\n\n```\nglobal:\n  scrape_interval: 15s\n  evaluation_interval: 15s\n\nscrape_configs:\n  - job_name: 'prometheus'\n    scrape_interval: 5s\n    static_configs:\n      - targets: ['127.0.0.1:9090']\n  - job_name: 'beacon node'\n    scrape_interval: 5s\n    static_configs:\n      - targets: ['127.0.0.1:8080']\n  - job_name: 'node_exporter'\n    scrape_interval: 5s\n    static_configs:\n      - targets: ['127.0.0.1:9100']\n  - job_name: 'validator'\n    scrape_interval: 5s\n    static_configs:\n      - targets: ['127.0.0.1:8081']\n  - job_name: 'ping_google'\n    metrics_path: /probe\n    params:\n      module: [icmp]\n    static_configs:\n      - targets:\n        - 8.8.8.8\n    relabel_configs:\n      - source_labels: [__address__]\n        target_label: __param_target\n      - source_labels: [__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: 127.0.0.1:9115  # The blackbox exporter's real hostname:port.\n  - job_name: 'ping_cloudflare'\n    metrics_path: /probe\n    params:\n      module: [icmp]\n    static_configs:\n      - targets:\n        - 1.1.1.1\n    relabel_configs:\n      - source_labels: [__address__]\n        target_label: __param_target\n      - source_labels: [__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: 127.0.0.1:9115  # The blackbox exporter's real hostname:port.\n  - job_name: json_exporter\n    static_configs:\n    - targets:\n      - 127.0.0.1:7979\n  - job_name: json\n    metrics_path: /probe\n    static_configs:\n    - targets:\n      - https://api.coingecko.com/api/v3/simple/price?ids=lukso-token\u0026vs_currencies=usd\n    relabel_configs:\n    - source_labels: [__address__]\n      target_label: __param_target\n    - source_labels: [__param_target]\n      target_label: instance\n    - target_label: __address__\n      replacement: 127.0.0.1:7979\n```\n\nPrepare data directory for prometheus:\n\n```shell=\nsudo chown -R prometheus:prometheus /etc/prometheus\nsudo mkdir /var/lib/prometheus\nsudo chown prometheus:prometheus /var/lib/prometheus\nsudo chmod 755 /var/lib/prometheus\n```\n\nOpen port to access to metrics. This is optional, only for external use:\n\n```shell=\nsudo ufw allow 9090/tcp\n```\n\n#### Configure Service\n\n```shell=\nsudo nano /etc/systemd/system/prometheus.service\n```\n\nThe content of service configuration file:\n\n```\n[Unit]\nDescription=Prometheus\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=prometheus\nGroup=prometheus\nType=simple\nRestart=always\nRestartSec=5\nExecStart=/usr/local/bin/prometheus \\\n\t--config.file /etc/prometheus/prometheus.yml \\\n\t--storage.tsdb.path /var/lib/prometheus/ \\\n\t--storage.tsdb.retention.time=31d \\\n\t--web.console.templates=/etc/prometheus/consoles \\\n\t--web.console.libraries=/etc/prometheus/console_libraries\nExecReload=/bin/kill -HUP $MAINPID\n\n[Install]\nWantedBy=multi-user.target\n```\n\nEnable service:\n\n```shell=\nsudo systemctl daemon-reload\nsudo systemctl start prometheus\nsudo systemctl enable prometheus\n```\n\n### Grafana\n\nInstall:\n\n```shell=\ncd\nsudo apt-get install -y apt-transport-https\nsudo apt-get install -y software-properties-common wget\nwget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -\nsudo add-apt-repository \"deb https://packages.grafana.com/oss/deb stable main\"\nsudo apt-get update\nsudo apt-get install grafana-enterprise\n```\n\n#### Configure Service\n\n```shell=\nsudo nano /lib/systemd/system/grafana-server.service\n```\n\nThe content of service configuration file:\n\n```\n[Unit]\nDescription=Grafana instance\nDocumentation=http://docs.grafana.org\nWants=network-online.target\nAfter=network-online.target\nAfter=postgresql.service mariadb.service mysql.service\n\n[Service]\nEnvironmentFile=/etc/default/grafana-server\nUser=grafana\nGroup=grafana\nType=simple\nRestart=on-failure\nWorkingDirectory=/usr/share/grafana\nRuntimeDirectory=grafana\nRuntimeDirectoryMode=0750\nExecStart=/usr/sbin/grafana-server \\\n                            --config=${CONF_FILE} \\\n                            --pidfile=${PID_FILE_DIR}/grafana-server.pid \\\n                            --packaging=deb \\\n                            cfg:default.paths.logs=${LOG_DIR} \\\n                            cfg:default.paths.data=${DATA_DIR} \\\n                            cfg:default.paths.plugins=${PLUGINS_DIR} \\\n                            cfg:default.paths.provisioning=${PROVISIONING_CFG_DIR}\n\n\nLimitNOFILE=10000\nTimeoutStopSec=20\nCapabilityBoundingSet=\nDeviceAllow=\nLockPersonality=true\nMemoryDenyWriteExecute=false\nNoNewPrivileges=true\nPrivateDevices=true\nPrivateTmp=true\nPrivateUsers=true\nProtectClock=true\nProtectControlGroups=true\nProtectHome=true\nProtectHostname=true\nProtectKernelLogs=true\nProtectKernelModules=true\nProtectKernelTunables=true\nProtectProc=invisible\nProtectSystem=full\nRemoveIPC=true\nRestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX\nRestrictNamespaces=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nSystemCallArchitectures=native\nUMask=0027\n\n[Install]\nAlias=grafana.service\nWantedBy=multi-user.target\n```\n\nEnable service:\n\n```shell=\nsudo systemctl daemon-reload\nsudo systemctl start grafana-server\nsudo systemctl enable grafana-server\n```\n\nOpen port to access to metrics. This is optional, only for external use:\n\n```shell=\nsudo ufw allow 3000/tcp\n```\n\n#### Configure Dashboard\n\nLogin to grafana by navigating to webrowser `http://192.168.86.29:3000`. Replace `192.168.86.29` with IP of your node machine. This is same IP used to ssh.\n\nDefault credentials are username and password `admin`. Set a new secure (long) password when prompted by grafana.\n\n##### Data Source\n\n1. On the left-hand menu, hover over the gear menu and click on `Data Sources`\n2. Then click on the Add Data Source button\n3. Hover over the Prometheus card on screen, then click on the Select button\n4. Enter http://127.0.0.1:9090/ into the URL field, then click Save \u0026 Test\n\n##### Install Dashboard\n\n1. Hover over the plus symbol icon in the left-hand menu, then click on Import\n2. Copy and paste [the dashboard](/grafana/dashboard.json) into the `Import via panel json` text box on the screen\n3. Then click the Load button\n4. Then click the Import button\n\n##### Enable Alerts\n\n1. On the left-hand menu, hover over the alarm menue and click on `Notification channels`\n2. Click on `New channel`\n3. Select `Type` and [configure](https://grafana.com/docs/grafana/latest/alerting/old-alerting/notifications/)\n\nOn lukso dashboard:\n\n1. Scroll down on a dashboard to `Alerts` section\n2. Select each alert and click `Edit`\n3. In `Alert` tab, select notifications `send to`\n4. Save and repeat for each alert\n\n### Node Exporter\n\nMonitors node stats:\n\n```shell=\nsudo adduser --system node_exporter --group --no-create-home\n```\n\nInstall:\n\n```shell=\ncd\nwget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz\ntar xzvf node_exporter-1.0.1.linux-amd64.tar.gz\nsudo cp node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin/\nsudo chown node_exporter:node_exporter /usr/local/bin/node_exporter\nrm node_exporter-1.0.1.linux-amd64.tar.gz\nrm -rf node_exporter-1.0.1.linux-amd64\n```\n\n#### Configure Service\n\n```shell=\nsudo nano /etc/systemd/system/node_exporter.service\n```\n\nThe content of service configuration file:\n\n```\n[Unit]\nDescription=Node Exporter\n\n[Service]\nType=simple\nRestart=always\nRestartSec=5\nUser=node_exporter\nExecStart=/usr/local/bin/node_exporter\n\n[Install]\nWantedBy=multi-user.target\n```\n\nEnable service:\n\n```shell=\nsudo systemctl daemon-reload\nsudo systemctl start node_exporter\nsudo systemctl enable node_exporter\n```\n\n### Json Exporter\n\n#### Prerequisites \n\nCheck `go` version if installed:\n\n```shell=\ngo version\n```\n\nIf it is less than `1.17.7` please install following:\n\n```shell=\nwget https://dl.google.com/go/go1.17.7.linux-amd64.tar.gz\nsudo tar -xvf go1.17.7.linux-amd64.tar.gz\nrm go1.17.7.linux-amd64.tar.gz\nsudo mv go /usr/local/go-1.17.7\nsudo ln -sf /usr/local/go-1.17.7/bin/go /usr/bin/go\ngo version\n```\n\n#### Build and Install\n\nUser:\n\n```shell=\nsudo adduser --system json_exporter --group --no-create-home\n```\n\nInstall:\n\n```shell=\ncd\ngit clone https://github.com/prometheus-community/json_exporter.git\ncd json_exporter\nmake build\nsudo cp json_exporter /usr/local/bin/\nsudo chown json_exporter:json_exporter /usr/local/bin/json_exporter\ncd\nrm -rf json_exporter\n```\n\n#### Configure\n\n```shell=\nsudo mkdir /etc/json_exporter\nsudo chown json_exporter:json_exporter /etc/json_exporter\n```\n\nSetup `LYX` token price:\n\n```shell=\nsudo nano /etc/json_exporter/json_exporter.yml\n```\n\nThe content of configuration file:\n\n```\nmetrics:\n- name: lyxusd\n  path: \"{.lukso-token.usd}\"\n  help: Lukso (LYX) price in USD\n```\n\nChange ownership of configuration file:\n\n```shell=\nsudo chown json_exporter:json_exporter /etc/json_exporter/json_exporter.yml\n```\n\n#### Configure Service\n\n```shell=\nsudo nano /etc/systemd/system/json_exporter.service\n```\n\nThe content of service configuration file:\n\n```\n[Unit]\nDescription=JSON Exporter\n\n[Service]\nType=simple\nRestart=always\nRestartSec=5\nUser=json_exporter\nExecStart=/usr/local/bin/json_exporter --config.file /etc/json_exporter/json_exporter.yml\n\n[Install]\nWantedBy=multi-user.target\n```\n\nEnable service:\n\n```shell=\nsudo systemctl daemon-reload\nsudo systemctl start json_exporter\nsudo systemctl enable json_exporter\n```\n\n### Ping\n\nPings google and cloudflare to track latency. This is optional.\n\n```shell=\nsudo adduser --system blackbox_exporter --group --no-create-home\n```\n\nInstall:\n\n```shell=\ncd\nwget https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz\ntar xvzf blackbox_exporter-0.18.0.linux-amd64.tar.gz\nsudo cp blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter /usr/local/bin/\nsudo chown blackbox_exporter:blackbox_exporter /usr/local/bin/blackbox_exporter\nsudo chmod 755 /usr/local/bin/blackbox_exporter\nrm blackbox_exporter-0.18.0.linux-amd64.tar.gz\nrm -rf blackbox_exporter-0.18.0.linux-amd64\n```\n\nEnable ping permissions:\n\n```shell=\nsudo setcap cap_net_raw+ep /usr/local/bin/blackbox_exporter\n```\n\n#### Configure\n\n```shell=\nsudo mkdir /etc/blackbox_exporter\nsudo chown blackbox_exporter:blackbox_exporter /etc/blackbox_exporter\n```\n\n```shell=\nsudo nano /etc/blackbox_exporter/blackbox.yml\n```\n\nThe content of configuration file:\n\n```\nmodules:\n        icmp:\n                prober: icmp\n                timeout: 10s\n                icmp:\n                        preferred_ip_protocol: ipv4\n```\n\nChange ownership of configuration file:\n\n```shell=\nsudo chown blackbox_exporter:blackbox_exporter /etc/blackbox_exporter/blackbox.yml\n```\n\n#### Configure Service\n\n```shell=\nsudo nano /etc/systemd/system/blackbox_exporter.service\n```\n\nThe content of service configuration file:\n\n```\n[Unit]\nDescription=Blackbox Exporter\n\n[Service]\nType=simple\nRestart=always\nRestartSec=5\nUser=blackbox_exporter\nExecStart=/usr/local/bin/blackbox_exporter --config.file /etc/blackbox_exporter/blackbox.yml\n\n[Install]\nWantedBy=multi-user.target\n```\n\nEnable service:\n\n```shell=\nsudo systemctl daemon-reload\nsudo systemctl start blackbox_exporter\nsudo systemctl enable blackbox_exporter\n```\n\n## Credits\n\n- https://github.com/metanull-operator/eth2-ubuntu\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flykhonis%2Flukso-node-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flykhonis%2Flukso-node-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flykhonis%2Flukso-node-guide/lists"}