diff --git a/app/modules/ws2p/index.ts b/app/modules/ws2p/index.ts index a54d265f1a8b3368f99b05333d5e8f83b929ecaa..c91451e46a817b5e3576b2d284ae85c2a1b14219 100644 --- a/app/modules/ws2p/index.ts +++ b/app/modules/ws2p/index.ts @@ -16,8 +16,8 @@ export const WS2PDependency = { cliOptions: [ { value: '--ws2p-upnp', desc: 'Use UPnP to open remote port.' }, { value: '--ws2p-noupnp', desc: 'Do not use UPnP to open remote port.' }, - { value: '--ws2p-host <host>', desc: 'Port to listen to.' }, - { value: '--ws2p-port <port>', desc: 'Host to listen to.', parser: (val:string) => parseInt(val) }, + { value: '--ws2p-host <host>', desc: 'Host to listen to.' }, + { value: '--ws2p-port <port>', desc: 'Port to listen to.', parser: (val:string) => parseInt(val) }, { value: '--ws2p-remote-host <address>', desc: 'Availabily host.' }, { value: '--ws2p-remote-port <port>', desc: 'Availabily port.', parser: (val:string) => parseInt(val) }, { value: '--ws2p-remote-path <path>', desc: 'Availabily web path.' }, diff --git a/index.ts b/index.ts index e7e6a32e0194faf11b4035e741684784b0921f66..15903c38a8696907c22b174f13f33c57a3271d6a 100644 --- a/index.ts +++ b/index.ts @@ -500,6 +500,7 @@ function commandLineConf(program:any, conf:any = {}) { if (cli.currency) conf.currency = cli.currency; if (cli.server.port) conf.port = cli.server.port; if (cli.cpu) conf.cpu = Math.max(0.01, Math.min(1.0, cli.cpu)); + if (cli.nbCores) conf.nbCores = Math.max(1, Math.min(ProverConstants.CORES_MAXIMUM_USE_IN_PARALLEL, cli.nbCores)); if (cli.prefix) conf.prefix = Math.max(ProverConstants.MIN_PEER_ID, Math.min(ProverConstants.MAX_PEER_ID, cli.prefix)); if (cli.logs.http) conf.httplogs = true; if (cli.logs.nohttp) conf.httplogs = false; diff --git a/release/arch/linux/build-lin.sh b/release/arch/linux/build-lin.sh index 6abf5c16fa4a80be1b7cf4d0f24143c0c8fbb5d8..585ee00195f9cff1ab89d817584af3e7e4c1bf3f 100644 --- a/release/arch/linux/build-lin.sh +++ b/release/arch/linux/build-lin.sh @@ -167,6 +167,19 @@ tar czf "${BIN}/duniter-desktop-${DUNITER_TAG}-linux-x64.tar.gz" * || exit 1 # Build Debian packages # ----------------------- +# Parameters +# 1: Building directory. +build_extra_desktop() { + cp -r "${ROOT}/release/extra/desktop/"* "${1}" || exit 1 +} + +# Parameters +# 1: Building directory. +build_extra_server() { + mkdir -p "${1}/lib/systemd/system" || exit 1 + cp "${ROOT}/release/extra/systemd/duniter.service" "${1}/lib/systemd/system" || exit 1 +} + # Parameters # 1: either "server" or "desktop". # 2: package name for Debian. @@ -174,9 +187,7 @@ build_deb_pack() { rm -rf "${RELEASES}/duniter-x64" mkdir "${RELEASES}/duniter-x64" || exit 1 cp -r "${ROOT}/release/extra/debian/package/"* "${RELEASES}/duniter-x64" || exit 1 - if [[ "${1}" == "desktop" ]]; then - cp -r "${ROOT}/release/extra/desktop/"* "${RELEASES}/duniter-x64" || exit 1 - fi + build_extra_${1} "${RELEASES}/duniter-x64" mkdir -p "${RELEASES}/duniter-x64/opt/duniter/" || exit 1 chmod 755 "${RELEASES}/duniter-x64/DEBIAN/"post* || exit 1 chmod 755 "${RELEASES}/duniter-x64/DEBIAN/"pre* || exit 1 diff --git a/release/extra/debian/package/DEBIAN/postinst b/release/extra/debian/package/DEBIAN/postinst index dcf677ed0117132e4c5d92fd39f14abb3867d983..ae7ac47e952891759c83eb36105980acc5e22589 100755 --- a/release/extra/debian/package/DEBIAN/postinst +++ b/release/extra/debian/package/DEBIAN/postinst @@ -34,6 +34,10 @@ if [[ -d $DUN_SOURCES/node ]]; then cd $DUN_SOURCES cd node/bin/ ln -s ../lib/node_modules/npm/bin/npm-cli.js ./npm -f + # Add duniter user for service + mkdir -p /var/lib/duniter + adduser --system --quiet --home /var/lib/duniter --no-create-home --disabled-password --group duniter + chown duniter:duniter /var/lib/duniter fi # Else will execute with environment node diff --git a/release/extra/openrc/duniter.confd b/release/extra/openrc/duniter.confd new file mode 100644 index 0000000000000000000000000000000000000000..af0c9a3a8c797e81534463b723d4fb7a9112f790 --- /dev/null +++ b/release/extra/openrc/duniter.confd @@ -0,0 +1,19 @@ +# File containing crypto keys +#DUNITER_KEYS=/etc/duniter/keys.yml + +# Uncomment the following line to start the web GUI +#DUNITER_WEB=yes + +# Parameters for the web GUI +#DUNITER_WEB_HOST=localhost +#DUNITER_WEB_PORT=9220 + +# User and group of running process +#DUNITER_GROUP=duniter +#DUNITER_USER=duniter + +# Directory of duniter files +#DUNITER_HOME=/var/lib/duniter + +# Directory of duniter data +#DUNITER_DATA=duniter_default diff --git a/release/extra/openrc/duniter.initd b/release/extra/openrc/duniter.initd new file mode 100644 index 0000000000000000000000000000000000000000..6ce4c3d19c58e57b0b2cd0f0ddebdbde3a9b748c --- /dev/null +++ b/release/extra/openrc/duniter.initd @@ -0,0 +1,50 @@ +#!/sbin/openrc-run + +: ${DUNITER_GROUP:=duniter} +: ${DUNITER_USER:=duniter} + +: ${DUNITER_HOME:=/var/lib/duniter} +: ${DUNITER_DATA:=duniter_default} + +command="/usr/bin/duniter" +if yesno "${DUNITER_WEB}"; then + command_args="webstart" + if [[ ! -z ${DUNITER_WEB_HOST} ]]; then + command_args="${command_args} --webmhost \"${DUNITER_WEB_HOST}\"" + fi + if [[ ! -z ${DUNITER_WEB_PORT} ]]; then + command_args="${command_args} --webmport \"${DUNITER_WEB_PORT}\"" + fi +else + command_args="start" +fi +if [[ ! -z ${DUNITER_KEYS} ]] && [[ -r ${DUNITER_KEYS} ]]; then + command_args="${command_args} --keyfile \"${DUNITER_KEYS}\"" +fi +command_args="${command_args} --home \"${DUNITER_HOME}\" --mdb \"${DUNITER_DATA}\" ${DUNITER_SSD_OPTIONS}" +start_stop_daemon_args="--user \"${DUNITER_USER}\":\"${DUNITER_GROUP}\"" +description="Duniter node" + +depend() { + need net +} + +status() { + if ${command} status --home "${DUNITER_HOME}" --mdb "${DUNITER_DATA}" | grep -q "is running"; then + einfo "status: started" + return 0 + else + if service_started; then + mark_service_stopped + eerror "status: crashed" + return 32 + else + einfo "status: stopped" + return 3 + fi + fi +} + +stop() { + ${command} stop --home "${DUNITER_HOME}" --mdb "${DUNITER_DATA}" +} diff --git a/release/extra/systemd/duniter.service b/release/extra/systemd/duniter.service new file mode 100644 index 0000000000000000000000000000000000000000..51b819620e3082f915a6529b2e37de487ee5a991 --- /dev/null +++ b/release/extra/systemd/duniter.service @@ -0,0 +1,22 @@ +[Unit] +Description=Duniter node +After=network.target + +[Service] +# Should be set to web in order to start with web GUI +Environment="DUNITER_WEB=" +Environment="DUNITER_HOME=/var/lib/duniter" +Environment="DUNITER_DATA=duniter_default" +# If using a key file, DUNITER_OPTS can be defined like so: +#Environment="DUNITER_OPTS=--keyfile /etc/duniter/keys.yml" +Environment="DUNITER_OPTS=" +Group=duniter +User=duniter +Type=forking +ExecStart=/usr/bin/duniter ${DUNITER_WEB}start --home ${DUNITER_HOME} --mdb ${DUNITER_DATA} $DUNITER_OPTS +ExecReload=/usr/bin/duniter ${DUNITER_WEB}restart --home ${DUNITER_HOME} --mdb ${DUNITER_DATA} $DUNITER_OPTS +ExecStop=/usr/bin/duniter stop --home ${DUNITER_HOME} --mdb ${DUNITER_DATA} +Restart=on-failure + +[Install] +WantedBy=multi-user.target