Ich bin jetzt reich - ich habe 50 Test BTC :D. Den Block habe ich natürlich nur in Testnet4 gefunden, aber ich wollte sicherstellen, dass das Setup funktioniert, bevor ich ewig in Mainnet mine.
Mein gefundener Block im Testnet4: Block 137679.
ich habe auf meinem normalen Rechner Bitcon Core im Testnet4 laufen lassen um erstmal rumzuprobieren.
Ich habe diese Anleitung genommen:
Wer will kann das dazugehörige Youtube-Video noch angucken:
Außerdem habe ich natürlich noch viel KI benutzt: Allgemeine Fragen, was was macht usw. aber ganz besonders auch um auftretende Fehler zu beheben. Es ist wirklich leicht einzurichten.
Die oben verlinkte Anleitung habe ich passend zum RaspiBolt-Setup für mich angepasst. Wichtig sind immer abweichende Benutzernamen/Ordnerpfade und abweichende Ports.
Ich setze voraus, dass ihr eine funktionierende Node nach RaspiBolt laufen habt, dann brauchen wir aus der Anleitung nur die Blöcke „Create a build environment“ und „ckpool-solo - mainnet“.
Als erstes führen wir diese Befehle nacheinander aus, um die Paketquellen und Pakete zu aktualisieren, danach werden benötigte Pakete zum Code kompilieren etc. installiert. Manches brauchen wir vielleicht nicht, anderes ist vielleicht schon installiert:
sudo apt update
sudo apt upgrade (alternativ apt full-upgrade)
sudo apt install -y build-essential yasm libtool autotools-dev automake
sudo apt install -y pkg-config bsdmainutils python3
sudo apt install -y rustup clang libclang-dev cmake nodejs npm
sudo apt install -y libevent-dev libboost-dev libzmq3-dev librocksdb-dev
Wer will, kann nach „sudo“ noch „torsocks“ mitangeben, dann werden die Verbindungen über Tor aufgebaut.
Dann weiter mit CKPool selbst:
Benutzer „ckpool“ anlegen:
sudo adduser --disabled-password --gecos "" ckpool
Diesen Benutzer auch in die Gruppe „bitcoin“ stecken:
sudo adduser ckpool bitcoin
Ob dies wirklich nötig ist, weiß ich nicht, aber ich halte mich an das RaspiBolt-Schema.
Wir erstellen noch ein ckpool-Ordner in /data:
sudo mkdir /data/ckpool
Und wechseln den Besitzer zu „ckpool“:
sudo chown -R /data/ckpool
Jetzt zum Benutzer „ckpool“ wechseln:
sudo su - ckpool
Nun einfach nacheinander die Befehle ausführen, wie in der verlinkten Anleitung angegeben:
git clone Bitbucket
cd ckpool
./autogen.sh
./configure CFLAGS="-O2 -march=native"
make -j 4
Ich habe dann die Config unbenannt, ist eigentlich nicht nötig, da wir die Config, die wir benutzen werden, sowieso in /data/ckpool ablegen und nicht im Standardordner:
mv ckpool.conf ckpool.conf.bak
Jetzt erstellen wir unsere ckpool.conf:
nano /data/ckpool/ckpool.conf
Da dann rein:
{
”btcd" : [
{
"url" : "127.0.0.1:8332",
"auth" : "RPC-BENUTZERNAME",
"pass" : "RPC-PASSWORT",
"notify" : true
}
],
”btcsig" : "EUER TEXT IN DER COINBASE-TRANSAKTION",
”donation" : 0.5,
”zmqblock" : "tcp://127.0.0.1:28332",
”serverurl" : [
"IP DER NODE:3333"
]
}
Erläuterung: „donation“ ist eine Spende in Prozent der Blockbelohnung an den Entwickler von CKPool, hier also 0,5 Prozent.
„serverurl“: Hier lauscht der Stratumserver. Man kann das auch weglassen, dann lauscht der
auf 0.0.0.0:3333 (3333 ist der Standardport für Stratum). Ich wollte das aber exakt beschränken, in meinen Augen ist das weniger Angriffsfläche.
Speichern und beenden und als nächstes testen:
src/ckpool -B -c /data/ckpool/ckpool.conf
Wenn keine Fehler sind (halbe bis eine Minute warten), dann STRG-C zum Beenden und zurück zum Admin wechseln:
exit
Jetzt beschränken wir aus Sicherheitsgründen Lese- und Schreibrechte der ckpool.conf nur auf Benutzer ckpool (da dort ja unser RPC-Passwort im Klartext liegt):
sudo chmod 600 /data/ckpool/ckpool.conf
Jetzt den CKPool automatisch starten lassen:
sudo nano /etc/systemd/system/ckpool.service
Dort dann das rein:
[Unit]
Description=ckpool solo Bitcoin pool on mainnet
After=multi-user.target bitcoind.service
Requires=bitcoind.service
[Service]
User=ckpool
Type=simple
Restart=always
WorkingDirectory=/home/ckpool/ckpool
ExecStart=/home/ckpool/ckpool/src/ckpool -B -s solo_btc -c /data/ckpool/ckpool.conf
# Hardening
PrivateTmp=yes
ProtectSystem=full
NoNewPrivileges=yes
PrivateDevices=yes
MemoryDenyWriteExecute=true
[Install]
WantedBy=multi-user.target
Ihr müsst hier die originale systemd-Unit aus der verlinkten Anleitung anpassen, da ja Benutzer
und Ordner nicht passen. Also einmal drübergucken.
Ich habe bei # Hardening noch ein paar Sachen aus der RaspiBolt-Anleitung eingefügt.
Nach dem Speichern dann den Dienst starten:
sudo systemctl daemon-reload
sudo systemctl enable ckpool.service
sudo systemctl start ckpool.service
sudo systemctl status ckpool.service
sudo journalctl -xeu ckpool.service
Logrotation habe ich noch nicht gemacht.
Die Log von CKPool als Admin verfolgen:
sudo tail -f /home/ckpool/ckpool/logs/ckpool.log
Dann müssen wir noch den Port in der Firewall freigeben:
sudo ufw allow from MINER-IP to NODE-IP port 3333 proto tcp comment 'allow CKPool'
Das ist noch sicherer als bei RaspiBolt, weil hier nicht einfach der ganze Port
freigegeben wird, sondern nur von einer ganz bestimmten IP (dem Miner) zu einer
ganz bestimmten IP (die Node). Ist also noch eingegrenzter.
Jetzt nehmt ihr im Miner-Dashboard als „Stratum-Host“ einfach eure IP von der Node und als Port 3333.
Dann sollte das laufen. Wenn ihr ckpool.log verfolgt (mit tail…) dann kommt sowas wie „Added new user“
und „Authorised client“.
Was ich noch auf der Testnet-Node ausprobiert aber nicht hinbekommen habe ist ein Reverse-Proxy über Nginx für ckpool einzurichten, damit der Verkehr vom Miner zum Stratum-Server verschlüsselt wird.
Den Reverse-Proxy habe ich korrekt eingerichtet, alles hat auf den richtigen Ports gelauscht, aber der Miner hat irgendwie ein Problem damit, dass das SSL-Zertifikat selbst signiert ist, der Handshake scheitert wegen „bad
certificate“ oder so. Vielleicht hat da noch jemand Ahnung, denn ich würde das gerne hinkriegen, wenn das möglich ist.
Wenn Fragen sind, einfach hier rein, wenn ich bescheid weiß, helfe ich.
