From 6f535d575d134cb1696c7aa218419b0b681eb5e4 Mon Sep 17 00:00:00 2001 From: kexkey Date: Thu, 11 Oct 2018 13:45:51 -0400 Subject: [PATCH 1/5] Removed user on build, added user on run --- doc/INSTALL-MANUAL-STEPS.md | 36 ++++++++-------- doc/INSTALL.md | 2 +- docker-compose.yml | 12 ++++-- proxy_docker/Dockerfile | 82 +++++++++++++++++++------------------ proxy_docker/README.md | 16 ++------ proxy_docker/env.properties | 4 +- pycoin_docker/Dockerfile | 38 +++++++++-------- pycoin_docker/README.md | 2 +- 8 files changed, 96 insertions(+), 96 deletions(-) diff --git a/doc/INSTALL-MANUAL-STEPS.md b/doc/INSTALL-MANUAL-STEPS.md index a605ca4..50f00d2 100644 --- a/doc/INSTALL-MANUAL-STEPS.md +++ b/doc/INSTALL-MANUAL-STEPS.md @@ -49,8 +49,8 @@ vi pycoin_docker/env.properties sudo useradd cyphernode mkdir ~/btcproxydb ; sudo chown -R cyphernode:debian ~/btcproxydb ; sudo chmod g+ws ~/btcproxydb docker build -t proxycronimg cron_docker/. -docker build -t btcproxyimg --build-arg USER_ID=$(id -u cyphernode) --build-arg GROUP_ID=$(id -g cyphernode) proxy_docker/. -docker build -t pycoinimg --build-arg USER_ID=$(id -u cyphernode) --build-arg GROUP_ID=$(id -g cyphernode) pycoin_docker/. +docker build -t btcproxyimg proxy_docker/. +docker build -t pycoinimg pycoin_docker/. ``` ## Build images from Satoshi Portal's dockers repo @@ -75,16 +75,16 @@ rpcwallet=ln01.dat ```shell vi config -mkdir ~/.lightning -cp config ~/.lightning/ -sudo chown -R cyphernode:debian ~/.lightning ; sudo chmod g+ws ~/.lightning -sudo find ~/.lightning -type d -exec chmod 2775 {} \; ; sudo find ~/.lightning -type f -exec chmod g+rw {} \; -docker build -t clnimg --build-arg USER_ID=$(id -u cyphernode) --build-arg GROUP_ID=$(id -g cyphernode) . +mkdir ~/lndata +cp config ~/lndata/ +sudo chown -R cyphernode:debian ~/lndata ; sudo chmod g+ws ~/lndata +sudo find ~/lndata -type d -exec chmod 2775 {} \; ; sudo find ~/lndata -type f -exec chmod g+rw {} \; +docker build -t clnimg . cd ../../bitcoin-core/ -mkdir ~/.bitcoin -sudo chown -R cyphernode:debian ~/.bitcoin ; sudo chmod g+ws ~/.bitcoin -sudo find ~/.bitcoin -type d -exec chmod 2775 {} \; ; sudo find ~/.bitcoin -type f -exec chmod g+rw {} \; -docker build -t btcnode --build-arg USER_ID=$(id -u cyphernode) --build-arg GROUP_ID=$(id -g cyphernode) --build-arg CORE_VERSION="0.16.3" . +mkdir ~/btcdata +sudo chown -R cyphernode:debian ~/btcdata ; sudo chmod g+ws ~/btcdata +sudo find ~/btcdata -type d -exec chmod 2775 {} \; ; sudo find ~/btcdata -type f -exec chmod g+rw {} \; +docker build -t btcnode . ``` ## Mount bitcoin data volume and make sure bitcoin configuration is ok @@ -92,8 +92,8 @@ docker build -t btcnode --build-arg USER_ID=$(id -u cyphernode) --build-arg GROU (Watcher and spender is the same bitcoin node, with different wallets) ```shell -sudo mount /dev/vdc ~/.bitcoin/ -vi ~/.bitcoin/bitcoin.conf +sudo mount /dev/vdc ~/btcdata/ +vi ~/btcdata/bitcoin.conf ``` *Make sure testnet, rpcuser and rpcpassword have the same value as in c-lightning node's bitcoin.conf file (see above)* @@ -119,16 +119,16 @@ walletnotify=curl cyphernode:8888/conf/%s ```shell cd ~/cyphernode/ -docker stack deploy --compose-file docker-compose.yml cyphernodestack +USER=`id -u cyphernode`:`id -g cyphernode` docker stack deploy --compose-file docker-compose.yml cyphernodestack ``` ## Wait a few minutes and re-apply permissions ```shell -sudo chown -R cyphernode:debian ~/.lightning ; sudo chmod g+ws ~/.lightning -sudo chown -R cyphernode:debian ~/.bitcoin ; sudo chmod g+ws ~/.bitcoin -sudo find ~/.lightning -type d -exec chmod 2775 {} \; ; sudo find ~/.lightning -type f -exec chmod g+rw {} \; -sudo find ~/.bitcoin -type d -exec chmod 2775 {} \; ; sudo find ~/.bitcoin -type f -exec chmod g+rw {} \; +sudo chown -R cyphernode:debian ~/lndata ; sudo chmod g+ws ~/lndata +sudo chown -R cyphernode:debian ~/btcdata ; sudo chmod g+ws ~/btcdata +sudo find ~/lndata -type d -exec chmod 2775 {} \; ; sudo find ~/lndata -type f -exec chmod g+rw {} \; +sudo find ~/btcdata -type d -exec chmod 2775 {} \; ; sudo find ~/btcdata -type f -exec chmod g+rw {} \; ``` ## Test the deployment diff --git a/doc/INSTALL.md b/doc/INSTALL.md index 8f451fc..713fdae 100644 --- a/doc/INSTALL.md +++ b/doc/INSTALL.md @@ -81,7 +81,7 @@ debian@dev:~/dev/Cyphernode$ vi pycoin_docker/env.properties **Edit docker-compose.yml to specify special deployment constraints or if you want to run the Bitcoin node on the same machine: uncomment corresponding lines.** ```shell -debian@dev:~/dev/Cyphernode$ docker stack deploy --compose-file docker-compose.yml cyphernodestack +debian@dev:~/dev/Cyphernode$ USER=`id -u cyphernode`:`id -g cyphernode` docker stack deploy --compose-file docker-compose.yml cyphernodestack Creating service cyphernodestack_cyphernode Creating service cyphernodestack_proxycronnode Creating service cyphernodestack_pycoinnode diff --git a/docker-compose.yml b/docker-compose.yml index 41cb8f9..ecb9dd0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,11 +11,12 @@ services: volumes: # Variable substitutions don't work # Match with DB_PATH in proxy_docker/env.properties - - "~/btcproxydb:/proxyuser/db" - - "~/.lightning:/proxyuser/.lightning" + - "~/btcproxydb:/proxy/db" + - "~/lndata:/proxy/.lightning" # deploy: # placement: # constraints: [node.hostname==dev] + command: $USER /proxy/startproxy.sh networks: - cyphernodenet @@ -40,6 +41,7 @@ services: # deploy: # placement: # constraints: [node.hostname==dev] + command: $USER /pycoin/startpycoin.sh networks: - cyphernodenet @@ -49,10 +51,11 @@ services: ports: - "9735:9735" volumes: - - "~/.lightning:/lnuser/.lightning" + - "~/lndata:/.lightning" # deploy: # placement: # constraints: [node.hostname==dev] + command: $USER lightningd networks: - cyphernodenet @@ -66,7 +69,8 @@ services: # - "8333:8333" # - "8332:8332" volumes: - - "~/.bitcoin:/bitcoinuser/.bitcoin" + - "~/btcdata:/.bitcoin" + command: $USER bitcoind networks: - cyphernodenet diff --git a/proxy_docker/Dockerfile b/proxy_docker/Dockerfile index 521d3d5..a348657 100644 --- a/proxy_docker/Dockerfile +++ b/proxy_docker/Dockerfile @@ -1,56 +1,58 @@ FROM alpine -ARG USER_ID -ARG GROUP_ID -ENV USERNAME proxyuser -ENV HOME /${USERNAME} -ENV USER_ID ${USER_ID:-1000} -ENV GROUP_ID ${GROUP_ID:-1000} +#ARG USER_ID +#ARG GROUP_ID +#ENV USERNAME proxyuser +ENV HOME /proxy +#ENV USER_ID ${USER_ID:-1000} +#ENV GROUP_ID ${GROUP_ID:-1000} -RUN addgroup -g ${GROUP_ID} ${USERNAME} \ - && adduser -u ${USER_ID} -G ${USERNAME} -D -s /bin/sh -h ${HOME} ${USERNAME} +#RUN addgroup -g ${GROUP_ID} ${USERNAME} \ +# && adduser -u ${USER_ID} -G ${USERNAME} -D -s /bin/sh -h ${HOME} ${USERNAME} RUN apk add --update --no-cache \ sqlite \ jq \ - curl + curl \ + su-exec -COPY --chown=proxyuser app/script/callbacks_job.sh ${HOME}/callbacks_job.sh -COPY --chown=proxyuser app/script/blockchainrpc.sh ${HOME}/blockchainrpc.sh -COPY --chown=proxyuser app/script/call_lightningd.sh ${HOME}/call_lightningd.sh -COPY --chown=proxyuser app/script/bitcoin.sh ${HOME}/bitcoin.sh -COPY --chown=proxyuser app/script/requesthandler.sh ${HOME}/requesthandler.sh -COPY --chown=proxyuser app/script/watchrequest.sh ${HOME}/watchrequest.sh -COPY --chown=proxyuser app/script/walletoperations.sh ${HOME}/walletoperations.sh -COPY --chown=proxyuser app/script/confirmation.sh ${HOME}/confirmation.sh -COPY --chown=proxyuser app/config/watcher_btcnode_curlcfg.properties ${HOME}/watcher_btcnode_curlcfg.properties -COPY --chown=proxyuser app/config/spender_btcnode_curlcfg.properties ${HOME}/spender_btcnode_curlcfg.properties -COPY --chown=proxyuser app/config/config.properties ${HOME}/config.properties -COPY --chown=proxyuser app/script/startproxy.sh ${HOME}/startproxy.sh -COPY --chown=proxyuser app/script/trace.sh ${HOME}/trace.sh -COPY --chown=proxyuser app/script/sendtobitcoinnode.sh ${HOME}/sendtobitcoinnode.sh -COPY --chown=proxyuser app/script/responsetoclient.sh ${HOME}/responsetoclient.sh -COPY --chown=proxyuser app/script/importaddress.sh ${HOME}/importaddress.sh -COPY --chown=proxyuser app/script/sql.sh ${HOME}/sql.sh -COPY --chown=proxyuser app/data/watching.sql ${HOME}/watching.sql -COPY --chown=proxyuser app/script/computefees.sh ${HOME}/computefees.sh -COPY --chown=proxyuser app/script/unwatchrequest.sh ${HOME}/unwatchrequest.sh -COPY --chown=proxyuser app/script/getactivewatches.sh ${HOME}/getactivewatches.sh -COPY --chown=proxyuser app/script/utils.sh ${HOME}/utils.sh -COPY --chown=proxyuser app/script/manage_missed_conf.sh ${HOME}/manage_missed_conf.sh -COPY --chown=proxyuser app/script/tests.sh ${HOME}/tests.sh -COPY --chown=proxyuser app/script/tests-cb.sh ${HOME}/tests-cb.sh -COPY --chown=proxyuser app/bin/lightning-cli_x86 ${HOME}/lightning-cli +COPY app/script/callbacks_job.sh ${HOME}/callbacks_job.sh +COPY app/script/blockchainrpc.sh ${HOME}/blockchainrpc.sh +COPY app/script/call_lightningd.sh ${HOME}/call_lightningd.sh +COPY app/script/bitcoin.sh ${HOME}/bitcoin.sh +COPY app/script/requesthandler.sh ${HOME}/requesthandler.sh +COPY app/script/watchrequest.sh ${HOME}/watchrequest.sh +COPY app/script/walletoperations.sh ${HOME}/walletoperations.sh +COPY app/script/confirmation.sh ${HOME}/confirmation.sh +COPY app/config/watcher_btcnode_curlcfg.properties ${HOME}/watcher_btcnode_curlcfg.properties +COPY app/config/spender_btcnode_curlcfg.properties ${HOME}/spender_btcnode_curlcfg.properties +COPY app/config/config.properties ${HOME}/config.properties +COPY app/script/startproxy.sh ${HOME}/startproxy.sh +COPY app/script/trace.sh ${HOME}/trace.sh +COPY app/script/sendtobitcoinnode.sh ${HOME}/sendtobitcoinnode.sh +COPY app/script/responsetoclient.sh ${HOME}/responsetoclient.sh +COPY app/script/importaddress.sh ${HOME}/importaddress.sh +COPY app/script/sql.sh ${HOME}/sql.sh +COPY app/data/watching.sql ${HOME}/watching.sql +COPY app/script/computefees.sh ${HOME}/computefees.sh +COPY app/script/unwatchrequest.sh ${HOME}/unwatchrequest.sh +COPY app/script/getactivewatches.sh ${HOME}/getactivewatches.sh +COPY app/script/utils.sh ${HOME}/utils.sh +COPY app/script/manage_missed_conf.sh ${HOME}/manage_missed_conf.sh +COPY app/script/tests.sh ${HOME}/tests.sh +COPY app/script/tests-cb.sh ${HOME}/tests-cb.sh +COPY app/bin/lightning-cli_x86 ${HOME}/lightning-cli -USER ${USERNAME} +#USER ${USERNAME} WORKDIR ${HOME} RUN chmod +x startproxy.sh requesthandler.sh lightning-cli \ - && chmod 600 watcher_btcnode_curlcfg.properties \ - && chmod 600 spender_btcnode_curlcfg.properties \ - && chmod 600 config.properties \ +# && chmod 600 watcher_btcnode_curlcfg.properties \ +# && chmod 600 spender_btcnode_curlcfg.properties \ +# && chmod 600 config.properties \ && mkdir db VOLUME ["${HOME}/db", "${HOME}/.lightning"] -ENTRYPOINT ["./startproxy.sh"] +ENTRYPOINT ["su-exec"] +#CMD ["./startproxy.sh"] diff --git a/proxy_docker/README.md b/proxy_docker/README.md index 5f34389..8f16575 100644 --- a/proxy_docker/README.md +++ b/proxy_docker/README.md @@ -2,14 +2,6 @@ We assume you are the user pi on a Raspberry Pi. -## Create proxyuser that will run the processes - -Log in your host and: - -```shell -sudo useradd proxyuser -``` - ## Configure your container by modifying `env.properties` file ```properties @@ -18,8 +10,8 @@ WATCHER_BTC_NODE_RPC_URL=btcnode:18332/wallet/watching01.dat SPENDER_BTC_NODE_RPC_URL=btcnode:18332/wallet/spending01.dat PROXY_LISTENING_PORT=8888 # Variable substitutions don't work -DB_PATH=/proxyuser/db -DB_FILE=/proxyuser/db/proxydb +DB_PATH=/proxy/db +DB_FILE=/proxy/db/proxydb # Pycoin container PYCOIN_CONTAINER=pycoinnode:7777 # OTS container @@ -49,13 +41,13 @@ watchingnode.pruned=false ## Building docker image ```shell -docker build -t btcproxyimg --build-arg USER_ID=$(id -u proxyuser) --build-arg GROUP_ID=$(id -g proxyuser) . +docker build -t btcproxyimg . ``` ## Create sqlite3 database path and give rights ```shell -mkdir ~/btcproxydb ; sudo chown -R proxyuser:pi ~/btcproxydb ; sudo chmod g+ws ~/btcproxydb +mkdir ~/btcproxydb ; sudo chown -R cyphernode:pi ~/btcproxydb ; sudo chmod g+ws ~/btcproxydb ``` ## What you MUST have in your Watching Bitcoin node's bitcoin.conf file diff --git a/proxy_docker/env.properties b/proxy_docker/env.properties index 3e7dcbf..fb69418 100644 --- a/proxy_docker/env.properties +++ b/proxy_docker/env.properties @@ -3,8 +3,8 @@ WATCHER_BTC_NODE_RPC_URL=btcnode:18332/wallet/watching01.dat SPENDER_BTC_NODE_RPC_URL=btcnode:18332/wallet/spending01.dat PROXY_LISTENING_PORT=8888 # Variable substitutions don't work -DB_PATH=/proxyuser/db -DB_FILE=/proxyuser/db/proxydb +DB_PATH=/proxy/db +DB_FILE=/proxy/db/proxydb # Pycoin container PYCOIN_CONTAINER=pycoinnode:7777 # OTS container diff --git a/pycoin_docker/Dockerfile b/pycoin_docker/Dockerfile index 410f5af..4f2fcc1 100644 --- a/pycoin_docker/Dockerfile +++ b/pycoin_docker/Dockerfile @@ -1,31 +1,33 @@ #FROM resin/raspberry-pi-alpine-python:3.6 FROM python:3.6-alpine -ARG USER_ID -ARG GROUP_ID -ENV USERNAME proxyuser -ENV HOME /${USERNAME} -ENV USER_ID ${USER_ID:-1000} -ENV GROUP_ID ${GROUP_ID:-1000} +#ARG USER_ID +#ARG GROUP_ID +#ENV USERNAME proxyuser +ENV HOME /pycoin +#ENV USER_ID ${USER_ID:-1000} +#ENV GROUP_ID ${GROUP_ID:-1000} -RUN addgroup -g ${GROUP_ID} ${USERNAME} \ - && adduser -u ${USER_ID} -G ${USERNAME} -D -s /bin/sh -h ${HOME} ${USERNAME} +#RUN addgroup -g ${GROUP_ID} ${USERNAME} \ +# && adduser -u ${USER_ID} -G ${USERNAME} -D -s /bin/sh -h ${HOME} ${USERNAME} -RUN apk add --update --no-cache git jq \ +RUN apk add --update --no-cache git jq su-exec \ && pip install --no-cache-dir pycoin \ -&& cd \ +&& cd / \ && git clone https://github.com/Kexkey/pycoin.git \ -&& cp -rf pycoin/pycoin/* /usr/local/lib/python3.6/site-packages/pycoin +&& cp -rf pycoin/pycoin/* /usr/local/lib/python3.6/site-packages/pycoin \ +&& rm -rf pycoin/* -COPY --chown=proxyuser script/pycoin.sh ${HOME}/pycoin.sh -COPY --chown=proxyuser script/requesthandler.sh ${HOME}/requesthandler.sh -COPY --chown=proxyuser script/responsetoclient.sh ${HOME}/responsetoclient.sh -COPY --chown=proxyuser script/startpycoin.sh ${HOME}/startpycoin.sh -COPY --chown=proxyuser script/trace.sh ${HOME}/trace.sh +COPY script/pycoin.sh ${HOME}/pycoin.sh +COPY script/requesthandler.sh ${HOME}/requesthandler.sh +COPY script/responsetoclient.sh ${HOME}/responsetoclient.sh +COPY script/startpycoin.sh ${HOME}/startpycoin.sh +COPY script/trace.sh ${HOME}/trace.sh -USER ${USERNAME} +#USER ${USERNAME} WORKDIR ${HOME} RUN chmod +x startpycoin.sh requesthandler.sh -ENTRYPOINT ["./startpycoin.sh"] +ENTRYPOINT ["su-exec"] +#CMD ["./startpycoin.sh"] diff --git a/pycoin_docker/README.md b/pycoin_docker/README.md index 6e2c6dc..5f00b5d 100644 --- a/pycoin_docker/README.md +++ b/pycoin_docker/README.md @@ -1,7 +1,7 @@ # Build image ```shell -docker build -t pycoinimg --build-arg USER_ID=$(id -u proxyuser) --build-arg GROUP_ID=$(id -g proxyuser) . +docker build -t pycoinimg . ``` # Usefull examples From 7f9ebe6bb0bbf0de6d302a5d2041d94d2870778a Mon Sep 17 00:00:00 2001 From: kexkey Date: Thu, 11 Oct 2018 14:59:10 -0400 Subject: [PATCH 2/5] Removed comments --- proxy_docker/Dockerfile | 13 ------------- pycoin_docker/Dockerfile | 20 +++++--------------- 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/proxy_docker/Dockerfile b/proxy_docker/Dockerfile index a348657..bfb06e5 100644 --- a/proxy_docker/Dockerfile +++ b/proxy_docker/Dockerfile @@ -1,14 +1,6 @@ FROM alpine -#ARG USER_ID -#ARG GROUP_ID -#ENV USERNAME proxyuser ENV HOME /proxy -#ENV USER_ID ${USER_ID:-1000} -#ENV GROUP_ID ${GROUP_ID:-1000} - -#RUN addgroup -g ${GROUP_ID} ${USERNAME} \ -# && adduser -u ${USER_ID} -G ${USERNAME} -D -s /bin/sh -h ${HOME} ${USERNAME} RUN apk add --update --no-cache \ sqlite \ @@ -43,16 +35,11 @@ COPY app/script/tests.sh ${HOME}/tests.sh COPY app/script/tests-cb.sh ${HOME}/tests-cb.sh COPY app/bin/lightning-cli_x86 ${HOME}/lightning-cli -#USER ${USERNAME} WORKDIR ${HOME} RUN chmod +x startproxy.sh requesthandler.sh lightning-cli \ -# && chmod 600 watcher_btcnode_curlcfg.properties \ -# && chmod 600 spender_btcnode_curlcfg.properties \ -# && chmod 600 config.properties \ && mkdir db VOLUME ["${HOME}/db", "${HOME}/.lightning"] ENTRYPOINT ["su-exec"] -#CMD ["./startproxy.sh"] diff --git a/pycoin_docker/Dockerfile b/pycoin_docker/Dockerfile index 4f2fcc1..5e74852 100644 --- a/pycoin_docker/Dockerfile +++ b/pycoin_docker/Dockerfile @@ -1,22 +1,14 @@ #FROM resin/raspberry-pi-alpine-python:3.6 FROM python:3.6-alpine -#ARG USER_ID -#ARG GROUP_ID -#ENV USERNAME proxyuser ENV HOME /pycoin -#ENV USER_ID ${USER_ID:-1000} -#ENV GROUP_ID ${GROUP_ID:-1000} - -#RUN addgroup -g ${GROUP_ID} ${USERNAME} \ -# && adduser -u ${USER_ID} -G ${USERNAME} -D -s /bin/sh -h ${HOME} ${USERNAME} RUN apk add --update --no-cache git jq su-exec \ -&& pip install --no-cache-dir pycoin \ -&& cd / \ -&& git clone https://github.com/Kexkey/pycoin.git \ -&& cp -rf pycoin/pycoin/* /usr/local/lib/python3.6/site-packages/pycoin \ -&& rm -rf pycoin/* + && pip install --no-cache-dir pycoin \ + && cd / \ + && git clone https://github.com/Kexkey/pycoin.git \ + && cp -rf pycoin/pycoin/* /usr/local/lib/python3.6/site-packages/pycoin \ + && rm -rf pycoin/* COPY script/pycoin.sh ${HOME}/pycoin.sh COPY script/requesthandler.sh ${HOME}/requesthandler.sh @@ -24,10 +16,8 @@ COPY script/responsetoclient.sh ${HOME}/responsetoclient.sh COPY script/startpycoin.sh ${HOME}/startpycoin.sh COPY script/trace.sh ${HOME}/trace.sh -#USER ${USERNAME} WORKDIR ${HOME} RUN chmod +x startpycoin.sh requesthandler.sh ENTRYPOINT ["su-exec"] -#CMD ["./startpycoin.sh"] From 74e4fc9fbf83b852731743716fda934a3de89c9e Mon Sep 17 00:00:00 2001 From: kexkey Date: Thu, 11 Oct 2018 16:02:15 -0400 Subject: [PATCH 3/5] Fixed cln directory and some permission issues --- docker-compose.yml | 7 ++++--- proxy_docker/Dockerfile | 1 + proxy_docker/app/script/trace.sh | 4 ++-- proxy_docker/env.properties | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index ecb9dd0..54ae02f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,11 +12,12 @@ services: # Variable substitutions don't work # Match with DB_PATH in proxy_docker/env.properties - "~/btcproxydb:/proxy/db" - - "~/lndata:/proxy/.lightning" + # c-lightning looks for $HOME/.lightning/, and $HOME is set to / in the container + - "~/lndata:/.lightning" # deploy: # placement: # constraints: [node.hostname==dev] - command: $USER /proxy/startproxy.sh + command: $USER ./startproxy.sh networks: - cyphernodenet @@ -41,7 +42,7 @@ services: # deploy: # placement: # constraints: [node.hostname==dev] - command: $USER /pycoin/startpycoin.sh + command: $USER ./startpycoin.sh networks: - cyphernodenet diff --git a/proxy_docker/Dockerfile b/proxy_docker/Dockerfile index bfb06e5..8baa72d 100644 --- a/proxy_docker/Dockerfile +++ b/proxy_docker/Dockerfile @@ -38,6 +38,7 @@ COPY app/bin/lightning-cli_x86 ${HOME}/lightning-cli WORKDIR ${HOME} RUN chmod +x startproxy.sh requesthandler.sh lightning-cli \ + && chmod o+w . \ && mkdir db VOLUME ["${HOME}/db", "${HOME}/.lightning"] diff --git a/proxy_docker/app/script/trace.sh b/proxy_docker/app/script/trace.sh index 9ff1b50..680f3f2 100644 --- a/proxy_docker/app/script/trace.sh +++ b/proxy_docker/app/script/trace.sh @@ -3,13 +3,13 @@ trace() { if [ -n "${TRACING}" ]; then - echo "$(date -Is) ${1}" > /dev/stderr + echo "$(date -Is) ${1}" 1>&2 fi } trace_rc() { if [ -n "${TRACING}" ]; then - echo "$(date -Is) Last return code: ${1}" > /dev/stderr + echo "$(date -Is) Last return code: ${1}" 1>&2 fi } diff --git a/proxy_docker/env.properties b/proxy_docker/env.properties index fb69418..da95f88 100644 --- a/proxy_docker/env.properties +++ b/proxy_docker/env.properties @@ -3,6 +3,7 @@ WATCHER_BTC_NODE_RPC_URL=btcnode:18332/wallet/watching01.dat SPENDER_BTC_NODE_RPC_URL=btcnode:18332/wallet/spending01.dat PROXY_LISTENING_PORT=8888 # Variable substitutions don't work +HOME=/proxy DB_PATH=/proxy/db DB_FILE=/proxy/db/proxydb # Pycoin container From e1ee3674303ea2518ab9e6d32719d4cff82fa419 Mon Sep 17 00:00:00 2001 From: Markus Wolf Date: Fri, 12 Oct 2018 20:10:31 +0300 Subject: [PATCH 4/5] moved configs into environment (#17) * moved configs into environment * fixed copy pasta * changed proxyuser to proxy in data paths * fixed typo --- proxy_docker/Dockerfile | 4 --- proxy_docker/app/config/config.properties | 3 --- .../config/spender_btcnode_curlcfg.properties | 1 - .../config/watcher_btcnode_curlcfg.properties | 1 - proxy_docker/app/script/bitcoin.sh | 7 +++-- proxy_docker/app/script/computefees.sh | 2 +- proxy_docker/app/script/startproxy.sh | 26 +++++++++++++++++++ proxy_docker/env.properties | 9 ++++++- 8 files changed, 38 insertions(+), 15 deletions(-) delete mode 100644 proxy_docker/app/config/config.properties delete mode 100644 proxy_docker/app/config/spender_btcnode_curlcfg.properties delete mode 100644 proxy_docker/app/config/watcher_btcnode_curlcfg.properties diff --git a/proxy_docker/Dockerfile b/proxy_docker/Dockerfile index 8baa72d..e49980e 100644 --- a/proxy_docker/Dockerfile +++ b/proxy_docker/Dockerfile @@ -16,9 +16,6 @@ COPY app/script/requesthandler.sh ${HOME}/requesthandler.sh COPY app/script/watchrequest.sh ${HOME}/watchrequest.sh COPY app/script/walletoperations.sh ${HOME}/walletoperations.sh COPY app/script/confirmation.sh ${HOME}/confirmation.sh -COPY app/config/watcher_btcnode_curlcfg.properties ${HOME}/watcher_btcnode_curlcfg.properties -COPY app/config/spender_btcnode_curlcfg.properties ${HOME}/spender_btcnode_curlcfg.properties -COPY app/config/config.properties ${HOME}/config.properties COPY app/script/startproxy.sh ${HOME}/startproxy.sh COPY app/script/trace.sh ${HOME}/trace.sh COPY app/script/sendtobitcoinnode.sh ${HOME}/sendtobitcoinnode.sh @@ -29,7 +26,6 @@ COPY app/data/watching.sql ${HOME}/watching.sql COPY app/script/computefees.sh ${HOME}/computefees.sh COPY app/script/unwatchrequest.sh ${HOME}/unwatchrequest.sh COPY app/script/getactivewatches.sh ${HOME}/getactivewatches.sh -COPY app/script/utils.sh ${HOME}/utils.sh COPY app/script/manage_missed_conf.sh ${HOME}/manage_missed_conf.sh COPY app/script/tests.sh ${HOME}/tests.sh COPY app/script/tests-cb.sh ${HOME}/tests-cb.sh diff --git a/proxy_docker/app/config/config.properties b/proxy_docker/app/config/config.properties deleted file mode 100644 index 56d0ada..0000000 --- a/proxy_docker/app/config/config.properties +++ /dev/null @@ -1,3 +0,0 @@ -derivation.pub32=upub5GtUcgGed1aGH4HKQ3vMYrsmLXwmHhS1AeX33ZvDgZiyvkGhNTvGd2TA5Lr4v239Fzjj4ZY48t6wTtXUy2yRgapf37QHgt6KWEZ6bgsCLpb -derivation.path=0/n -watchingnode.pruned=false diff --git a/proxy_docker/app/config/spender_btcnode_curlcfg.properties b/proxy_docker/app/config/spender_btcnode_curlcfg.properties deleted file mode 100644 index 0860f6c..0000000 --- a/proxy_docker/app/config/spender_btcnode_curlcfg.properties +++ /dev/null @@ -1 +0,0 @@ -user=rpc_username:rpc_password diff --git a/proxy_docker/app/config/watcher_btcnode_curlcfg.properties b/proxy_docker/app/config/watcher_btcnode_curlcfg.properties deleted file mode 100644 index 0860f6c..0000000 --- a/proxy_docker/app/config/watcher_btcnode_curlcfg.properties +++ /dev/null @@ -1 +0,0 @@ -user=rpc_username:rpc_password diff --git a/proxy_docker/app/script/bitcoin.sh b/proxy_docker/app/script/bitcoin.sh index a32c9c3..5fc0632 100644 --- a/proxy_docker/app/script/bitcoin.sh +++ b/proxy_docker/app/script/bitcoin.sh @@ -1,7 +1,6 @@ #!/bin/sh . ./trace.sh -. ./utils.sh deriveindex() { @@ -10,8 +9,8 @@ deriveindex() local index=${1} trace "[deriveindex] index=${index}" - local pub32=$(get_prop "derivation.pub32") - local path=$(get_prop "derivation.path" | sed -En "s/n/${index}/p") + local pub32=$DERIVATION_PUB32 + local path=$(echo -e $DERIVATION_PATH | sed -En "s/n/${index}/p") # pub32=$(grep "derivation.pub32" config.properties | cut -d'=' -f2) # path=$(grep "derivation.path" config.properties | cut -d'=' -f2 | sed -En "s/n/${index}/p") @@ -43,4 +42,4 @@ send_to_pycoin() trace_rc ${returncode} return ${returncode} -} +} \ No newline at end of file diff --git a/proxy_docker/app/script/computefees.sh b/proxy_docker/app/script/computefees.sh index 1948cef..640e24d 100644 --- a/proxy_docker/app/script/computefees.sh +++ b/proxy_docker/app/script/computefees.sh @@ -7,7 +7,7 @@ compute_fees() { - local pruned=$(get_prop "watchingnode.pruned") + local pruned=${WATCHER_BTC_NODE_PRUNED} if [ "${pruned}" = "true" ]; then trace "[compute_fees] pruned=${pruned}" # We want null instead of 0.00000000 in this case. diff --git a/proxy_docker/app/script/startproxy.sh b/proxy_docker/app/script/startproxy.sh index 8f9cd94..6356eab 100644 --- a/proxy_docker/app/script/startproxy.sh +++ b/proxy_docker/app/script/startproxy.sh @@ -3,13 +3,39 @@ export PROXY_LISTENING_PORT export WATCHER_NODE_RPC_URL=$WATCHER_BTC_NODE_RPC_URL export SPENDER_NODE_RPC_URL=$SPENDER_BTC_NODE_RPC_URL +export WATCHER_NODE_RPC_CFG=$WATCHER_BTC_NODE_RPC_CFG +export SPENDER_NODE_RPC_CFG=$SPENDER_BTC_NODE_RPC_CFG export TRACING export DB_PATH export DB_FILE +trim() { + echo -e $1 | sed -e 's/^[[:space:]]*//' | sed -e 's/[[:space:]]*$//' +} + +createCurlConfig() { + + if [[ ''$1 == '' ]]; then + echo "Missing file name: Check you *_BTC_NODE_RPC_CFG" + return + fi + + if [[ ''$2 == '' ]]; then + echo "Missing content: Check you *_BTC_NODE_RPC_USER" + return + fi + + local user=$( trim $2 ) + echo "user=${user}" > ${1} + +} + if [ ! -e ${DB_FILE} ]; then echo "DB not found, creating..." > /dev/stderr cat watching.sql | sqlite3 $DB_FILE fi +createCurlConfig ${WATCHER_BTC_NODE_RPC_CFG} ${WATCHER_BTC_NODE_RPC_USER} +createCurlConfig ${SPENDER_BTC_NODE_RPC_CFG} ${SPENDER_BTC_NODE_RPC_USER} + nc -vlkp${PROXY_LISTENING_PORT} -e ./requesthandler.sh diff --git a/proxy_docker/env.properties b/proxy_docker/env.properties index da95f88..9a1f8d5 100644 --- a/proxy_docker/env.properties +++ b/proxy_docker/env.properties @@ -1,12 +1,19 @@ TRACING=1 WATCHER_BTC_NODE_RPC_URL=btcnode:18332/wallet/watching01.dat +WATCHER_BTC_NODE_RPC_USER=rpc_username:rpc_password +WATCHER_BTC_NODE_RPC_CFG=/proxy/watcher_btcnode_curlcfg.properties SPENDER_BTC_NODE_RPC_URL=btcnode:18332/wallet/spending01.dat +SPENDER_BTC_NODE_RPC_USER=rpc_username:rpc_password +SPENDER_BTC_NODE_RPC_CFG=/proxy/spender_btcnode_curlcfg.properties PROXY_LISTENING_PORT=8888 # Variable substitutions don't work -HOME=/proxy DB_PATH=/proxy/db DB_FILE=/proxy/db/proxydb # Pycoin container PYCOIN_CONTAINER=pycoinnode:7777 # OTS container OTS_CONTAINER=otsnode:6666 + +DERIVATION_PUB32=upub5GtUcgGed1aGH4HKQ3vMYrsmLXwmHhS1AeX33ZvDgZiyvkGhNTvGd2TA5Lr4v239Fzjj4ZY48t6wTtXUy2yRgapf37QHgt6KWEZ6bgsCLpb +DERIVATION_PATH=0/n +WATCHER_BTC_NODE_PRUNED=false From 9babb26d5f88ac7b878d99e7d8ca77cd7b0192a6 Mon Sep 17 00:00:00 2001 From: kexkey Date: Fri, 12 Oct 2018 13:21:25 -0400 Subject: [PATCH 5/5] Adjusted docs and small tweaks --- doc/INSTALL-MANUAL-STEPS.md | 3 --- doc/INSTALL.md | 9 +-------- proxy_docker/README.md | 26 +++++++------------------- proxy_docker/app/script/startproxy.sh | 4 ++-- proxy_docker/app/script/tests-cb.sh | 2 +- pycoin_docker/script/trace.sh | 4 ++-- 6 files changed, 13 insertions(+), 35 deletions(-) diff --git a/doc/INSTALL-MANUAL-STEPS.md b/doc/INSTALL-MANUAL-STEPS.md index 50f00d2..4a5d3fb 100644 --- a/doc/INSTALL-MANUAL-STEPS.md +++ b/doc/INSTALL-MANUAL-STEPS.md @@ -31,14 +31,11 @@ docker network create --driver=overlay --attachable --opt encrypted cyphernodene git clone https://github.com/SatoshiPortal/cyphernode.git cd cyphernode/ vi proxy_docker/env.properties -vi proxy_docker/app/config/config.properties ``` *Make sure user have same rpcuser and rpcpassword values as in bitcoin node's bitcoin.conf file (see below)* ```shell -vi proxy_docker/app/config/watcher_btcnode_curlcfg.properties -vi proxy_docker/app/config/spender_btcnode_curlcfg.properties vi cron_docker/env.properties vi pycoin_docker/env.properties ``` diff --git a/doc/INSTALL.md b/doc/INSTALL.md index 713fdae..c717abf 100644 --- a/doc/INSTALL.md +++ b/doc/INSTALL.md @@ -49,9 +49,6 @@ debian@dev:~/dev/Cyphernode$ docker network connect cyphernodenet yourappcontain ```shell debian@dev:~/dev/Cyphernode$ vi proxy_docker/env.properties -debian@dev:~/dev/Cyphernode$ vi proxy_docker/app/config/config.properties -debian@dev:~/dev/Cyphernode$ vi proxy_docker/app/config/watcher_btcnode_curlcfg.properties -debian@dev:~/dev/Cyphernode$ vi proxy_docker/app/config/spender_btcnode_curlcfg.properties debian@dev:~/dev/Cyphernode$ vi cron_docker/env.properties debian@dev:~/dev/Cyphernode$ vi pycoin_docker/env.properties ``` @@ -100,11 +97,7 @@ pi@SP-BTC01:~ $ docker swarm join --token SWMTKN-1-2pxouynn9g8si42e8g9ujwy0v9po4 [See how to build Bitcoin Node image](https://github.com/SatoshiPortal/dockers/tree/master/rpi/bitcoin-core) -### Run node or connect already-running node - -```shell -pi@SP-BTC01:~ $ docker run -d --rm --mount type=bind,source="$HOME/.bitcoin",target="/bitcoinuser/.bitcoin" --name btcnode --network cyphernodenet btcnode -``` +### Connect already-running node ```shell pi@SP-BTC01:~ $ docker network connect cyphernodenet btcnode diff --git a/proxy_docker/README.md b/proxy_docker/README.md index 8f16575..fe4d53e 100644 --- a/proxy_docker/README.md +++ b/proxy_docker/README.md @@ -7,7 +7,11 @@ We assume you are the user pi on a Raspberry Pi. ```properties TRACING=1 WATCHER_BTC_NODE_RPC_URL=btcnode:18332/wallet/watching01.dat +WATCHER_BTC_NODE_RPC_USER=rpc_username:rpc_password +WATCHER_BTC_NODE_RPC_CFG=/proxy/watcher_btcnode_curlcfg.properties SPENDER_BTC_NODE_RPC_URL=btcnode:18332/wallet/spending01.dat +SPENDER_BTC_NODE_RPC_USER=rpc_username:rpc_password +SPENDER_BTC_NODE_RPC_CFG=/proxy/spender_btcnode_curlcfg.properties PROXY_LISTENING_PORT=8888 # Variable substitutions don't work DB_PATH=/proxy/db @@ -16,26 +20,10 @@ DB_FILE=/proxy/db/proxydb PYCOIN_CONTAINER=pycoinnode:7777 # OTS container OTS_CONTAINER=otsnode:6666 -``` -## Set your Watching Bitcoin node RPC credentials in `app/config/watcher_btcnode_curlcfg.properties` - -```properties -user=rpc_username:rpc_password -``` - -## Set your Spending Bitcoin node RPC credentials in `app/config/spender_btcnode_curlcfg.properties` - -```properties -user=rpc_username:rpc_password -``` - -## Set your address derivation information in `app/config/derivation.properties` - -```properties -derivation.xpub=upub5GtUcgGed1aGH4HKQ3vMYrsmLXwmHhS1AeX33ZvDgZiyvkGhNTvGd2TA5Lr4v239Fzjj4ZY48t6wTtXUy2yRgapf37QHgt6KWEZ6bgsCLpb -derivation.path=0/n -watchingnode.pruned=false +DERIVATION_PUB32=upub5GtUcgGed1aGH4HKQ3vMYrsmLXwmHhS1AeX33ZvDgZiyvkGhNTvGd2TA5Lr4v239Fzjj4ZY48t6wTtXUy2yRgapf37QHgt6KWEZ6bgsCLpb +DERIVATION_PATH=0/n +WATCHER_BTC_NODE_PRUNED=false ``` ## Building docker image diff --git a/proxy_docker/app/script/startproxy.sh b/proxy_docker/app/script/startproxy.sh index 6356eab..b6e65d0 100644 --- a/proxy_docker/app/script/startproxy.sh +++ b/proxy_docker/app/script/startproxy.sh @@ -27,11 +27,11 @@ createCurlConfig() { local user=$( trim $2 ) echo "user=${user}" > ${1} - + } if [ ! -e ${DB_FILE} ]; then - echo "DB not found, creating..." > /dev/stderr + echo "DB not found, creating..." 1>&2 cat watching.sql | sqlite3 $DB_FILE fi diff --git a/proxy_docker/app/script/tests-cb.sh b/proxy_docker/app/script/tests-cb.sh index 4efe5a2..bccbed8 100644 --- a/proxy_docker/app/script/tests-cb.sh +++ b/proxy_docker/app/script/tests-cb.sh @@ -1,7 +1,7 @@ #!/bin/sh read line -echo ${line} > /dev/stderr +echo ${line} 1>&2 echo -ne "HTTP/1.1 200 OK\r\n" echo -e "Content-Type: application/json\r\nContent-Length: 0\r\n\r\n" diff --git a/pycoin_docker/script/trace.sh b/pycoin_docker/script/trace.sh index 9ff1b50..680f3f2 100644 --- a/pycoin_docker/script/trace.sh +++ b/pycoin_docker/script/trace.sh @@ -3,13 +3,13 @@ trace() { if [ -n "${TRACING}" ]; then - echo "$(date -Is) ${1}" > /dev/stderr + echo "$(date -Is) ${1}" 1>&2 fi } trace_rc() { if [ -n "${TRACING}" ]; then - echo "$(date -Is) Last return code: ${1}" > /dev/stderr + echo "$(date -Is) Last return code: ${1}" 1>&2 fi }