diff --git a/.gitignore b/.gitignore index 4aac773f..66829ef3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -.DS_Store* -code/* +.DS_Store* \ No newline at end of file diff --git a/README.md b/README.md index aa4b243a..8a773ad6 100644 --- a/README.md +++ b/README.md @@ -36,21 +36,21 @@ vps:~ su - pivxd ``` # Todo -<<<<<<< HEAD * rewrite for config templates and provide my Dockerfile & Vagrantfile -======= ->>>>>>> 71c62b0bdc2ba8772d19c73a3941e06f6f087c7f * document the vultr signup and setup procedure * provide a delete / uninstall flag * create a logfile * instert coin images into readme * insert vultr signup reflink +* make scripts idempotent +* write test cases +* implement a binary option (?) * outsource common variables in commin source file * check if masternode user already exists before creation * add all flags everywhere ./configure --disable-dependency-tracking --enable-tests=no --without-gui --without-miniupnpc --with-incompatible-bdb CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" # Errors -* currently not fully idempotent (cfengine?) +* currently not fully idempotent * check if relevant interface already exists (sed) before writing to interfaces file @@ -59,13 +59,8 @@ Ping me at contact@marsmenschen.com for questions and send some crypto my way if **Have fun, this is crypto after all!** ``` BTC 1PboFDkBsW2i968UnehWwcSrM9Djq5LcLB -<<<<<<< HEAD PIVX DQS4rk57bteJ42FSNSPpwqHUoNhx4ywfQc -======= -DNET DBGBYLz484dWBb5wtk5gFVdJ8rGFfcob7R SYNX SSKYwMhQQt9DcWozt7zA1tR3DmRuw1gT6b DASH Xt1W8cVPxnx9xVmfe1yYM9e5DKumPQHaV5 MUE 7KV3NUX4g7rgEDHVfBttRWcxk3hrqGR4pH -MOJO MTfuWof2NMDPh57U18yniVzpaS2cq4nFFt ->>>>>>> 71c62b0bdc2ba8772d19c73a3941e06f6f087c7f -``` +``` \ No newline at end of file diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 00000000..5e4d0070 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,41 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : +Vagrant.configure("2") do |config| + + # The vbguest plugin automatically installs the proper guest utils + # vagrant plugin install vagrant-vbguest + # https://github.com/dotless-de/vagrant-vbguest + if Vagrant.has_plugin?("vbguest") + config.vbguest.auto_update = true + config.vbguest.iso_path = "http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso" + end + + # caching to speed-up box provisioning + # vagrant plugin install vagrant-cachier + # https://github.com/fgrehm/vagrant-cachier + if Vagrant.has_plugin?("vagrant-cachier") + # Configure cached packages to be shared between instances of the same base box. + # More info on http://fgrehm.viewdocs.io/vagrant-cachier/usage + config.cache.scope = :box + end + + # provisioning stuff here + config.vm.box = "ubuntu/xenial64" + config.vm.define "testbox" do |node| + node.vm.hostname = "testbox" + node.vm.provider "virtualbox" do |vb| + vb.gui = false + vb.memory = "3096" + end + node.vm.network "private_network", ip: "10.10.20.10" + node.vm.synced_folder '.', '/vagrant' + node.ssh.forward_agent = true + node.ssh.insert_key = true + # Remove all stdin is not a tty errors + node.vm.provision "fix-no-tty", type: "shell" do |s| + s.privileged = false + s.inline = "sudo sed -i '/tty/!s/mesg n/tty -s \\&\\& mesg n/' /root/.profile" + end + node.vm.provision :shell, :privileged => true, :path => "setup.sh" + end +end diff --git a/config/ent/ent.conf b/config/ent/ent.conf new file mode 100644 index 00000000..ba8217ef --- /dev/null +++ b/config/ent/ent.conf @@ -0,0 +1,12 @@ +rpcuser=XXXXXXXXXXXXX +rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX +rpcallowip=127.0.0.1 +#---- +listen=1 +server=1 +daemon=1 +maxconnections=50 +#-------------------- +masternode=1 +masternodeprivkey=XXXXXXXXXXXXXXXXXXXXXXX +externalip=XXX.XXX.XXX.XXX \ No newline at end of file diff --git a/config/mojo/mojo.env b/config/mojo/mojo.env deleted file mode 100644 index 3196e5dc..00000000 --- a/config/mojo/mojo.env +++ /dev/null @@ -1,5 +0,0 @@ -CODENAME=mojo -SETUP_MNODES_COUNT=${SETUP_MNODES_COUNT:-1} -MNODE_DAEMON=${MNODE_DAEMON:-/usr/local/bin/mojocoind} -GIT_PROJECT=mojo -NETWORK_BASE_TAG="2004" \ No newline at end of file diff --git a/config/mue/mue.conf b/config/mue/mue.conf new file mode 100644 index 00000000..f74134b0 --- /dev/null +++ b/config/mue/mue.conf @@ -0,0 +1,10 @@ +rpcuser=monetaryunitrpc +rpcpassword=HnPdbu2piYSEpcYZnw3eLZqkExAyoA6XAS6V3bPKefkB +rpcallowip=127.0.0.1 +#---- +listen=1 +server=1 +daemon=1 +maxconnections=50 +#-------------------- +masternode=1 \ No newline at end of file diff --git a/config/dnet/dnet.compile b/config/pivx/pivx.compile similarity index 100% rename from config/dnet/dnet.compile rename to config/pivx/pivx.compile diff --git a/config/dnet/dnet.env b/config/pivx/pivx.env similarity index 100% rename from config/dnet/dnet.env rename to config/pivx/pivx.env diff --git a/config/pivx/pivxd.conf b/config/pivx/pivxd.conf new file mode 100755 index 00000000..f80b2cb6 --- /dev/null +++ b/config/pivx/pivxd.conf @@ -0,0 +1,3 @@ +#!/bin/bash +./autogen.sh +./configure --disable-dependency-tracking --enable-tests=no --without-gui --without-miniupnpc --with-incompatible-bdb CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ No newline at end of file diff --git a/config/mojo/mojo.compile b/config/sib/sib.compile similarity index 55% rename from config/mojo/mojo.compile rename to config/sib/sib.compile index d1b63f4d..5416626e 100755 --- a/config/mojo/mojo.compile +++ b/config/sib/sib.compile @@ -1,6 +1,6 @@ #!/bin/bash cd src make -f makefile.unix USE_UPNP=- -#strip mojocoind -cp mojocoind ${MNODE_DAEMON} +#strip sibcoind +cp sibcoind ${MNODE_DAEMON} cd .. \ No newline at end of file diff --git a/config/sib/sib.env b/config/sib/sib.env new file mode 100644 index 00000000..876ca477 --- /dev/null +++ b/config/sib/sib.env @@ -0,0 +1,5 @@ +CODENAME=sib +SETUP_MNODES_COUNT=${SETUP_MNODES_COUNT:-1} +MNODE_DAEMON=${MNODE_DAEMON:-/usr/local/bin/sibcoind} +GIT_PROJECT=sib +NETWORK_BASE_TAG="2004" \ No newline at end of file diff --git a/config/sib/sibcoind.conf b/config/sib/sibcoind.conf new file mode 100755 index 00000000..f80b2cb6 --- /dev/null +++ b/config/sib/sibcoind.conf @@ -0,0 +1,3 @@ +#!/bin/bash +./autogen.sh +./configure --disable-dependency-tracking --enable-tests=no --without-gui --without-miniupnpc --with-incompatible-bdb CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ No newline at end of file diff --git a/docker/ARC/Dockerfile_ARC b/docker/ARC/Dockerfile_ARC new file mode 100644 index 00000000..81b6244f --- /dev/null +++ b/docker/ARC/Dockerfile_ARC @@ -0,0 +1,101 @@ +# +# Dockerfile for a ARC masternode +# usage: docker run marsmensch/masternode-arc:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-arc:latest" -f docker/Dockerfile_BSD . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/arc/arcticcoind.conf:/opt/data "marsmensch/masternode-arc:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-arc:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/arc:/opt/data "marsmensch/masternode-arc:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +#ARG USER_ID +#ARG GROUP_ID + +# SET BUILD VARS TO RUNTIME VARS +#ARG var +#ENV var=${var} + +ENV HOME /bitcoin + +# add user with specified (or default) user/group ids +#ENV USER_ID ${USER_ID:-1000} +#ENV GROUP_ID ${GROUP_ID:-1000} + +ENV CONTAINER_USER masternode +ENV PROJECT arcticcoin +ENV GIT_URL git://github.com/ArcticCore/arcticcoin.git +ENV SVC_VERSION tags/v0.12.1.2 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 7209 +ENV REFRESHED_AT 2017-07-27 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +ENTRYPOINT ["/usr/local/bin/arcticcoind", "screen", "-A", "-m", "-d", "-S", "daemon"] +CMD ["--help"] \ No newline at end of file diff --git a/docker/BLOCK/Dockerfile_BLOCK b/docker/BLOCK/Dockerfile_BLOCK new file mode 100644 index 00000000..711d85e5 --- /dev/null +++ b/docker/BLOCK/Dockerfile_BLOCK @@ -0,0 +1,61 @@ +# +# Dockerfile for a BLOCK servicenode +# usage: docker run marsmensch/servicenode-block:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/servicenode-block:latest" -f docker/Dockerfile_BLOCK . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/block/blockd.conf:/opt/data "marsmensch/servicenode-block:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/servicenode-block:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/block:/opt/data "marsmensch/servicenode-block:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER servicenode +ENV PROJECT blocknet +ENV GIT_URL git://github.com/atcsecure/blocknet.git +ENV SECP_URL git://github.com/bitcoin-core/secp256k1.git +ENV SVC_VERSION xbridge-new-2 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 31337 +ENV REFRESHED_AT 2017-07-28 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ \ + && git clone ${SECP_URL} && cd secp256k1 && ./autogen.sh \ + && ./configure --enable-module-recovery && make && make install \ + && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && cd src && make -f makefile.unix USE_UPNP= \ + && cp blocknetd /usr/local/bin/blocknetd && ldconfig \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +#RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +#USER ${CONTAINER_USER} +#WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/blocknetd", "--help"] \ No newline at end of file diff --git a/docker/BSD/Dockerfile_BSD b/docker/BSD/Dockerfile_BSD new file mode 100644 index 00000000..3b9f42df --- /dev/null +++ b/docker/BSD/Dockerfile_BSD @@ -0,0 +1,87 @@ +# +# Dockerfile for a BSD masternode +# usage: docker run marsmensch/masternode-bsd:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-bsd:latest" -f docker/Dockerfile_BSD . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/bitsend/bitsend.conf:/opt/data "marsmensch/masternode-bsd:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-bsd:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/bitsend:/opt/data "marsmensch/masternode-bsd:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT bitsend +ENV GIT_URL git://github.com/LIMXTEC/BitSend.git +ENV SVC_VERSION master +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 8886 +ENV REFRESHED_AT 2017-07-27 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/bitsendd", "--help"] \ No newline at end of file diff --git a/docker/Builderfile b/docker/Builderfile new file mode 100644 index 00000000..6f913a4e --- /dev/null +++ b/docker/Builderfile @@ -0,0 +1,106 @@ +# ###################### +# Dockerfile for the building of the actual daemons for a masternode +# This builder setup is meant to be pretty generic, multi-step. +# +# usage: docker build -t "marsmensch/masternode-builder:latest" -f Builderfile . +# +# +# + +FROM alpine:edge as builder + +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT pivx +ENV PIVX_VERSION 2.3.0 +ENV DWL_URL https://github.com/PIVX-Project/PIVX/archive/v${PIVX_VERSION}.tar.gz +ENV HOME_DIR /usr/local/bin +ENV REFRESHED_AT 2017-08-09 + +ENV BERKELEYDB_VERSION=db-4.8.30.NC +ENV BERKELEYDB_PREFIX=/opt/${BERKELEYDB_VERSION} + +ENV PIVX_PREFIX /opt/pivx-${PIVX_VERSION} +ENV PIVX_DATA /home/${CONTAINER_USER}/.pivx +ENV PATH ${PIVX_PREFIX}/bin:$PATH + +RUN apk --no-cache --virtual build-dependendencies add autoconf \ + automake \ + boost-dev \ + build-base \ + chrpath \ + file \ + gnupg \ + libevent-dev \ + libtool \ + linux-headers \ + openssl \ + openssl-dev \ + protobuf-dev \ + zeromq-dev \ + && mkdir -p /tmp/build \ + && wget -O /tmp/build/${BERKELEYDB_VERSION}.tar.gz http://download.oracle.com/berkeley-db/${BERKELEYDB_VERSION}.tar.gz \ + && tar -xzf /tmp/build/${BERKELEYDB_VERSION}.tar.gz -C /tmp/build/ \ + && sed s/__atomic_compare_exchange/__atomic_compare_exchange_db/g -i /tmp/build/${BERKELEYDB_VERSION}/dbinc/atomic.h \ + && mkdir -p ${BERKELEYDB_PREFIX} \ + && cd /tmp/build/${BERKELEYDB_VERSION}/build_unix \ + && ../dist/configure --enable-cxx --disable-shared --with-pic --prefix=${BERKELEYDB_PREFIX} \ + && make install \ + && cd /tmp/build \ + && wget -P /tmp/build/ ${DWL_URL} \ + && tar -xzf v${PIVX_VERSION}.tar.gz \ + && cd /tmp/build/PIVX-${PIVX_VERSION} \ + && ./autogen.sh \ + && ./configure LDFLAGS=-L${BERKELEYDB_PREFIX}/lib/ CPPFLAGS=-I${BERKELEYDB_PREFIX}/include/ \ + --prefix=${PIVX_PREFIX} \ + --mandir=/usr/share/man \ + --disable-tests \ + --disable-bench \ + --disable-ccache \ + --with-gui=no \ + --with-utils \ + --with-libs \ + --with-daemon \ + && make install \ + && cd / \ + && strip ${PIVX_PREFIX}/bin/pivx-cli ${PIVX_PREFIX}/bin/pivxd ${PIVX_PREFIX}/bin/pivx-tx ${PIVX_PREFIX}/lib/libbitcoinconsensus.a ${PIVX_PREFIX}/lib/libbitcoinconsensus.so.0.0.0 \ + && rm -rf /tmp/build ${BERKELEYDB_PREFIX}/docs \ + && apk --no-cache --purge del build-dependendencies \ + && apk --no-cache add boost \ + boost-program_options \ + libevent \ + libzmq \ + openssl \ + su-exec + +VOLUME ["/home/masternode/.pivx"] + +######################## + +FROM alpine:edge + +ENV CONTAINER_USER masternode +ENV PIVX_DATA /home/${CONTAINER_USER}/.pivx +ENV NODE_PORT 51472 +ENV PIVX_PREFIX /opt/pivx-${PIVX_VERSION} +ENV PIVX_DATA /home/${CONTAINER_USER}/.pivx +ENV PATH ${PIVX_PREFIX}/bin:$PATH + +RUN apk --no-cache add ca-certificates su-exec libzmq libcrypto1.0 boost-dev libssl1.0 + +RUN adduser -S ${CONTAINER_USER} + +COPY --from=builder /opt/pivx-2.3.0/bin/pivxd . + +COPY docker-entrypoint.sh /entrypoint.sh + +RUN chmod 755 /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +# start command +CMD ["/pivxd"] \ No newline at end of file diff --git a/docker/CRAVE/Dockerfile_CRAVE b/docker/CRAVE/Dockerfile_CRAVE new file mode 100644 index 00000000..0feec375 --- /dev/null +++ b/docker/CRAVE/Dockerfile_CRAVE @@ -0,0 +1,87 @@ +# +# Dockerfile for a CRAVE masternode +# usage: docker run marsmensch/masternode-crave:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-crave:latest" -f docker/Dockerfile_BSD . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/crave/craved.conf:/opt/data "marsmensch/masternode-crave:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-crave:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/crave:/opt/data "marsmensch/masternode-crave:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT crave +ENV GIT_URL git://github.com/CooleRRSA/crave.git +ENV SVC_VERSION tags/v2.1.0.0 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 7209 +ENV REFRESHED_AT 2017-07-27 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/craved", "--help"] \ No newline at end of file diff --git a/docker/DASH/Dockerfile_DASH b/docker/DASH/Dockerfile_DASH new file mode 100644 index 00000000..dcea9803 --- /dev/null +++ b/docker/DASH/Dockerfile_DASH @@ -0,0 +1,87 @@ +# +# Dockerfile for a DASH masternode +# usage: docker run marsmensch/masternode-dash:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-dash:latest" -f docker/Dockerfile_DASH . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/dash/dashd.conf:/opt/data "marsmensch/masternode-dash:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-dash:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/dash:/opt/data "marsmensch/masternode-dash:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT dash +ENV GIT_URL git://github.com/dashpay/dash.git +ENV SVC_VERSION tags/v0.13.0.0 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 9999 +ENV REFRESHED_AT 2017-07-25 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/dashd", "--help"] \ No newline at end of file diff --git a/docker/ENT/Dockerfile_ENT b/docker/ENT/Dockerfile_ENT new file mode 100644 index 00000000..0e7e0779 --- /dev/null +++ b/docker/ENT/Dockerfile_ENT @@ -0,0 +1,88 @@ +# +# Dockerfile for a ENT masternode +# usage: docker run marsmensch/masternode-ent:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-ent:latest" -f docker/Dockerfile_ENT . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/ent/eternityd.conf:/opt/data "marsmensch/masternode-ent:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-ent:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/ent:/opt/data "marsmensch/masternode-ent:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT eternity +ENV GIT_URL git://github.com/eternity-group/eternity.git +ENV SVC_VERSION tags/v0.12.0.61 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 4855 +ENV REFRESHED_AT 2017-07-27 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + # configure & compile + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/eternityd", "--help"] \ No newline at end of file diff --git a/docker/MEME/Dockerfile_MEME b/docker/MEME/Dockerfile_MEME new file mode 100644 index 00000000..81569cba --- /dev/null +++ b/docker/MEME/Dockerfile_MEME @@ -0,0 +1,59 @@ +# +# Dockerfile for a MEME masternode +# usage: docker run marsmensch/masternode-ent:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-meme:latest" -f docker/Dockerfile_MEME . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/meme/memed.conf:/opt/data "marsmensch/masternode-meme:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-meme:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/meme:/opt/data "marsmensch/masternode-meme:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT meme +ENV GIT_URL git://github.com/pepeteam/pepecoin.git +ENV SVC_VERSION tags/2.4.3.2 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 29377 +ENV REFRESHED_AT 2017-07-27 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential protobuf-compiler \ + automake libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev \ + make autoconf libtool git apt-utils libprotobuf-dev pkg-config \ + libcurl3-dev libudev-dev libqt4-dev libqrencode-dev bsdmainutils libqjson-dev libqjson0 \ + libevent-dev libgmp-dev pkg-config \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && cd src && make -f makefile.unix USE_UPNP= && cp pepecoind /usr/local/bin/pepecoind \ + # remove unneeded stuff + && apt-get -y remove build-essential make autoconf libtool git apt-utils \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/pepecoind", "--help"] \ No newline at end of file diff --git a/docker/MUE/Dockerfile_MUE b/docker/MUE/Dockerfile_MUE new file mode 100644 index 00000000..44248807 --- /dev/null +++ b/docker/MUE/Dockerfile_MUE @@ -0,0 +1,62 @@ +# +# Dockerfile for a MUE masternode +# usage: docker run marsmensch/masternode-mue:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-mue:latest" -f docker/Dockerfile_MUE . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/dash/mued.conf:/opt/data "marsmensch/masternode-mue:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-mue:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/sib:/opt/data "marsmensch/masternode-sib:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT monetaryunit +ENV GIT_URL git://github.com/MonetaryUnit/MUE-Src.git +ENV SVC_VERSION tags/v1.0.10.8 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 19683 +ENV REFRESHED_AT 2017-07-26 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential make autoconf libtool git apt-utils \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +ENTRYPOINT ["screen", "-A", "-m", "-d", "-S", "daemon", "/usr/local/bin/arcticcoind"] +CMD ["--help"] \ No newline at end of file diff --git a/docker/PIVX/Dockerfile_PIVX b/docker/PIVX/Dockerfile_PIVX new file mode 100644 index 00000000..f634be98 --- /dev/null +++ b/docker/PIVX/Dockerfile_PIVX @@ -0,0 +1,87 @@ +# +# Dockerfile for a PIVX masternode +# usage: docker run marsmensch/masternode-pivx:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-pivx:latest" -f docker/Dockerfile_PIVX . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} $(PWD)/config/pivx/pivxd.conf:/opt/data "marsmensch/masternode-pivx:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-pivx:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/pivx:/opt/data "marsmensch/masternode-pivx:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT pivx +ENV GIT_URL git://github.com/PIVX-Project/PIVX.git +ENV SVC_VERSION tags/v2.2.1 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 51472 +ENV REFRESHED_AT 2017-07-25 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/pivxd", "--help"] \ No newline at end of file diff --git a/docker/SIB/Dockerfile_SIB b/docker/SIB/Dockerfile_SIB new file mode 100644 index 00000000..3108e88c --- /dev/null +++ b/docker/SIB/Dockerfile_SIB @@ -0,0 +1,87 @@ +# +# Dockerfile for a SIB masternode +# usage: docker run marsmensch/masternode-sib:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-sib:latest" -f docker/Dockerfile_SIB . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/sib/sibd.conf:/opt/data "marsmensch/masternode-sib:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-sib:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/sib:/opt/data "marsmensch/masternode-sib:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT sibcoin +ENV GIT_URL git://github.com/ivansib/sibcoin.git +ENV SVC_VERSION tags/v0.16.1.1 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 1945 +ENV REFRESHED_AT 2017-07-25 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential libtool autotools-dev \ + libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev make autoconf automake \ + libtool git apt-utils libprotobuf-dev pkg-config libboost-filesystem-dev libboost-chrono-dev \ + libevent-dev libboost-program-options-dev libgmp-dev libboost-test-dev libboost-thread-dev \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && ./autogen.sh && ./configure --enable-tests=no --with-incompatible-bdb \ + --enable-glibc-back-compat --with-gui=no \ + CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" \ + && make && make install \ + # remove unneeded stuff + && apt-get -y remove build-essential \ + libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev \ + libboost-chrono-dev libboost-chrono1.58-dev \ + libboost-context-dev libboost-context1.58-dev \ + libboost-coroutine-dev libboost-coroutine1.58-dev \ + libboost-date-time-dev libboost-date-time1.58-dev \ + libboost-dev libboost-exception-dev libboost-exception1.58-dev \ + libboost-filesystem-dev libboost-filesystem1.58-dev \ + libboost-graph-dev libboost-graph-parallel-dev \ + libboost-graph-parallel1.58-dev libboost-graph1.58-dev \ + libboost-iostreams-dev libboost-iostreams1.58-dev libboost-locale-dev \ + libboost-locale1.58-dev libboost-log-dev \ + libboost-log1.58-dev libboost-log1.58.0 libboost-math-dev \ + libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-dev \ + libboost-mpi-python-dev libboost-mpi-python1.58-dev \ + libboost-mpi1.58-dev libboost-program-options-dev \ + libboost-program-options1.58-dev libboost-python-dev \ + libboost-python1.58-dev libboost-random-dev libboost-random1.58-dev \ + libboost-regex-dev libboost-regex1.58-dev libboost-serialization-dev \ + libboost-serialization1.58-dev libboost-signals-dev libboost-signals1.58-dev \ + libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-dev \ + libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-dev \ + libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost1.58-dev \ + libboost1.58-tools-dev libc6-dev libdb5.3++-dev libdb5.3-dev libevent-dev \ + libexpat1-dev libgmp-dev libibverbs-dev libicu-dev libltdl-dev libnuma-dev \ + libopenmpi-dev libprotobuf-dev libpython-dev libpython2.7-dev libssl-dev \ + mpi-default-dev python-dev python2.7-dev zlib1g-dev \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +CMD ["/usr/local/bin/sibcoind", "--help"] \ No newline at end of file diff --git a/docker/SYNX/Dockerfile_SYNX b/docker/SYNX/Dockerfile_SYNX new file mode 100644 index 00000000..a7a94901 --- /dev/null +++ b/docker/SYNX/Dockerfile_SYNX @@ -0,0 +1,62 @@ +# +# Dockerfile for a SYNX masternode +# usage: docker run marsmensch/masternode-dash:latest +# +# how to work with the container +# +# 1) build the container (checkout desired git revision first) +# docker build -t "marsmensch/masternode-synx:latest" -f docker/Dockerfile_SYNX . +# +# 2) start the container +# docker run -p ${NODE_PORT}:${NODE_PORT} -v $(PWD)/config/synx/syndicated.conf:/opt/data "marsmensch/masternode-synx:latest" +# +# 3) start the container interactively +# docker run --interactive --tty --entrypoint=/bin/bash "marsmensch/masternode-synx:latest" +# +# 4) standard help +# docker run -v $(PWD)/config/sib:/opt/data "marsmensch/masternode-synx:latest" + +FROM ubuntu:xenial +MAINTAINER Florian Maier + +ENV CONTAINER_USER masternode +ENV PROJECT syndicate +ENV GIT_URL git://github.com/SyndicateLabs/SyndicateQT.git +ENV SVC_VERSION tags/v1.0.1.8 +ENV HOME_DIR /usr/local/bin +ENV NODE_PORT 9999 +ENV REFRESHED_AT 2017-07-25 + +# add unprivileged user +RUN adduser --shell /bin/bash --disabled-password \ + --disabled-login --gecos '' ${CONTAINER_USER} + +# install system packages and compile +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y install --no-install-recommends build-essential protobuf-compiler \ + automake libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev \ + make autoconf libtool git apt-utils libprotobuf-dev pkg-config \ + libcurl3-dev libudev-dev libqt4-dev libqrencode-dev bsdmainutils libqjson-dev libqjson0 \ + libevent-dev libgmp-dev pkg-config \ + && mkdir -p /opt/code/ && cd /opt/code/ && git clone ${GIT_URL} ${PROJECT} \ + && cd /opt/code/${PROJECT} && git checkout ${SVC_VERSION} \ + && cd src && make -f makefile.unix USE_UPNP= && cp Syndicated /usr/local/bin/syndicated \ + # remove unneeded stuff + && apt-get -y remove build-essential make autoconf libtool git apt-utils \ + && apt -y autoremove \ + && rm -rf /opt/code \ + && rm -rf /var/lib/apt/lists/* + +# add entrypoint +ADD docker_entrypoint.sh /usr/local/bin/ + +# EXPOSE the masternode port +EXPOSE ${NODE_PORT} + +RUN chown -R ${CONTAINER_USER} ${HOME_DIR} +USER ${CONTAINER_USER} +WORKDIR ${HOME_DIR} + +# start command +ENTRYPOINT ["/usr/local/bin/docker_entrypoint.sh"] \ No newline at end of file diff --git a/docker/SYNX/docker_entrypoint.sh b/docker/SYNX/docker_entrypoint.sh new file mode 100644 index 00000000..28872002 --- /dev/null +++ b/docker/SYNX/docker_entrypoint.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -exuo pipefail + +NODE_DIR=/node +NODE_CONF=${NODE_DIR}/node.conf + +# If config doesn't exist, initialize with sane defaults for running a +# non-mining node. + +if [ ! -e "${NODE_CONF}" ]; then + cat >${NODE_CONF} <${NODE_CONF} <&2 - echo usage: `basename $0` '[dnet] OR [mojo] OR [mue] OR [synx] OR [dash] OR [bitsend] + HOWMANY' 1>&2 - echo '=> for 5 dnet masternodes run:' `basename $0` 'dnet 5' 1>&2 + echo usage: `basename $0` '[pivx] OR [mojo] OR [mue] OR [synx] OR [dash] OR [bitsend] + HOWMANY' 1>&2 + echo '=> for 5 pivx masternodes run:' `basename $0` 'pivx 5' 1>&2 echo 'Report bugs to: @marsmensch' exit 1 } @@ -60,13 +52,13 @@ SETUP_CONF_FILE=".config/${1}/${1}.env" SETUP_MNODES_COUNT=${2} case "${1}" in - dnet) - echo you picked DNET - source_config dnet + pivx) + echo you picked PIVX + source_config pivx ;; - mojo) - echo you picked MOJO - source_config mojo + sib) + echo you picked SIB + source_config sib ;; mue) echo you picked MUE @@ -86,4 +78,4 @@ case "${1}" in ;; * ) usage "bad argument $1" ;; -esac \ No newline at end of file +esac diff --git a/scripts/LOCAL_masternode_install.sh b/scripts/masternode_install.sh similarity index 78% rename from scripts/LOCAL_masternode_install.sh rename to scripts/masternode_install.sh index b7f1dee1..22b586c0 100755 --- a/scripts/LOCAL_masternode_install.sh +++ b/scripts/masternode_install.sh @@ -1,42 +1,21 @@ #!/bin/bash -<<<<<<< HEAD:dnet_vps.sh -# ▓█████▄ ▄▄▄ ██▀███ ██ ▄█▀ ███▄ █ ▓█████▄▄▄█████▓ -# ▒██▀ ██▌▒████▄ ▓██ ▒ ██▒ ██▄█▒ ██ ▀█ █ ▓█ ▀▓ ██▒ ▓▒ -# ░██ █▌▒██ ▀█▄ ▓██ ░▄█ ▒▓███▄░ ▓██ ▀█ ██▒▒███ ▒ ▓██░ ▒░ -# ░▓█▄ ▌░██▄▄▄▄██ ▒██▀▀█▄ ▓██ █▄ ▓██▒ ▐▌██▒▒▓█ ▄░ ▓██▓ ░ -# ░▒████▓ ▓█ ▓██▒░██▓ ▒██▒▒██▒ █▄▒██░ ▓██░░▒████▒ ▒██▒ ░ -# ▒▒▓ ▒ ▒▒ ▓▒█░░ ▒▓ ░▒▓░▒ ▒▒ ▓▒░ ▒░ ▒ ▒ ░░ ▒░ ░ ▒ ░░ -# ░ ▒ ▒ ▒ ▒▒ ░ ░▒ ░ ▒░░ ░▒ ▒░░ ░░ ░ ▒░ ░ ░ ░ ░ -# ░ ░ ░ ░ ▒ ░░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ -# ░ -# -# version 0.2-alpha -# date 2016-11-22 -======= # ███╗ ██╗ ██████╗ ██████╗ ███████╗███╗ ███╗ █████╗ ███████╗████████╗███████╗██████╗ # ████╗ ██║██╔═══██╗██╔══██╗██╔════╝████╗ ████║██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗ # ██╔██╗ ██║██║ ██║██║ ██║█████╗ ██╔████╔██║███████║███████╗ ██║ █████╗ ██████╔╝ # ██║╚██╗██║██║ ██║██║ ██║██╔══╝ ██║╚██╔╝██║██╔══██║╚════██║ ██║ ██╔══╝ ██╔══██╗ # ██║ ╚████║╚██████╔╝██████╔╝███████╗██║ ╚═╝ ██║██║ ██║███████║ ██║ ███████╗██║ ██║ # ╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ -# ╚╗ @marsmensch 2016 ╔╝ +# ╚╗ @marsmensch 2016-2017 ╔╝ +# # version 0.3-alpha -# date 2016-08-20 ->>>>>>> 71c62b0bdc2ba8772d19c73a3941e06f6f087c7f:.scripts/masternode_install.sh +# date 2017-07-25 +# # function masternode setup script # This scripts needs to be run as root # to make services start persistent # # Twitter @marsmensch # -# tips -# BTC 1PboFDkBsW2i968UnehWwcSrM9Djq5LcLB -# DNET DBGBYLz484dWBb5wtk5gFVdJ8rGFfcob7R -# SYNX SSKYwMhQQt9DcWozt7zA1tR3DmRuw1gT6b -# DASH Xt1W8cVPxnx9xVmfe1yYM9e5DKumPQHaV5 -# MUE 7KV3NUX4g7rgEDHVfBttRWcxk3hrqGR4pH -# MOJO MTfuWof2NMDPh57U18yniVzpaS2cq4nFFt ######################################## # Dont change anything here if unsure! @@ -88,40 +67,6 @@ function install_packages() { protobuf-compiler libboost-all-dev autotools-dev \ automake libcurl4-openssl-dev libboost-all-dev libssl-dev libdb++-dev \ make autoconf automake libtool git apt-utils libprotobuf-dev pkg-config \ -<<<<<<< HEAD:dnet_vps.sh - libcurl3-dev libudev-dev qtbase5-dev libqt5gui5 libqt5core5a libqt5dbus5 \ - qttools5-dev qttools5-dev-tools libprotobuf-dev libqrencode-dev bsdmainutils -} - -function swaphack() { - # needed because ant servers are ants - rm -f /var/swap.img - dd if=/dev/zero of=/var/swap.img bs=1024k count=3000 - chmod 0600 /var/swap.img - mkswap /var/swap.img - swapon /var/swap.img -} - -function build_mn_from_source() { - # daemon not found compile it - if [ ! -f ${MNODE_DAEMON} ]; then - # if code directory does not exists, we create it clone the src - if [ ! -d /opt/code/${GIT_PROJECT} ]; then - mkdir -p /opt/code && cd /opt/code - git clone ${GIT_URL} ${GIT_PROJECT} - fi - # compilation starts here, parameters later - echo -e "Starting the compilation process, stay tuned" - cd /opt/code/${GIT_PROJECT} && ./autogen.sh - ./configure --enable-tests=no --with-incompatible-bdb --with-gui=qt5 CFLAGS="-march=native" LIBS="-lcurl -lssl -lcrypto -lz" - if make; then - echo "compilation successful, running install and clean target" - make install - else - echo "Damn, compilation failed. Exit!" - exit 1 - fi -======= libcurl3-dev libudev-dev libqrencode-dev bsdmainutils pkg-config libssl-dev \ libgmp3-dev libevent-dev } @@ -130,7 +75,6 @@ function swaphack() { #check if swap is available if free | awk '/^Swap:/ {exit !$2}'; then echo "Already have swap" ->>>>>>> 71c62b0bdc2ba8772d19c73a3941e06f6f087c7f:.scripts/masternode_install.sh else echo "No swap" # needed because ant servers are ants @@ -175,15 +119,6 @@ function build_mn_from_source() { fi } -#function install_mn_packages() { -# # not yet included, testing -# # packages install to /usr/bin, src to /usr/local/bin -# apt-add-repository ppa:shaun-mcbride/darknet -# apt-get update -# apt-get install darknetd -# apt-get install darknet-cli -#} - function prepare_mn_interfaces() { # vultr specific, needed to work sed -ie '/iface eth0 inet6 auto/s/^/#/' ${NETWORK_CONFIG} @@ -322,7 +257,7 @@ cat << "EOF" ██║╚██╗██║██║ ██║██║ ██║██╔══╝ ██║╚██╔╝██║██╔══██║╚════██║ ██║ ██╔══╝ ██╔══██╗ ██║ ╚████║╚██████╔╝██████╔╝███████╗██║ ╚═╝ ██║██║ ██║███████║ ██║ ███████╗██║ ██║ ╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ - ╚╗ @marsmensch 2016 ╔╝ + ╚╗ @marsmensch 2016-2017 ╔╝ EOF } diff --git a/setup.sh b/setup.sh new file mode 100755 index 00000000..a5a8611e --- /dev/null +++ b/setup.sh @@ -0,0 +1,33 @@ +#!/bin/bash -eux + +# Useful variables +DATE_STAMP="$(date +%y-%m-%d-%s)" + +function check_distro() { + # currently only for Ubuntu 16.04 + if [[ -r /etc/os-release ]]; then + . /etc/os-release + if [[ "${VERSION_ID}" != "16.04" ]]; then + echo "This script only supports ubuntu 16.04 LTS, exiting." + exit 1 + fi + else + # no, thats not ok! + echo "This script only supports ubuntu 16.04 LTS, exiting." + exit 1 + fi +} + +function install_base_packages() { + echo "Package installation!" + apt-get -qq update + apt-get -qqy -o=Dpkg::Use-Pty=0 install curl wget pwgen jq httpie sl tmux +} + +main() { + #showbanner + check_distro + install_base_packages +} + +main "$@" \ No newline at end of file