Heute möchte ich Euch zeigen, wie man einen Iquidus Blockexplorer für die eMark ans laufen bekommt.
Dabei setze ich voraus, das eMarkd installiert ist und die Blockchain voll geladen ist.
Als Verbindung zum Server nutze ich Putty. Lokal unter Ubuntu das Terminal. Achtet bitte darauf, alles unter einem User zu installieren, als root oder sudo su gibt es Probleme mit der Mongo Datenbank.
Nehmen wir an, wir sind als User “fritz” angemeldet.
Wir brauchen:
eMark >= v1.6.1
node.js >= 8.17.0 (12.14.0 is advised for updated dependencies)
mongodb 4.2.x
Nodejs
Als erstes installieren wir Nodejs mit dem den Node Manager:
sudo apt-get update sudo apt-get install build-essential libssl-dev sudo apt-get install curl curl https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh | bash
Jetzt müssen wir unser Terminal schließen und uns neu einloggen um NVM nutzen zu können. Zum Testen geben wir
nvm --version
ein und sollten die neueste Version angezeigt bekommen. (v.0.33.4)
Jetzt können wir mit
nvm ls-remote
nachschauen, welche node Versionen verfügbar sind, und installieren v.0.10.48
nvm install v0.10.48nvm install v12.16.1
Mit
node -v
schauen wir ob alles geklappt hat.
Mongo Datenbank installieren und einrichten.
Hier die Vorgehensweise für Debian 10. Debian 9 oder Ubuntu ist bischen anders. Aner da hilft google weiter.
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
falls der Schlüssel nicht angenommen wird
sudo apt-get install gnupg
und wget key wiederholen.
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org=4.2.3 mongodb-org-server=4.2.3 mongodb-org-shell=4.2.3 mongodb-org-mongos=4.2.3 mongodb-org-tools=4.2.3
mongo --version
sollte uns die installierte Version zurück geben. (4.3.2)
Mongo speichert die Daten unter
- daten
/var/lib/mongodb
- log files
/var/log/mongodb
Wir starten MongoDB mit
sudo systemctl start mongod
Wenn Fehlermeldungen kommen,
sudo systemctl daemon-reload
und testen ob alles läuft:
sudo systemctl status mongod
möchtest du mongo mit dem System starten dann
sudo systemctl enable mongod
zum stoppen stop, zum neustarten restart
sudo systemctl stop mongod
Jetzt legen wir eine Datenbank an mit
mongo > use explorerdb
User anlegen: Hast du eine Mongo Shell > 2.6 nutzt du cerateUser ansonnsten addUser. Als User musst du den User nehmen mit dem du auf dem Computer eingeloggt bist.
>db.createUser( { user: "iquidus", pwd: "3xp!0reR", roles: [ "readWrite" ] } )
Mit
> exit
verlassen wir mongo wieder
Prozessmanager PM2
PM2 ist ein Prozessmanager für die Verwaltung von Node.js-Prozessen. Zu den wichtigsten Features des PM2-Moduls zählen das automatische Neustarten von Node.js-Prozessen, die Aktualisierung von Prozessen mit nahezu keiner Downtime und das Monitoring der Prozesse hinsichtlich Speicherverbrauch, CPU oder Uptime. Anleitung hier: https://entwickler.de/online/javascript/pm2-prozessmanager-184546.html
Dieser Schritt ist nicht unbedingt notwendig, erleichtert das arbeiten mit dem Explorer jedoch erheblich.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv D1EA2D4C echo "deb http://apt.pm2.io/ubuntu stable main" | sudo tee /etc/apt/sources.list.d/pm2.list sudo apt-get update sudo apt-get install pm2npm install pm2 -g
Wenn alles geklappt hat gibt uns
pm2 -v
die installierte Version zurück.
(ist jetzt bei mir 4.2.3)
Iquidus Blockexplorer
Jetzt kommen wir zu der eigentlichen Installation des Blockexplorers. Zur Bearbeitung der Dateien könnt ihr einen Texteditor eurer Wahl nehmen, für Anfänger empfehle ich NANO, da VI ein bischen Einarbeitungszeit braucht. (sudo apt-get install nano)
git sollte ja schon vom eMarkd installiert sein, wenn nicht, einfach mit
sudo apt-get install git
installieren.
Um auf dem neuesten Stand zu sein holen wir uns das Original von Iquidus
git clone https://github.com/iquidus/explorer.git
und installieren mit
cd explorer&& npm install --production
und passen es auf unsere Bedürfnissen an. Als erstes das Icon und das eMark Logo
cd explorer/public/ rm favicon.ico wget https://www.dropbox.com/s/s9b19rm5mcb7a4x/favicon.ico cd images/ rm logo.png wget https://www.dropbox.com/s/dxeedfsqas6ri33/logo.png
Anpassen der Netzwerkhashrate
Warum muß diese angepast werden? Bei der eMark gibt das RPC Komando “getnetworkhashps” die Hashrate in MEGA zurück. Der Blockexplorer rechnet somit also falsch um.
wir wechseln in den Ordner /lib/
cd lib/
und öffnen die Datei explorer.js
nano explorer.js
und ändern unter var uri = base_url + ‘getnetworkhashps’ die Zeilen Mega, Giga, Tera und Peta indem wir jeweils 6 Nullen entfernen. Mit gleichzeitigem drücken von STRG und o gefolgt von ENTER speichern wir die Datei und verlassen NANO mit STRG + x
Settings einstellen
entweder ihr bearbeitet die settings.json.template und benennt sie dann in settings.json um oder ihr nehmt meine vorgefertigten settings:
cd .. wget https://www.dropbox.com/s/obs1zliyjgzcn97/settings.json nano settings.json
Hier ändern wir nur noch die “database settings” und die “wallet settings”. Bei Database kommen zum Beispiel user: “fritz”, password: “3xp!0reR” rein und bei wallet eure Angaben aus der eMark.conf. Unter http://bootswatch.com/ kann man sich verschiedene Designs anschauen, welche man dann unter “theme” einstellen kann.
STRG+o, Enter, STRG+x speichert die Datei und verlässt NANO wieder.
Beim Blockexplorer 1.7.3 gibt es einen Bug! Ändere Zeile 17 in lib/explorer.js zu:
return cb(0);
Blockexplorer installieren
npm install --production
Warnungen können ignoriert werden, Fehler jedoch nicht.
Jetzt sollte alles für den ersten Start bereit sein. Stellt sicher, das eMarkd läuft.
npm start
Wenn alles so aussieht sind wir auf dem richtigen Weg
Wir können jetzt den Browser starten und schauen wie es aussieht. Läuft der Blockexplorer lokal, nutzen wir die IP Adresse http://127.0.0.1:3009/ auf dem Server die Server IP gefolgt von :3009
Wir beenden npm mit STRG+c
Jetzt muß nur noch die Datenbank für den Explorer und die Tauschbörsen aufgebaut werden. Und bei dieser Gelegenheit bauen wir auch gleich einen Fix ein, der automatisch die index.pid löscht sollte der Blockexplorer mal abstürzen.
wir sind immer noch im Ordner ./explorer/
nano clean_pid
folgende Zeilen hinzufügen (Achtung passt euren Pfad an!!!):
#!/bin/bash PID_FILE=/home/fritz/explorer/tmp/index.pid ps -aefw | grep -q '[/]usr/bin/node scripts/sync.js index update' || { [ -f $PID_FILE ] && rm -f $PID_FILE }
Diese Datei wieder mit STRG+o speichern, NANO beenden und ab und zu per cron ausführen.
Datenbanken aufbauen und die clean_pid ausführen
crontab -e
hier eventuell jetzt euren bevorzugten Editor auswählen und dieses einfügen( Auch hier wieder auf die richtigen Pfadangaben achten):
# eMarkexplorer */3 * * * * cd /home/fritz/explorer && /usr/bin/node scripts/sync.js index update > /dev/null 2>&1 */5 * * * * cd /home/fritz/explorer && /usr/bin/node scripts/sync.js market > /dev/null 2>&1 */5 * * * * cd /home/fritz/explorer && /usr/bin/nodejs scripts/peers.js > /dev/null 2>&1 # remove stale pid file from node.js */30 * * * * /home/fritz/explorer/clean_pid
Speichern und beenden.
Jetzt kommt der entgültige start des Blockexplorers. Dazu nutzen wir den Prozessmanager PM2
pm2 start ./bin/cluster --name explorer
Der Explorer sollte jetzt laufen und nach spätestens 2 Minuten anfangen die Datenbank aufzubauen.
Herzlichen Glückwunsch, Ihr habt es geschafft. Bei Fragen oder Problemen meldet euch einfach hier in den Komentaren.
Rumhocker
To send a tip to the author, please login.