Hallo zusammen,
ich habe in vielen Tagen "Try and Error" einen Miningpool auf die Beine gestellt mit der Opensourcesoftware von Sammy007.
Ich möchte nun mein Wissen mit euch teilen und habe alle Schritt haarklein dokumentiert.
Als Basis habe ich ein Lubunut 16.04 genommen und auf eine Virtuellen Maschine installiert.
Ich selbst habe nur Basiswissen im Bereich Linux, daher möchte um Nachsicht bitten wenn der ein oder andere Befehl nicht optimal ist
mein user heißt pool
Nach der Installation des Betriebssysstems habe ich als erste mal ein Update gemacht
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo apt-get autoclean
anschliessend habe ich die VMwaretools installiert:
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop
anschliessend noch openssh:
sudo apt-get install openssh-server
nun legen wir einen Pooluser an gem. Empfehlung von Sammy007
Passwort eingeben und
neustarten und mit diesem User dann anmelden
um mir die Arbeit etwas zu erleichtern habe ich diesen User dann vorläufig zum Administrator gemacht
Systemwerkzeuge=>Benutzer und Gruppen
damit werden nachfolgende Schritt deutlich einfacher
nun habe ich mir ein VNC-Server eingerichtet
sudo apt-get install vino
sudo reboot
sudo vino-preferences
in den Einstellungen entsprechend die Checkboxen setzen
anschliessend noch den Vino in die Autostart setzen
Einstellung=>Default applications for LXSession=>Autostart
/usr/lib/vino/vino-server
nun noch die Encryption ausschalten
gsettings set org.gnome.Vino require-encryption false
bei mir ist dann noch das Tastaturlayout falsch:
Einstellungen=>Default applications for LXSession=>Autostart
nach dem neustart
kann ich mich nun per VNC anmelden
die Ip findet man mit
raus
jetzt können wir mit den notwendigen Installationen für den Pool beginnen
die Build-Tools:
sudo apt-get install build-essential make
Installation der Go-Software
wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
sudo tar -xvf go1.9.2.linux-amd64.tar.gz
sudo mv go /usr/local
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=$HOME/go
go version
nun sollte folgendes da stehen:
go version go1.9.2 linux/amd64
Installation Curl
sudo apt-get install curl
Installation NGinx
sudo apt-get install nginx
Installation Redis
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
sudo cp src/redis-server /usr/local/bin/
sudo cp src/redis-cli /usr/local/bin/
sudo mkdir /etc/redis
sudo mkdir /var/redis
sudo cp utils/redis_init_script /etc/init.d/redis_6379
sudo cp redis.conf /etc/redis/6379.conf
sudo nano /etc/redis/6379.conf
in der Conf-Datei muss nun der Wert für daemonize auf yes gesetzt werden sowie
den Wert von dir auf /var/redis/6379. (suchen innerhalb von nano strg+w)
dann noch
sudo mkdir /var/redis/6379
sudo update-rc.d redis_6379 defaults
sudo /etc/init.d/redis_6379 start
damit läuft der Redis-Server
nun testen wir den Server noch:
nun steht folgendes im Terminal:
Expected response
redis 127.0.0.1:6379>
und dann geben wir mal
ein
nun steht als antwort
passt
um dann die Konsole zu verlassen:
nun noch die Installation von Nodejs / NPM
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs
curl https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash
. /home/pool/.nvm/nvm.sh
source ~/.profile
nvm install 4.7.3
Git brauchen wir auch noch:
so jetzt aber mal ans eingemachte, wir installieren geth:
mkdir eth
cd eth
git clone https://github.com/ethereum/go-ethereum
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=$HOME/go
cd go-ethereum
make all
cd build/bin/
fertig wir starten nun die geth-Konsole:
und legen uns einen neuen Account an:
Die Adresse und das Passwort merken
um die Konsole zu verlassen strg+b und anschliessend strg+d
nun installieren wir den Pool:
Cd ~
Cd eth
git clone https://github.com/sammy007/open-ethereum-pool.git
cd open-ethereum-pool
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=$HOME/go
make
cp ~/eth/open-ethereum-pool/config.example.json ~/eth/open-ethereum-pool/build/bin/config.json
in der Anleitung von Sammy007 steht noch das die Datei unlocker.go angepasst werden muss:
nano payouts/unlocker.go
var homesteadReward = math.MustParseBig256(“3000000000000000000”)
nun passen wir unsere Config des Pools noch an:
sudo nano /home/pool/eth/open-ethereum-pool/build/bin/config.json
Proxy: "listen": "localhost:8888",
Startum: "listen": "192.168.150.135:8008",
api: "listen": "192.168.150.135:8080",
damit ist der Pool bereits fertig und kann von den minern aufgerufen werden:
cd /home/pool/eth/open-ethereum-pool/build/bin
./open-ethereum-pool config.json
nun zum Schmerzstück, ähh Herzstück
die Webseite
cd /home/pool/eth/open-ethereum-pool/www/
sudo npm install -g ember-cli@2.9.1
sudo npm install -g bower
sudo npm install -g npm@4.6.1
sudo npm install -save
sudo bower install –allow-root
unbedingt auch in dieser Reihenfolge
die Installation der Komponenten muss ohne Fehler durchlaufen, jedoch erscheinen hin und wieder einige Warnungen die man ignorieren kann.
nun konfigurieren wir noch die Webseite:
nano /home/pool/eth/open-ethereum-pool/www/config/environment.js
APP: ApiUrl: '//192.168.150.135:8080',
HttpHost: 'http://localhost',
StratumHost: 'localhost',
Development: ENV.APP.ApiUrl = 'http://192.168.150.135:8080/'
anschliessend kompilieren wir das noch
jegliche Änderung an der Webseite muss anschliessned neu kompiliert werden
dann habe ich noch alles auf den Develop-Modus gesetzt:
ember server --port 8082 --environment development
nun richten wir den nginx ein:
sudo nano /etc/nginx/sites-enabled/default
meine default sieht wie folgt aus:
upstream api {
server 127.0.0.1:8080;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/pool/eth/open-ethereum-pool/www/dist ;
index index.html index.htm index.nginx-debian.html;
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /api {
proxy_pass
http://api; }
}
danach noch den Dienst neustarten
sudo service nginx restart
der Dienst muss nun ohne Fehler starten
so jetzt starten wir alles mal
1. Terminalfenster
cd ~
cd eth/go-ethereum/build/bin/
./geth –rpc –fast –cache=512
2. Terminalfenster
cd eth/open-ethereum-pool/build/bin/
./open-ethereum-pool config.json
Wenn ihr nun im Browser eingebt
http://localhostbzw. im meinen Fall
http://192.168.150.130nun noch den User wieder zurückstellen auf einen Standarduser
die beiden Programme (geth und den Pool) in die Autostart legen.
Einstellung=>Default applications for LXSession=>Autostart
lxterminal -e /home/pool/eth/go-ethereum/build/bin/geth --rpc --fast --cache=512
lxterminal -e /home/pool/eth/open-ethereum-pool/build/bin/open-ethereum-pool /home/pool/eth/open-ethereum-pool/build/bin/config.json
Damit das ganze auch nach einen neustart funktioniert den Autouser-Logon aktivieren:
sudo nano /etc/lightdm/lightdm.conf.d/autostart.conf
[SeatDefaults]
autologin-user=pool
autologin-user-timeout=0
user-session=ubuntu
greeter-session=unity-greeter
fertig, war doch ganz leicht