Podstawowe wymagania techniczne do Nody
Do utworzenia Nody potrzebujemy serwer wirtualny (VPS) albo dedykowany z 64-bitowym procesorem i zainstalowanym systemem operacyjnym. Taki serwer również musi posiadać dostęp do rdzeni procesora i 6 GB pamięci podręcznej, z których 4 Gb może być pamięcią RAM i 2 Gb pamięcią swap.
Aby podłączyć do przetwarzania transakcji z sieci ZenCash naszą bezpieczną Nodę, serwer musi wykonywać obliczenia do 5 minut lub 300 sekund. Te obliczenia polegają na tworzeniu Zabezpieczonych transakcji ZenCash (Shielded Transaction) oraz demonstracji wydajności serwera, który będzie tworzył dużo takich transakcji co dziennie zwiększając bezpieczeństwo każdego takiego przelewu.
Potrzebny jest również przypisany do serwera unikalny adres IPv4 lub IPv6, SSL/TLS certyfikat i nazwa domeny (wystarczy nawet utworzyć poddomenę). O tym jak wygenerować i zainstalować darmowy certyfikat SSL od Lets Encrypt pisaliśmy trochę wcześniej, ale byłoby bezpieczniej wykupić komercyjny certyfikat SSL.
W tym artykule pokażemy, jak wykonać instalację w systemie Ubuntu 16.04. Na innych wersjach systemu Unix lub Linux powinno wszystko działać też bez problemów.
Instalacja systemu operacyjnego Linux na serwer VPS
Aby zainstalować system operacyjny Ubuntu musimy wybrać odpowiednią zakładkę na stronie z informacją o produkcie w Panelu Klienta (OS Reinstall)
Tworzenie Nody ZenCash
Jeżeli będziesz potrzebował pomocy – można się zgłosić do grupy w Discord ZenCash i wejść do kanału z nazwą #securenodes
Sprawdź wolną pamięć i miejsce na dysku serwera:
free -h df -h
Jeśli nie masz więcej niż 5 Gb RAM po dodaniu – musimy dodać plik swap:
sudo fallocate -l /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Zróbmy żeby swap dodawał się po ponownym uruchomieniu serwera automatycznie:
sudo su - cat <<EOF >> /etc/fstab /swapfile none swap sw 0 0 EOF exit
Należy zrobić poniższe ustawienia na serwerze aby pamięć swap miała najwyższą wydajność. Ta opcja wymusza serwer wypełnić pamięć RAM do 90% zanim przejść do wykorzystania swap na dysku twardym serwera:
sudo su - cat <<EOF >> /etc/sysctl.konf vm.swappines=10 EOF exit
Sprawdzamy jeszcze raz wolną pamię ćpodręczną oraz dysk:
free -h. df -h
Instalacja zen z gotowych pakietów
Zainstalujemy Zen z pakietów dostępnych na tej stronie – https://zencashofficial.github.io/repo/
sudo apt-get update sudo apt-get install apt-transport-https z lsb-release
echo 'deb https://zencashofficial.github.io/repo/ '$(lsb_release -cs)' main' | sudo tee --append /etc/apt/sources.list.d/zen.list gpg --keyserver ha.pool.sks-keyservers.net --recv 219F55740BBF7A1CE368BA45FB7053CE4991B669 gpg --export 219F55740BBF7A1CE368BA45FB7053CE4991B669 | sudo apt-key add - sudo apt-get update sudo apt-get install zen # to install Zen zen-fetch-params
Tego powinno wystarczyć dla szybkiej i najprostszej w obsłudze instalacji Nody ZenCash.
Konfiguracja Zen
Uruchamiamy zend jeden raz i czytamy wiadomość. Następnie zend automatycznie zatrzyma się.
zend
Tworzymy nowy plik konfiguracyjny zen. Jego zawartośc będzie następna:
cat <<EOF > ~/.zen/zen.conf rpcuser=zenuserorsomebettername rpcpassword=replacethiswithagoodpassword rpcport=18231 rpcallowip=127.0.0.1 server=1 daemon=1 listen=1 txindex=1 logtimestamps=1 ### testnet config #testnet=1 EOF
Uruchomiamy aplikację Zen jako proces:
zend
Sprawdzamy stan i upewniamy się, że blok zwiększa się:
zen-cli getinfo
Instalacja darmowego certyfikatu od LetsEncrypt
Tworzymy wpis A dla serwera poprzez panel zarządzania wpisami DNS domeny internetowej. FQDN – w kolejnych krokach jest nazwą domeny.
Wszędzie gdzie są duże litery <CAPS> musimy zamienić odpowiednią wartością dla naszego serwera/użytkownika/domeny. Na przykład, <FQDN> blogu ZenCash jest blog.zensystem.io
Sprawdzamy czy dodany wpis domeny jest skierowany na publiczny adres IP twojego serwera:
ping <FQDN>
Instalujemy skrypt acme aby utworzyć certyfikat:
sudo apt install socat cd git clone https://github.com/Neilpang/acme.sh.git cd acme.sh ./acme.sh --install
Tworzymy certyfikat:
FQDN=<FQDN>
echo $FQDN
sudo ~/.acme.sh/acme.sh --issue --standalone -d $FQDN
Musimy zobaczyć w konsoli gdzie są certyfikaty. Powinny one być w folderze
~/.acme.sh/<FQDN>
Instalujemy crontab, który będzie sprawdzał ważność certyfikatu i będzie go odnawiał w razie potrzeby:
sudo crontab-e
Wklejamy następny kod na końcu pliku crontab:
6 0 * * * "/home/<USER>/.acme.sh"/acme.sh --cron --home "/home/<USER>/.acme.sh" > /dev/null
Kopiujemy certyfikat do magazynu certyfikatów Ubuntu i instalujemy go. Najlepszym sposobem, aby to zrobić jest skopiowanie następnej sekcji do pliku tekstowego w notatniku czy Notepad++, gdzie zmieniamy nazwę użytkownika i nazwę domeny <USER> i <FQDN> na potrzebne nam, a następnie kopiujemy ten tekst i wklejamy do wierszu poleceń serwera na Linux. Nie trzeba kopiować linię z nazwą domeny FQDN więcej niż jeden raz. Użyj Tab, spacja i Enter, aby przejść do menu certyfikatów CA:
FQDN=<FQDN> echo "<USER> is $USER" echo "<FQDN> is $FQDN" sudo cp /home/$USER/.acme.sh/$FQDN/ca.cer /usr/share/ca-certificates/ca.crt sudo dpkg-reconfigure ca-certificates
Zatrzymujemy aplikację zen i konfigurujemy ścieżkę do certyfikatu, a następnie uruchamiamy zend ponownie:
FQDN=<FQDN> zen-cli stop cat <<EOF >> ~/.zen/zen.conf tlscertpath=/home/$USER/.acme.sh/$FQDN/$FQDN.cer tlskeypath=/home/$USER/.acme.sh/$FQDN/$FQDN.key EOF zend
Sprawdzamy status TLS cert – to polecenie musi wyświetlić “tls_cert_verified”: true
zen-cli getnetworkinfo
Konfiguracja bezpieczeństwa Nody
Tworzymy nowy adres portfelu – na który trzeba będzie wysłać 42 zen. To jest adresem <T_ADDR>. Musimy upewnić się że ZEN zostaje w tym adresie, w przeciwnym przypadku Noda nie przejdzie weryfikacji.
Sprawdzamy czy Noda posiada już zabezpieczony adres:
zen-cli z_listaddresses
Jeśli nie, utwórz “shielded” adres na nodzie zen:
zen-cli z_getnewaddress
Adres ten będzie nazwany <Z_ADDR>. Wysyłamy 4 lub 5 transakcji od 0,1 do 0,25 monet zen na <Z_ADDR> z portfelu ZenCash zainstalowanego na komputerze PC lub Mac. Upewniamy się, że noda wie, że ona ma pieniądze. Będziemy gotowi, gdy będziemy mieli więcej niż 1 ZEN:
zen-cli z_gettotalbalance
Jeśli balans nadal jest zerowy, blockchain prawdopodobnie nie został zaktualizowany do ostatniej wersji. Sprawdzić można za pomocą polecenia
zen-cli getinfo
lub
watch zen-cli getinfo
Instalujemy aplikację tracker. Jeśli aktualizujesz aplikację, przeczytaj instrukcje dotyczącą aktualizacji tutaj: https://github.com/HorizenOfficial/nodetracker
Instalujemy npm i Node.js:
sudo apt -y install npm sudo npm install -g n sudo n latest
Kopiujemy ten repozytorium i instalujemy moduły node:
mkdir ~/zencash cd ~/zencash git clone https://github.com/ZencashOfficial/secnodetracker.git cd secnodetracker npm install
Uruchomiamy instalację aplikacji node. Musimy wiedzieć jaki jest <T_ADDR> i adres e-mail do powiadomień.
node setup.js
Uruchomiamy aplikację i sprawdzamy, czy działa:
node app.js
Sprawdzić stan Twojej nody można na stronie trackera:
https://securenodes2.eu.zensystem.io
Jeśli widzimy żę noda została zarejestrowana poprawnie i wygląda dobrze, wciskamy Ctrl-C, aby zatrzymać aplikację.
cd ~/zencash/secnodetracker/ sudo npm install pm2@2.4.0 -g pm2 start app.js --name securenodetracker
Zrobimy tak, aby to się uruchomiało przy starcie systemu:
pm2 startup
Trzeba skopiować i wkleić polecenie, aby pm2 był uruchomiany przy starcie systemu – system powie, co należy zrobić.
Instalujemy i konfigurujemy monit aby noda zen działała. Instalujemy monit:
sudo apt install monit
Stwórzmy mały plik, aby uruchomić zend. Edytujemy:
nano ~/zen_node.sh or vim ~/zen_node.sh
Wklejamy następną zawartość do pliku. Zamieniamy tylko nazwę użytkownika <USER> na naszą
#!/bin/bash PID_FILE='/home/<USER>/.zen/zen_node.pid' start() { touch $PID_FILE eval "/bin/su <USER> -c '/usr/bin/zend 2>&1 >> /dev/null'" PID=$(ps aux | grep zend | grep -v grep | awk '{print $2}') echo "Starting zend with PID $PID" echo $PID > $PID_FILE } stop () { pkill zend rm $PID_FILE echo "Stopping zend" } case $1 in start) start ;; stop) stop ;; *) echo "usage: zend {start|stop}" ;; esac exit 0
Robimy tak, aby plik pomocniczy był wykonywalny:
chmod u+x ~/zen_node.sh
Dodajemy kilka opcji do konfiguracji monit w dolnej części plikui:
sudo nano /etc/monit/monitrc or sudo vim /etc/monit/monitrc
Wklejamy to do pliku na samym dole. Zamieniamy tylko nazwę użytkownika <USER>:
### added on setup for zend set httpd port 2812 use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server # ### zend process control check process zend with pidfile /home/<USER>/.zen/zen_node.pid start program = "/home/<USER>/zen_node.sh start" with timeout 60 seconds stop program = "/home/<USER>/zen_node.sh stop"
Wgrywamy nową konfigurację:
sudo monit reload
Włączamy usługę monitoringu:
sudo monit start zend
Możemy sprawdzić status monit za pomocą polecenia:
sudo monit status
Powyższe ustawienia pozwolą nam zawsze mieć uruchomiony zend. Jeżeli zatrzymamy go, to system automatycznie uruchomi go ponownie. Jeśli naprawdę musimy go zatrzymać, możemy to zrobić następnym sposobem:
sudo monit stop zend
Zwiększamy bezpieczeństwo serwera
Tworzymy zaporę sieciową:
sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow ssh/tcp sudo ufw limit ssh/tcp sudo ufw allow http/tcp sudo ufw allow https/tcp sudo ufw allow 9033/tcp sudo ufw logging on
sudo ufw enable
Instalujemy i włączamy dziennik nieudanych prób logowania:
sudo apt -y install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban
Ustawiamy detektor rootkit:
sudo apt -y install rkhunter
Jeżeli system zapyta o ustawienia email, wybieramy Internet Site i wpisujemy nazwę domeny FQDN na następnej stronie. Tworzymy skrypt aktualizacji, który będzie również aktualizować rootkit hunter po aktualizacji nody:
cat <<EOF > ~/upgrade_script.sh #!/bin/bash sudo apt update sudo apt -y dist-upgrade sudo apt -y autoremove sudo rkhunter --propupd EOF
Zmieniamy uprawnienia aby skrypt mógł się wykonywać:
chmod u+x ~/upgrade_script.sh
Jeżeli będziemy chcieli zaktualizować nodę, wystarczy uruchomić skrypt poleceniem:
sudo ~/upgrade_script.sh
Teraz musimy mieć działającą Bezpieczną Nodę ZenCash 🙂
Ostateczny test
Uruchomiamy ponownie serwer i upewniamy się, że wszystko wraca do normalnej pracy
sudo reboot
Po ponownym uruchomieniu serwera, podłączamy się i sprawdzamy, czy wszystko działa:
sudo monit status pm2 status zen-cli getinfo zen-cli getnetworkinfo
Powinno być tyle dla Nody z podstawowym poziomem bezpieczeństwa. Czy można robić rzeczy lepiej, inaczej? Oczywiście że tak. Jeżeli macie coś do poprawienia w tej instrukcji – dajcie nam znać w komentarzach do tego wpisu 🙂
—————————————–
Zapraszamy do skorzystania z naszej oferty serwerów wirtualnych, które są dedykowane pod Masternody, na których bez problemów pomożemy skonfigurować i uruchomić Nody wybranych walut.
Comments (1)
Iga
Hej dzięki za wpis !