From 3d61cd57c8566ee9335ec9a5ae0795008a314ab2 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Thu, 31 May 2018 19:44:02 +0200 Subject: [PATCH 1/5] Add build for ethereum geth debian package --- README.md | 5 ++- contrib/backends/ethereum/Makefile | 10 +++++ contrib/backends/ethereum/debian/changelog | 5 +++ contrib/backends/ethereum/debian/compat | 1 + contrib/backends/ethereum/debian/control | 16 +++++++ .../ethereum/debian/ethereum-eth.conffiles | 0 .../ethereum/debian/ethereum-eth.dirs | 1 + .../ethereum/debian/ethereum-eth.install | 1 + .../ethereum/debian/ethereum-eth.logrotate | 9 ++++ .../ethereum/debian/ethereum-eth.postinst | 20 +++++++++ .../ethereum/debian/ethereum-eth.service | 42 +++++++++++++++++++ .../debian/ethereum-ropsten.conffiles | 0 .../ethereum/debian/ethereum-ropsten.dirs | 1 + .../ethereum/debian/ethereum-ropsten.install | 1 + .../debian/ethereum-ropsten.logrotate | 9 ++++ .../ethereum/debian/ethereum-ropsten.postinst | 20 +++++++++ .../ethereum/debian/ethereum-ropsten.service | 42 +++++++++++++++++++ contrib/backends/ethereum/debian/rules | 11 +++++ 18 files changed, 192 insertions(+), 2 deletions(-) create mode 100644 contrib/backends/ethereum/Makefile create mode 100644 contrib/backends/ethereum/debian/changelog create mode 100644 contrib/backends/ethereum/debian/compat create mode 100644 contrib/backends/ethereum/debian/control create mode 100644 contrib/backends/ethereum/debian/ethereum-eth.conffiles create mode 100644 contrib/backends/ethereum/debian/ethereum-eth.dirs create mode 100644 contrib/backends/ethereum/debian/ethereum-eth.install create mode 100644 contrib/backends/ethereum/debian/ethereum-eth.logrotate create mode 100644 contrib/backends/ethereum/debian/ethereum-eth.postinst create mode 100644 contrib/backends/ethereum/debian/ethereum-eth.service create mode 100644 contrib/backends/ethereum/debian/ethereum-ropsten.conffiles create mode 100644 contrib/backends/ethereum/debian/ethereum-ropsten.dirs create mode 100644 contrib/backends/ethereum/debian/ethereum-ropsten.install create mode 100644 contrib/backends/ethereum/debian/ethereum-ropsten.logrotate create mode 100644 contrib/backends/ethereum/debian/ethereum-ropsten.postinst create mode 100644 contrib/backends/ethereum/debian/ethereum-ropsten.service create mode 100755 contrib/backends/ethereum/debian/rules diff --git a/README.md b/README.md index 2652b77c..1bd63bf9 100644 --- a/README.md +++ b/README.md @@ -130,13 +130,14 @@ The data are separated to different column families: | dash | 9033 | 9133 | 8033 | 38333 | | ltc | 9034 | 9134 | 8034 | 38334 | | btg | 9035 | 9135 | 8035 | 38335 | -| eth | 9036 | 9136 | 8036 | | +| eth | 9036 | 9136 | 8036 | 38336* | | etc | 9037 | 9137 | 8037 | | | xem | 9038 | 9138 | 8038 | 38336 | | btc-testnet | 19030 | 19130 | 18030 | 48330 | | bch-testnet | 19031 | 19131 | 18031 | 48331 | | zec-testnet | 19032 | 19132 | 18032 | 48332 | -| eth-testnet | 19036 | 19136 | 18036 | | +| eth-ropsten | 19036 | 19136 | 18036 | 48333* | +\* geth listens on this port, however not as zmq service ## Todo diff --git a/contrib/backends/ethereum/Makefile b/contrib/backends/ethereum/Makefile new file mode 100644 index 00000000..a7a73b56 --- /dev/null +++ b/contrib/backends/ethereum/Makefile @@ -0,0 +1,10 @@ +GETH_VERSION := 1.8.10-eae63c51 + +all: + wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-${GETH_VERSION}.tar.gz + tar -xf geth-linux-amd64-${GETH_VERSION}.tar.gz + mv geth-linux-amd64-${GETH_VERSION} ethereum + +clean: + rm -rf ethereum + rm -f geth-linux-amd64-${GETH_VERSION}.tar.gz* diff --git a/contrib/backends/ethereum/debian/changelog b/contrib/backends/ethereum/debian/changelog new file mode 100644 index 00000000..d0c0c269 --- /dev/null +++ b/contrib/backends/ethereum/debian/changelog @@ -0,0 +1,5 @@ +ethereum (1.8.10-satoshilabs1) unstable; urgency=medium + + * Initial build + + -- Martin Bohm Thu, 31 May 2018 11:12:13 +0200 diff --git a/contrib/backends/ethereum/debian/compat b/contrib/backends/ethereum/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/contrib/backends/ethereum/debian/compat @@ -0,0 +1 @@ +9 diff --git a/contrib/backends/ethereum/debian/control b/contrib/backends/ethereum/debian/control new file mode 100644 index 00000000..1d1f743e --- /dev/null +++ b/contrib/backends/ethereum/debian/control @@ -0,0 +1,16 @@ +Source: ethereum +Section: satoshilabs +Priority: optional +Maintainer: martin.bohm@satoshilabs.com +Build-Depends: debhelper, wget, tar, gzip, make, dh-systemd, dh-exec +Standards-Version: 3.9.5 + +Package: ethereum-eth +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate +Description: Satoshilabs packaged ethereum geth server + +Package: ethereum-ropsten +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate +Description: Satoshilabs packaged ethereum geth server diff --git a/contrib/backends/ethereum/debian/ethereum-eth.conffiles b/contrib/backends/ethereum/debian/ethereum-eth.conffiles new file mode 100644 index 00000000..e69de29b diff --git a/contrib/backends/ethereum/debian/ethereum-eth.dirs b/contrib/backends/ethereum/debian/ethereum-eth.dirs new file mode 100644 index 00000000..abf53edc --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-eth.dirs @@ -0,0 +1 @@ +/opt/coins/data/eth/eth \ No newline at end of file diff --git a/contrib/backends/ethereum/debian/ethereum-eth.install b/contrib/backends/ethereum/debian/ethereum-eth.install new file mode 100644 index 00000000..fb75665c --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-eth.install @@ -0,0 +1 @@ +ethereum/* /opt/coins/nodes/ethereum/eth diff --git a/contrib/backends/ethereum/debian/ethereum-eth.logrotate b/contrib/backends/ethereum/debian/ethereum-eth.logrotate new file mode 100644 index 00000000..4ecb953d --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-eth.logrotate @@ -0,0 +1,9 @@ +/opt/coins/data/eth/eth/eth.log +{ + rotate 7 + daily + compress + missingok + notifempty + copytruncate +} diff --git a/contrib/backends/ethereum/debian/ethereum-eth.postinst b/contrib/backends/ethereum/debian/ethereum-eth.postinst new file mode 100644 index 00000000..acbcc05e --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-eth.postinst @@ -0,0 +1,20 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u ethereum &> /dev/null + then + useradd --system -M -U ethereum -s /bin/false + fi + + if [ "$(stat -c '%U' /opt/coins/data/eth/eth)" != "ethereum" ] + then + chown -R ethereum:ethereum /opt/coins/data/eth/eth + fi + ;; + +esac + +#DEBHELPER# diff --git a/contrib/backends/ethereum/debian/ethereum-eth.service b/contrib/backends/ethereum/debian/ethereum-eth.service new file mode 100644 index 00000000..44521816 --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-eth.service @@ -0,0 +1,42 @@ +# It is not recommended to modify this file in-place, because it will +# be overwritten during package upgrades. If you want to add further +# options or overwrite existing ones then use +# $ systemctl edit blockbook-eth.service +# See "man systemd.service" for details. + +[Unit] +Description=Ethereum daemon (ropsten testnet) +After=network.target + +[Service] +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth/geth --ipcdisable --syncmode full --cache 1024 --datadir /opt/coins/data/eth/eth --port 38336 --ws --wsaddr 0.0.0.0 --wsport 8036 --wsorigins * 2>/opt/coins/data/eth/eth/eth.log' +User=ethereum +Type=simple +Restart=on-failure +WorkingDirectory=/opt/coins/nodes/ethereum/eth + +# Resource limits +LimitNOFILE=500000 + +# Hardening measures +#################### + +# Provide a private /tmp and /var/tmp. +PrivateTmp=true + +# Mount /usr, /boot/ and /etc read-only for the process. +ProtectSystem=full + +# Disallow the process and all of its children to gain +# new privileges through execve(). +NoNewPrivileges=true + +# Use a new /dev namespace only populated with API pseudo devices +# such as /dev/null, /dev/zero and /dev/random. +PrivateDevices=true + +# Deny the creation of writable and executable memory mappings. +MemoryDenyWriteExecute=true + +[Install] +WantedBy=multi-user.target diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.conffiles b/contrib/backends/ethereum/debian/ethereum-ropsten.conffiles new file mode 100644 index 00000000..e69de29b diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.dirs b/contrib/backends/ethereum/debian/ethereum-ropsten.dirs new file mode 100644 index 00000000..fdac20f2 --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.dirs @@ -0,0 +1 @@ +/opt/coins/data/eth-ropsten/eth \ No newline at end of file diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.install b/contrib/backends/ethereum/debian/ethereum-ropsten.install new file mode 100644 index 00000000..ced5fdba --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.install @@ -0,0 +1 @@ +ethereum/* /opt/coins/nodes/ethereum/eth-ropsten diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.logrotate b/contrib/backends/ethereum/debian/ethereum-ropsten.logrotate new file mode 100644 index 00000000..f253afec --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.logrotate @@ -0,0 +1,9 @@ +/opt/coins/data/eth/eth-ropsten/eth.log +{ + rotate 7 + daily + compress + missingok + notifempty + copytruncate +} diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.postinst b/contrib/backends/ethereum/debian/ethereum-ropsten.postinst new file mode 100644 index 00000000..0b509afa --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.postinst @@ -0,0 +1,20 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u ethereum &> /dev/null + then + useradd --system -M -U ethereum -s /bin/false + fi + + if [ "$(stat -c '%U' /opt/coins/data/eth-ropsten/eth)" != "ethereum" ] + then + chown -R ethereum:ethereum /opt/coins/data/eth-ropsten/eth + fi + ;; + +esac + +#DEBHELPER# diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.service b/contrib/backends/ethereum/debian/ethereum-ropsten.service new file mode 100644 index 00000000..b1f68274 --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.service @@ -0,0 +1,42 @@ +# It is not recommended to modify this file in-place, because it will +# be overwritten during package upgrades. If you want to add further +# options or overwrite existing ones then use +# $ systemctl edit blockbook-eth-ropsten.service +# See "man systemd.service" for details. + +[Unit] +Description=Ethereum daemon (mainnet) +After=network.target + +[Service] +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth/geth --ipcdisable --syncmode full --testnet --cache 1024 --datadir /opt/coins/data/eth-ropsten/eth --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins * 2>/opt/coins/data/eth/eth-ropsten/eth.log' +User=ethereum +Type=simple +Restart=on-failure +WorkingDirectory=/opt/coins/nodes/ethereum/eth + +# Resource limits +LimitNOFILE=500000 + +# Hardening measures +#################### + +# Provide a private /tmp and /var/tmp. +PrivateTmp=true + +# Mount /usr, /boot/ and /etc read-only for the process. +ProtectSystem=full + +# Disallow the process and all of its children to gain +# new privileges through execve(). +NoNewPrivileges=true + +# Use a new /dev namespace only populated with API pseudo devices +# such as /dev/null, /dev/zero and /dev/random. +PrivateDevices=true + +# Deny the creation of writable and executable memory mappings. +MemoryDenyWriteExecute=true + +[Install] +WantedBy=multi-user.target diff --git a/contrib/backends/ethereum/debian/rules b/contrib/backends/ethereum/debian/rules new file mode 100755 index 00000000..f69489df --- /dev/null +++ b/contrib/backends/ethereum/debian/rules @@ -0,0 +1,11 @@ +#!/usr/bin/make -f + +DH_VERBOSE = 1 + +%: + dh $@ --with=systemd + +override_dh_systemd_start: + dh_systemd_start --no-start + +override_dh_installinit: From c348bf2d0497c1e30fb76f647f4a915e644d5982 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Thu, 31 May 2018 19:49:08 +0200 Subject: [PATCH 2/5] Add ethereum to backends makefile --- contrib/backends/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/backends/Makefile b/contrib/backends/Makefile index 8331a7bf..f59747d2 100644 --- a/contrib/backends/Makefile +++ b/contrib/backends/Makefile @@ -1,4 +1,4 @@ -TARGETS = bitcoin zcash bcash +TARGETS = bitcoin zcash bcash ethereum IMAGE = blockbook-backend-build-deb NO_CACHE = false From 8a74a989c3e06cd78322eea35a472acd77777ccf Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Thu, 31 May 2018 20:46:43 +0200 Subject: [PATCH 3/5] Override creation of dbgsym package for ethereum backend --- contrib/backends/ethereum/debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/backends/ethereum/debian/rules b/contrib/backends/ethereum/debian/rules index f69489df..12271a0c 100755 --- a/contrib/backends/ethereum/debian/rules +++ b/contrib/backends/ethereum/debian/rules @@ -5,6 +5,8 @@ DH_VERBOSE = 1 %: dh $@ --with=systemd +override_dh_strip: + override_dh_systemd_start: dh_systemd_start --no-start From c95ed87620db19fa1a84f7528639a38888d46ecc Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Thu, 31 May 2018 21:12:48 +0200 Subject: [PATCH 4/5] Fix ethereum backend service descriptors --- contrib/backends/ethereum/debian/ethereum-eth.service | 4 ++-- contrib/backends/ethereum/debian/ethereum-ropsten.service | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/backends/ethereum/debian/ethereum-eth.service b/contrib/backends/ethereum/debian/ethereum-eth.service index 44521816..fb6ff339 100644 --- a/contrib/backends/ethereum/debian/ethereum-eth.service +++ b/contrib/backends/ethereum/debian/ethereum-eth.service @@ -1,11 +1,11 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-eth.service +# $ systemctl edit ethereum-eth.service # See "man systemd.service" for details. [Unit] -Description=Ethereum daemon (ropsten testnet) +Description=Ethereum daemon (mainnet) After=network.target [Service] diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.service b/contrib/backends/ethereum/debian/ethereum-ropsten.service index b1f68274..93fa69e9 100644 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.service +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.service @@ -1,19 +1,19 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-eth-ropsten.service +# $ systemctl edit ethereum-ropsten.service # See "man systemd.service" for details. [Unit] -Description=Ethereum daemon (mainnet) +Description=Ethereum daemon (ropsten testnet) After=network.target [Service] -ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth/geth --ipcdisable --syncmode full --testnet --cache 1024 --datadir /opt/coins/data/eth-ropsten/eth --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins * 2>/opt/coins/data/eth/eth-ropsten/eth.log' +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth-ropsten/geth --ipcdisable --testnet --cache 1024 --datadir /opt/coins/data/eth-ropsten/eth --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins * 2>/opt/coins/data/eth-ropsten/eth/eth.log' User=ethereum Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/nodes/ethereum/eth +WorkingDirectory=/opt/coins/nodes/ethereum/eth-ropsten/ # Resource limits LimitNOFILE=500000 From cb21b880db91d267fcdb8bc19b24d7db36cbf9c6 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Thu, 31 May 2018 22:22:39 +0200 Subject: [PATCH 5/5] Append to log on startup of ethereum backend service --- contrib/backends/ethereum/debian/ethereum-eth.service | 2 +- contrib/backends/ethereum/debian/ethereum-ropsten.service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/backends/ethereum/debian/ethereum-eth.service b/contrib/backends/ethereum/debian/ethereum-eth.service index fb6ff339..9c13f0a1 100644 --- a/contrib/backends/ethereum/debian/ethereum-eth.service +++ b/contrib/backends/ethereum/debian/ethereum-eth.service @@ -9,7 +9,7 @@ Description=Ethereum daemon (mainnet) After=network.target [Service] -ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth/geth --ipcdisable --syncmode full --cache 1024 --datadir /opt/coins/data/eth/eth --port 38336 --ws --wsaddr 0.0.0.0 --wsport 8036 --wsorigins * 2>/opt/coins/data/eth/eth/eth.log' +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth/geth --ipcdisable --syncmode full --cache 1024 --datadir /opt/coins/data/eth/eth --port 38336 --ws --wsaddr 0.0.0.0 --wsport 8036 --wsorigins * 2>>/opt/coins/data/eth/eth/eth.log' User=ethereum Type=simple Restart=on-failure diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.service b/contrib/backends/ethereum/debian/ethereum-ropsten.service index 93fa69e9..7eb55cf7 100644 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.service +++ b/contrib/backends/ethereum/debian/ethereum-ropsten.service @@ -9,7 +9,7 @@ Description=Ethereum daemon (ropsten testnet) After=network.target [Service] -ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth-ropsten/geth --ipcdisable --testnet --cache 1024 --datadir /opt/coins/data/eth-ropsten/eth --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins * 2>/opt/coins/data/eth-ropsten/eth/eth.log' +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth-ropsten/geth --ipcdisable --testnet --cache 1024 --datadir /opt/coins/data/eth-ropsten/eth --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins * 2>>/opt/coins/data/eth-ropsten/eth/eth.log' User=ethereum Type=simple Restart=on-failure